我正在制作一个应用程序,我必须在内置扬声器的手机摇动中播放每秒生成通知的声音,同时我的应用程序通过汽车的蓝牙连接到(A2DP)。我必须将通知音频路由到内置扬声器,并将所有其余声音(音乐,电话,警报等)路由到蓝牙扬声器。这可能吗?
我已经研究了堆栈上发布的所有相关问题,但似乎没有人回答它们。以下是我通过音频管理器类尝试过的代码片段。
我尝试使用内置方法
路由音频流 AudioManager audioManager = (AudioManager) getContext().getSystemService(AUDIO_SERVICE);
audioManager.setMode(AudioManager.ROUTE_EARPIECE);
audioManager.setSpeakerphoneOn(false);
当时从蓝牙扬声器切断流,但是在流后面播放的任何音乐再次被路由到BT扬声器,然后没有通知声音。我已经尝试了所有的音频管理器路由和模式,但似乎没有工作。 通知声音是一个mp3,路径是通过解析URI设置的,这就是我如何构建我的通知。
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.newlogo)
.setLargeIcon(largeIcon)
.setSound(uri)
.setContentTitle(notificationHeading)
.setContentText(notificationBody)
.setPriority(Notification.PRIORITY_HIGH).setVibrate(v);
notificationManager.notify(1,mBuilder.build());
所以,如果有可能这件事有可能我更愿意接受它,任何图书馆甚至付费的,如果解决这个问题,请分享,我也不能root手机这个应用程序将发布在玩店内。
答案 0 :(得分:0)
通过AudioTrack.java类播放演讲者通知的声音,并使用流AUDIO_STREAM_TTS(缩写为'通过演讲者'传输)或AUDIO_STREAM_ENFORCED_AUDIBLE。
AUDIO_STREAM_ENFORCED_AUDIBLE = 7, /* Sounds that cannot be muted by user
* and must be routed to speaker
*/
AUDIO_STREAM_TTS = 9, /* Transmitted Through Speaker.
* Plays over speaker only, silent on other devices.
*/