mt6735 录音过程中来电,来电退出后如何返回暂停录音的状态
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
目前的设计,录音被来电打断后,丢失Audio Focus,直接stopRecord,然后保存录音文件到默认路径.
有些客户需要修改为退出来电后,录音处于暂停状态,用户可选择继续录音,或者停止录音.
[SOLUTION]
public void onAudioFocusChange(int focusChange) {
LogUtils.i(TAG, "<onAudioFocusChange> audio focus changed to " + focusChange);
if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
LogUtils.i(TAG, "<onAudioFocusChange> audio focus changed to AUDIOFOCUS_GAIN");
mGetFocus = true;
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) //将这里对LOSS_TRANSIENT的处理单独拿到下面一个case
{
LogUtils.i(TAG, "<onAudioFocusChange> 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, "<onAudioFocusChange> audio focus loss, pause recording");
mGetFocus = false;
if (mCurrentState == STATE_RECORDING) {
pauseRecordingAsync();
}
}
else if (mCurrentState == STATE_PLAYING) {
stopPlaybackAsync();
}
if (isCurrentFileWaitToSave()) {
saveRecordAsync();
}
}
}
目前的设计,录音被来电打断后,丢失Audio Focus,直接stopRecord,然后保存录音文件到默认路径.
有些客户需要修改为退出来电后,录音处于暂停状态,用户可选择继续录音,或者停止录音.
[SOLUTION]
public void onAudioFocusChange(int focusChange) {
LogUtils.i(TAG, "<onAudioFocusChange> audio focus changed to " + focusChange);
if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
LogUtils.i(TAG, "<onAudioFocusChange> audio focus changed to AUDIOFOCUS_GAIN");
mGetFocus = true;
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) //将这里对LOSS_TRANSIENT的处理单独拿到下面一个case
{
LogUtils.i(TAG, "<onAudioFocusChange> 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, "<onAudioFocusChange> audio focus loss, pause recording");
mGetFocus = false;
if (mCurrentState == STATE_RECORDING) {
pauseRecordingAsync();
}
}
else if (mCurrentState == STATE_PLAYING) {
stopPlaybackAsync();
}
if (isCurrentFileWaitToSave()) {
saveRecordAsync();
}
}
}
666666
