在播放音频中SoundPool是个很好用的类,但是SoundPool只能播放音频,且通常只用来播放较短的音频,这就需要另外的类来实现视频和长音频的播放,那就是MediaPlay
实现MediaPlay的基本步骤是
- 创建MediaPlay对象
- 调用setDataSource对象这是音频文件路径
- 调用prepare加载音频
- 调用start开始播放
- 调用pause暂停
- 调用stop停止播放
而MediaPlay也有其他方法
- getCurrentPosition,获得当前播放位置
- getDuration,获得播放时长
- isPlay,判断是否处于播放状态
- release,释放资源
- reset,回到最初的状态
- seekTo,设置播放位置
- setVolume,设置音量
private MediaPlayer mediaPlayer=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mediaPlayer=new MediaPlayer();if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);}else{initMediaPlayer();}Button btPlayMp3= (Button) findViewById(R.id.btPlayMp3);btPlayMp3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(!mediaPlayer.isPlaying()){mediaPlayer.start();}}});Button btPauseMp3= (Button) findViewById(R.id.btPauseMp3);btPauseMp3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(mediaPlayer.isPlaying()){mediaPlayer.pause();}}});Button btStopMp3= (Button) findViewById(R.id.btStopMp3);btStopMp3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(mediaPlayer.isPlaying()){mediaPlayer.stop();try {mediaPlayer.prepare();} catch (IOException e) {e.printStackTrace();}}}});}private void initMediaPlayer(){try {File file=new File(Environment.getExternalStorageDirectory()+"/music","honor.mp3");mediaPlayer.setDataSource(file.getPath());mediaPlayer.prepare();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {if(requestCode==1){if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){initMediaPlayer();}else{Toast.makeText(this,"未获得SD卡访问权限",Toast.LENGTH_LONG).show();finish();}}}@Overrideprotected void onDestroy() {if(mediaPlayer!=null){mediaPlayer.stop();mediaPlayer.release();mediaPlayer=null;}super.onDestroy();}
粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓