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录制和保存音频

Android native音频:录制播放的实现以及低延迟音频方案

Android native音频:录制播放的实现以及低延迟音频方案

如何使用 Android 1.5 录制音频?