【发布时间】:2013-04-13 23:15:53
【问题描述】:
我正在尝试确定如何在设备响铃时将非常短的音频流(通知)路由到已与设备配对的蓝牙耳机。
当我任何时候播放任何音频时,它都会被路由到蓝牙设备,没问题。 但是如果我在接收到 android.intent.action.PHONE_STATE 时尝试开始播放音频,在 RINGING 状态下,音频不会按预期路由。
我可以看到 AudioManager 的 setBluetoothA2dpOn 方法已被弃用,但我实际上尝试过但似乎没有效果。
我试过MediaRouter对象,但可以看到MediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO)在设备响铃时指向蓝牙设备的RouteInfo,AudioManager.isBluetoothA2dpOn为true。
那么,谁能告诉我为什么在铃声响起的时候音频路由是这样的?在这种情况下,有什么方法可以强制将音频路由到蓝牙设备?
[更新] 我今天再次尝试,我发现了一些可能是问题的原因。 我创建了一个 BroadcaseReceiver 来检测 android.intent.action.PHONE_STATE 的变化。如果收到意图并且状态当前正在响起,请检查 AudioManager 的模式,您会发现它是 MODE_NORMAL。但几秒钟后手机将开始真正响铃,并且模式将更改为 MODE_RINGTONE。尝试使用 setMode(AudioManager.MODE_NORMAL) 方法手动设置模式是无用的,即使将其设置为 MODE_NORMAL,状态仍保持 MODE_RINGTONE。
现在,我认为问题的原因是在 MODE_RINGTONE 模式下,所有流都被定向到手机扬声器,Android 系统没有提供改变模式的方法。
【问题讨论】:
标签: android