卸载SD卡对MediaServer的处理
16lz
2021-01-26
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重新启动后关联起来)。然后可以根据原来的状态做相应的动作。
更多相关文章
- Android(安卓)常用git命令
- Android(安卓)纯代码化编码2_基本控件
- AIDL进程间传递复杂数据类型—AIDL传递android.os.Parcelable接
- Compile gdbserver for Android(gdb-7.1)
- 2018-7月Android试题整理
- Android(安卓)边框圆角
- 如何成为Android高手
- android获取图片大小及缩略图
- android PhoneGap源码详解