Android MediaPlayer简介
MediaPlayer是Android系统提供的一个用于播放音频和视频的类,它是Android SDK中的一部分,主要用于在Android应用中播放本地和网络媒体文件,MediaPlayer提供了丰富的功能,如音量控制、播放/暂停、停止、快进/快退等,同时支持多种音频和视频格式,使用MediaPlayer可以方便地实现音频和视频的播放功能。
创建MediaPlayer对象
1、创建空的MediaPlayer对象:
MediaPlayer mediaPlayer = new MediaPlayer();
2、通过资源ID创建MediaPlayer对象:
int resId = R.raw.example; // 假设example.mp3是音频文件资源 MediaPlayer mediaPlayer = MediaPlayer.create(context, resId);
3、通过Uri创建MediaPlayer对象:
Uri uri = Uri.parse("http://example.com/example.mp3"); // 假设example.mp3是网络音频文件 MediaPlayer mediaPlayer = MediaPlayer.create(context, uri);
设置监听器
为了在播放过程中获取信息并处理事件,我们需要为MediaPlayer设置监听器,常用的监听器有以下几种:
1、OnPreparedListener:当MediaPlayer准备好播放时触发,通常在这里开始加载数据。
2、OnCompletionListener:当MediaPlayer播放完成时触发。
3、OnErrorListener:当发生错误时触发,例如无法找到指定的媒体文件。
4、OnBufferingUpdateListener:当缓冲状态更新时触发,例如正在加载数据。
5、OnSeekCompleteListener:当用户改变了播放位置时触发。
6、OnInfoListener:当媒体信息发生变化时触发,例如播放进度、音量等。
7、OnVideoSizeChangedListener:当视频尺寸发生变化时触发。
8、OnAudioFocusChangeListener:当焦点发生变化时触发,例如从其他应用或服务那里抢占焦点。
播放和暂停
1、开始播放:
mediaPlayer.start();
2、暂停播放:
mediaPlayer.pause();
控制音量和进度条
1、调整音量:
mediaPlayer.setVolume(volume, volume); // volume的范围是0到1之间,0表示静音,1表示最大音量
2、设置进度条:
SeekBar seekBar = findViewById(R.id.seek_bar); // 假设布局文件中有一个SeekBar控件,id为seek_bar seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { mediaPlayer.seekTo(progress); // 将进度设置为SeekBar的位置,从而改变播放位置 } } @Override public void onStartTrackingTouch(SeekBar seekBar) {} // 该方法在触摸开始时调用,但在此我们不需要处理任何事件,所以留空即可。 @Override public void onStopTrackingTouch(SeekBar seekBar) {} // 该方法在触摸结束时调用,但在此我们不需要处理任何事件,所以留空即可。 });
释放资源
在不再需要MediaPlayer时,需要释放其占用的资源,以避免内存泄漏,可以通过以下方式释放资源:
1、将MediaPlayer设置为null:
mediaPlayer = null; // 将引用设置为null,使垃圾回收器可以回收其内存空间,注意不要在Activity的onDestroy()方法中调用此方法,因为此时Activity已经被销毁,可能会导致异常,正确的做法是在Activity不再需要MediaPlayer时立即将其设置为null。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/317611.html