Android中如果MediaServer访问SD卡上的音频文件,卸载SD卡的时候,就会kill掉MediaServer。因为卸载SD卡上必要条件就是没有进程访问SD卡上的资源文件。Kill掉MediaServer的进程后,MediaServer会重新启动。

下面这段代码是android中Music中的处理代码:

        MediaPlayer.OnErrorListener errorListener = new MediaPlayer.OnErrorListener() {            public boolean onError(MediaPlayer mp, int what, int extra) {                switch (what) {                case MediaPlayer.MEDIA_ERROR_SERVER_DIED:                    mIsInitialized = false;                    mCurrentMediaPlayer.release();                    mCurrentMediaPlayer = new CompatMediaPlayer();                    mCurrentMediaPlayer.setWakeMode(MediaPlaybackService.this,PowerManager.PARTIAL_WAKE_LOCK);
                    mHandler.sendMessageDelayed(mHandler.obtainMessage(SERVER_DIED), 2000);                    return true;                default:                    Log.d("MultiPlayer", "Error: " + what + "," + extra);                    break;                }                return false;           }        };


简单来看,就是遇到MediaServer died这种情况,就release掉原来的MediaPlayer,然后重新创建一个MediaPlayer(会在MediaServer重新启动后关联起来)。然后可以根据原来的状态做相应的动作。

更多相关文章

  1. Android(安卓)常用git命令
  2. Android(安卓)纯代码化编码2_基本控件
  3. AIDL进程间传递复杂数据类型—AIDL传递android.os.Parcelable接
  4. Compile gdbserver for Android(gdb-7.1)
  5. 2018-7月Android试题整理
  6. Android(安卓)边框圆角
  7. 如何成为Android高手
  8. android获取图片大小及缩略图
  9. android PhoneGap源码详解

随机推荐

  1. 如何首次配置postgresql ?
  2. 请问mysql中有没有类似math.max(1,2)这种
  3. RedHat6.0下源码安装MySQL5.5.27
  4. PB怎么将动态的sql语句以及数组。传给dat
  5. CentOS 6.7 x64 MySQL 5.7.9 编译安装
  6. mysql 中show 命令用法详细介绍 mysql过
  7. 仅在SQL Server数据库中显示包含3个单词
  8. Jmeter—8 连接microsoft sql server数
  9. 在Linux环境下,将Solr部署到tomcat7中,导入
  10. 安卓+servlet+MySql 查询+插入(汉字乱