icfans

为什么FM正在录音,有通知铃声,录音会自动停止并保存?

0
阅读(2617)

为什么FM正在录音,有通知铃声,录音会自动停止并保存?


芯片: SC9830, SC9830, SC7731G, SC7731G, SC7720, SC7720, SC8730, SC9838, SC9820, SC9836, SC9838A, SC9832, SC7732, SC7731C
分支: sprdroid5.1_trunk, sprdroid5.1_prime, sprdroid5.0_trunk, sprdroid5.0_3.10_lsk, sprdroid5.1_tshark_15a_phase2, sprdroid5.1_sharkl_15b_mp, sprdroid5.1_sharkl_15c_mp, sprdroid5.1_sharklt8_cmcc_dev,
sprdroid5.1_t8_15d, sprdroid5.1_tshark_15a, sprdroid5.1_tshark_phase2_15b, sprdroid5.1_tshark_15a_pad_dev
关键字: FM 录音 铃声 芯方式
[QUESTION]
为什么FM正在录音,有通知铃声,录音会自动停止并保存?
[ANSWER]
当系统播放通知铃声的时候,会申请AudioFocus资源。申请的audiofocus类型为
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。
而这时FM就会丢失AudioFocus资源,失去audiofocus类型为
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。
此时FM 为了避免Audio播放异常,会释放占用的Audio资源,因此也会停止录音,并自动保存。
详情参考代码:
在packages\apps\FMPlayer\src\com\thunderst\radio\FMPlayService.java中
requestAudioFocus()方法,有如下定义
mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged " + focusChange);
switch (focusChange) {
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:// 收到失去AudioFocus的消息
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
mFmManager.mute();//FM 模块静音
if(SystemProperties.getBoolean("persist.sys.fm.notifyplayer",false)){
// play notification sound pause/resume recorder...
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged togglePauseRecorder ");
togglePauseRecorder(true);
}else{
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged enableRecorder ");
enableRecorder(false);//停止录音
} m
PausedByAudioFocus = true;
routeAudio(RADIO_AUDIO_DEVICE_NONE, false);//释放Audio通路
芯片: SC9830, SC9830, SC7731G, SC7731G, SC7720, SC7720, SC8730, SC9838, SC9820, SC9836, SC9838A, SC9832, SC7732, SC7731C
分支: sprdroid5.1_trunk, sprdroid5.1_prime, sprdroid5.0_trunk, sprdroid5.0_3.10_lsk, sprdroid5.1_tshark_15a_phase2, sprdroid5.1_sharkl_15b_mp, sprdroid5.1_sharkl_15c_mp, sprdroid5.1_sharklt8_cmcc_dev,
sprdroid5.1_t8_15d, sprdroid5.1_tshark_15a, sprdroid5.1_tshark_phase2_15b, sprdroid5.1_tshark_15a_pad_dev
关键字: FM 录音 铃声
[QUESTION]
为什么FM正在录音,有通知铃声,录音会自动停止并保存?
[ANSWER]
当系统播放通知铃声的时候,会申请AudioFocus资源。申请的audiofocus类型为
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。
而这时FM就会丢失AudioFocus资源,失去audiofocus类型为
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。
此时FM 为了避免Audio播放异常,会释放占用的Audio资源,因此也会停止录音,并自动保存。
详情参考代码:
在packages\apps\FMPlayer\src\com\thunderst\radio\FMPlayService.java中
requestAudioFocus()方法,有如下定义
mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged " + focusChange);
switch (focusChange) {
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:// 收到失去AudioFocus的消息
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
mFmManager.mute();//FM 模块静音
if(SystemProperties.getBoolean("persist.sys.fm.notifyplayer",false)){
// play notification sound pause/resume recorder...
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged togglePauseRecorder ");
togglePauseRecorder(true);
}else{
if (DEBUG) Log.d(LOGTAG, "AudioFocusChanged enableRecorder ");
enableRecorder(false);//停止录音
} m
PausedByAudioFocus = true;
routeAudio(RADIO_AUDIO_DEVICE_NONE, false);//释放Audio通路