解读Android MediaPlayer 详细使用方法
MediaPlayer具有非常强大的功能,对音视频的播放均提供了支持,为了保证播放期间系统的正常工作,需要设置"android.permission.WAKE_LOCK"权限。 在MediaPlayer中,根据数据源为元数据、音频文件、音频流的不同情况,有着相应的处理过程。基本的过程如下: 1)播放元数据 如果元数据位于Android工程的“res/raw”文件夹下。播放元数据的过程为: MediaPlayer mp=MediaPlayer.create(context, R.raw.sound_file_1); mp.start(); 2)播放音频文件 如果音频文件的路径为PATH_TO_FILE,播放音频文件的过程为: MediaPlayer mp=new MediaPlayer(); mp.setDataSource(PATH_TO_FILE); //设置数据源 mp.prepare(); mp.start(); 3)播放音频流 如果音频文件的URL地址为URL_ADRESS,播放音频流的过程为: MediaPlayer mp=new MediaPlayer(); mp.setDataSource(URL_ADRESS); //设置数据源 mp.prepare(); mp.start(); 下面是Android中的一个实例,介绍了Android的MediaPlayer播放器音频文件的播放、暂停、回复、停止等操作的处理流程。需要注意的是,为了获得更好的用户体验,在暂停和恢复播放时,必须对静音模式和独放模式进行处理。 代码 静音模式和独放模式的处理 public class AudioManagerStub extends Activity { private final int MP3_TO_PLAY=R.raw.testmp3; private MediaPlayer mMediaPlayer; private AudioManager mAudioManager; private static CTSResult mCTSResult; … @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取音频服务 mAudioManager=(AudioManager) getSystemService(Context.AUDIO_SERVICE); mMediaPlayer=MediaPlayer.create (this, MP3_TO_PLAY); //设置音频源 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置流类型 mMediaPlayer.setLooping(false); //设置是否循环播放 mMediaPlayer.start(); //开始播放 } @Override protected void onPause() { super.onPause(); try { for (int i=0; i < AudioSystem.getNumStreamTypes(); i++) { mAudioManager.setStreamMute(i, false); //取消其他音频应用的静音 mAudioManager.setStreamSolo(i, false); //设置为非独放模式 } } catch (Exception e) { mCTSResult.setResult(CTSResult.RESULT_FAIL); finish(); } } @Override protected void onResume() { super.onResume(); try { for (int i=0; i< AudioSystem.getNumStreamTypes(); i++) { mAudioManager.setStreamMute(i, true); //设置其他音频应用静音 mAudioManager.setStreamSolo(i, true); //设置为独放模式 } } catch (Exception e) { mCTSResult.setResult(CTSResult.RESULT_FAIL); finish(); return; } Intent intent=new Intent(); intent.setClass(this, AudioManagerStubHelper.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, 1); } @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mMediaPlayer.stop(); //停止播放 mMediaPlayer.release(); //释放资源 mCTSResult.setResult(CTSResult.RESULT_OK); finish(); } } |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。