|
发表于 2018-8-15
|
|阅读模式
[DESCRIPTION]
目前的设计,录音被来电打断后,丢失audio Focus,直接stopRecord,然后保存录音文件到默认路径.
有些客户需要修改为退出来电后,录音处于暂停状态,用户可选择继续录音,或者停止录音.
[SOLUTION]
public void onAudioFocusChange(int focusChange) {
LogUtils.i(TAG, " audio focus changed to " + focusChange);
if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
LogUtils.i(TAG, " audio focus changed to AUDIOFOCUS_GAIN");
mGetFocus = true;
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) //将这里对LOSS_TRANSIENT的处理单独拿到下面一个case
{
LogUtils.i(TAG, " audio focus loss, stop recording");
mGetFocus = false;
if (MCUrrentState == STATE_RECORDING || mcurrentState == STATE_PAUSE_RECORDING) {
stopRecordingAsync();
}
else if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) //在这里添加一个else if判断,如果是LOSS_TRANSIENT的话,就进入pause的状态
{
LogUtils.i(TAG, " audio focus loss, pause recording");
mGetFocus = false;
if (mCurrentState == STATE_RECORDING) {
pauseRecordingAsync();
}
}
else if (mCurrentState == STATE_PLAYING) {
stopPlaybackAsync();
}
if (isCurrentFileWaitToSave()) {
saveRecordAsync();
}
}
}
|
|