我正在开发 AudioManager,它是一个 Android SystemService。
在 Android 系统 5.0+ 中,我遇到了 AudioManager 的 setMode 方法不起作用的问题。
我通过测试,
Android M、Lollipop.. 5.0+ 版本,AudioManager setMode 不起作用。
例子 :
public void initAudioImageIcon(boolean initLoad) {
boolean isAudioHeaderMode = IMSharedPreferences.getBooleanExtra(this, IMSPConstant.SP_NAME_MESSAGE,
IMSPConstant.SP_KEY_AUDIO_HEADER_MODE);
if (isAudioHeaderMode) {
mAudioHanderMode.setVisibility(View.VISIBLE);
// audioManager.setMode(AudioManager.MODE_IN_CALL) , but android system 5.0+ no any change, getMode() == AudioManager.MODE_NORMAL
setAudioMode(AudioManager.MODE_IN_CALL);
audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
if (!initLoad) {
showAudioModePrompt(this.getText(R.string.im_audio_in_call), 1000);
}
} else {
mAudioHanderMode.setVisibility(View.GONE);
setAudioMode(AudioManager.MODE_NORMAL);
if (!initLoad) {
showAudioModePrompt(this.getText(R.string.im_audio_in_speeker), 1000);
}
}
}
但Android 3.0+、4.0+还可以,只有5.0+。
所以,我不知道哪里发生了错误。
将音频模式设置为:
setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);
当我的音频流设置为 STREAM_MUSIC 时,我可以轻松地将音频路由到耳机。我自己在 AOSP Lollipop 代码中测试过。
在问题中,您从未提到过您的流类型。请将您的流设置为 STREAM_MUSIC 或 STREAM_VOICE_CALL,该代码也应该适合您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)