最近做项目遇到录音机在录音时,重启或关机手机后,录音文件不能保存到录音文件列表中,通过查找log后,发现录音中重启或关机都会运行到SoundRecorderService.java里的receiveBroadcast()函数,查看源码,找到了bug出现的原因,以下是问题解决的步骤:
在SoundRecorderService.java类中查找到receiveBroadcast()函数,在该函数中可以查找到else if (Intent.ACTION_SHUTDOWN.equals(action) || ACTION_SHUTDOWN_IPO.equals(action)) {这个行为判断语句,在该if语句里添加
if ((STATE_RECORDING == mCurrentState) || (STATE_PAUSE_RECORDING == mCurrentState)) {
stopRecord();
} else if (STATE_PLAYING == mCurrentState) {
stopPlay();
}
if (isCurrentFileWaitToSave()) {
saveRecordAsync();
}
添加以上代码,就可以解决这个bug了。