分享

深入Android MediaPlayer的使用方法详解

 落雨不悔 2019-04-23

MediaPlayer使用技巧

  在使用MediaPlayer的使用过程中,有个小技巧需要说明一下:

  1、在使用start()播放流媒体之前,需要装载流媒体资源。这里最好使用prepareAsync()用异步的方式装载流媒体资源。因为流媒体资源的装载是会消耗系统资源的,在一些硬件不理想的设备上,如果使用prepare()同步的方式装载资源,可能会造成UI界面的卡顿,这是非常影响用于体验的。因为推荐使用异步装载的方式,为了避免还没有装载完成就调用start()而报错的问题,需要绑定MediaPlayer.setOnPreparedListener()事件,它将在异步装载完成之后回调。异步装载还有一个好处就是避免装载超时引发ANR((Application Not Responding)错误。


  1. 01.1 mediaPlayer = new MediaPlayer();
  2. 02.2 mediaPlayer.setDataSource(path);
  3. 03.3 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  4. 04.4
  5. 05.5 // 通过异步的方式装载媒体资源
  6. 06.6 mediaPlayer.prepareAsync();
  7. 07.7 mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
  8. 08.8 @Override
  9. 09.9 public void onPrepared(MediaPlayer mp) {
  10. 10.10 // 装载完毕回调
  11. 11.11 mediaPlayer.start();
  12. 12.12 }
  13. 13.13 });

2、使用完MediaPlayer需要回收资源。MediaPlayer是很消耗系统资源的,所以在使用完MediaPlayer,不要等待系统自动回收,最好是主动回收资源。

  1. 1.1 if (mediaPlayer != null && mediaPlayer.isPlaying()) {
  2. 2.2 mediaPlayer.stop();
  3. 3.3 mediaPlayer.release();
  4. 4.4 mediaPlayer = null;
  5. 5.5 }
3、使用MediaPlayer最好使用一个Service来使用,并且在Service的onDestory()方法中回收MediaPlayer资源,实际上,就算是直接使用Activity承载MediaPlayer,也最好在销毁的时候判断一下MediaPlayer是否被回收,如果未被回收,回收其资源,因为底层调用的native方法,如果不销毁还是会在底层继续播放,而承载的组件已经被销毁了,这个时候就无法获取到这个MediaPlayer进而控制它。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多