经过很长一段时间寻找一种只通过耳机播放通知噪音的方法(当插入耳机时),在一个与STREAM_MUSIC
分离的流中,以一种可以中断任何背景音乐并能被完全听到的方式,安卓终于推出了AudioAttributes API。通过使用以下代码,至少在API 21或更高版本中,我能够实现我想要的通知功能(STREAM_MUSIC
是我在低版本中找到的最佳选择):
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
不幸的是,在我的应用程序的设置中,似乎没有任何方法来调整声纳的音量。我目前使用AudioManager
的方式如下,但它只允许对流进行卷调整,STREAM_ALARM
、STREAM_NOTIFICATION
、STREAM_RING
或STREAM_MUSIC
都不适用于用于声纳化的任何路由策略:
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, originalVolume, 0);
有人对如何设置与AudioAttributes
输出相对应的卷有任何建议吗?请记住,音频实际上是在用于实际通知的BroadcastReceiver
中播放的,并且音频设置将在一些设置中指定Activity
。
发布于 2015-06-30 21:15:53
看来我错过了API文档中的一个关键表:https://source.android.com/devices/audio/attributes.html。
STREAM_SYSTEM
似乎相当于我试图使用AudioAttributes
所做的事情。基本上,使用我前面的代码对于API 21和转发来说就足够了,使用STREAM_SYSTEM
可以在21之前完成AudioManager
和API所必需的一切。
https://stackoverflow.com/questions/31144390
复制相似问题