Android 系统(170)----收到短信,FM外放自动切回耳机

收到短信,FM外放自动切回耳机

测试步骤:

 [步骤]
1.播放FM,声音选择扬声器播放
2.收到notification
[结果]
FM扬声器播放被关闭,声音转到耳机播放
[期望]
扬声器不应被关闭
 

问题分析:

 FM通过设置forceUse到SPEAKER,收到notification后系统会call setBluetoothScoOn(false)保证提示音不要从蓝牙耳机播出。
setBluetoothScoOn(false)会重设forceUse(FORCE_NO_BT_A2DP)导致提示音结束后APS选择耳机作为FM输出设备。
修改:
在当前FOR_MEDIA场景forceUse为SPEAKER时挡掉setBluetoothScoOn(false)。
 
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 40ab78f..86dc43c 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -3012,6 +3012,11 @@ public class AudioService extends IAudioService.Stub
.append(") from u/pid:").append(Binder.getCallingUid()).append("/")
.append(Binder.getCallingPid()).toString();

+ if(!on && AudioSystem.getForceUse(AudioSystem.FOR_MEDIA) == AudioSystem.FORCE_SPEAKER){
+ Log.d(TAG,"no need to change forceUse to FORCE_NO_BT_A2DP cause forceUse is SPEAKER");
+ return;
+ }
+
synchronized (mBluetoothA2dpEnabledLock) {
mBluetoothA2dpEnabled = on;
sendMsg(mAudioHandler, MSG_SET_FORCE_BT_A2DP_USE, SENDMSG_QUEUE,

猜你喜欢

转载自blog.csdn.net/zhangbijun1230/article/details/80985194