Android 5 和音频路由
Posted
技术标签:
【中文标题】Android 5 和音频路由【英文标题】:Android 5 and audio routing 【发布时间】:2015-04-16 09:59:38 【问题描述】:我有一个应用程序可以在连接耳机时通过扬声器播放音频。为了实现这一点,我这样做:
AudioManager am = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
am.setSpeakerphoneOn(true);
在 android 5 之前它运行良好。有人知道如何让它与棒棒糖一起使用吗?
【问题讨论】:
你试过使用 MODE_NORMAL 吗?因为文档说“特别是,MODE_IN_CALL 模式只能由电话应用程序在拨打电话时使用,因为它会导致来自无线电层的信号馈送到平台混合器。”见developer.android.com/reference/android/media/… 是的,我试过了。但是对于 MODE_NORMAL 和 MODE_IN_CALL,音频会进入耳机。 您在播放MUSIC
流吗?如果是这样,请尝试使用setForceUse
而不是as described here。
是的,我使用 MUSIC 流,我也尝试过 (setForceUse),不幸的是它不起作用。音频仍路由到耳机。
【参考方案1】:
您不能在 android lollipop 的应用程序中使用 AudioManager.MODE_IN_CALL。 使用代码:
AudioManager am = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
am.setSpeakerphoneOn(true);
即使耳机已连接,这也会将您的音频正常路由到扬声器。 Github repo 了解更多信息:https://github.com/sauravpradhan/Basic-Audio-Routing
【讨论】:
以上是关于Android 5 和音频路由的主要内容,如果未能解决你的问题,请参考以下文章
Android 9 Audio系统笔记:音频路由实现——从AudioTrack到audiohal
Android:如何配置“tinymix”以使用“tinycap”录制系统音频
Android native音频:录制播放的实现以及低延迟音频方案