1.activity_main.xml 布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sh.playaudiotest.MainActivity"> <Button android:id="@+id/play" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Play"/> <Button android:id="@+id/pause" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Pause"/> <Button android:id="@+id/stop" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Stop"/> </LinearLayout>
2.MainActivity.java 主文件
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private MediaPlayer mediaPlayer =new MediaPlayer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button play =(Button)findViewById(R.id.play); Button pause =(Button)findViewById(R.id.pause); Button stop =(Button)findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission. WRITE_EXTERNAL_STORAGE )!= PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE},1); //动态申请 WRITE_EXTERNAL_STORAGE权限 }else { initMediaPlay(); //初始华 mediaplay } } private void initMediaPlay(){ try { // getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard(/storage/sdcard0) File file =new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "ringtone1.mp3");//创建一个文件来指定音频 的路径 // mediaPlayer.setDataSource(file.getPath()); //指定音频的路径 mediaPlayer.setDataSource("/storage/sdcard1/ringtone1.mp3"); mediaPlayer.prepare(); //让 mediaPlayer进入准备状态 } catch (Exception e){ e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { // super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if (grantResults.length >1 && grantResults[0]==PackageManager. PERMISSION_GRANTED) { initMediaPlay(); }else{ Toast.makeText(this, "拒绝权限将无法使用应用程序", Toast.LENGTH_SHORT).show(); finish();//将程序直接关掉 } break; default: } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.play: if (!mediaPlayer.isPlaying()){ mediaPlayer.start(); } break; case R.id.pause: if (mediaPlayer.isPlaying()){ mediaPlayer.pause(); } break; case R.id.stop: if (mediaPlayer.isPlaying()){ mediaPlayer.reset(); initMediaPlay(); } break; } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer!=null){ mediaPlayer.stop(); mediaPlayer.release(); } } }