我正在开发一个应用程序,在这个应用程序中我必须播放通过内置扬声器摇动手机时每秒生成通知的声音,同时我的应用程序通过(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手机这个应用程序将在游戏商店发布 .
1 回答
通过AudioTrack.java类播放扬声器通知的声音,并使用流AUDIO_STREAM_TTS(缩写为“通过扬声器传输”)或AUDIO_STREAM_ENFORCED_AUDIBLE .
https://developer.android.com/reference/android/media/AudioTrack.html#AudioTrack(int,%20int,%20int,%20int,%20int,%20int)