Android 5.0+ AudioManager setMode不起作用 [英] Android 5.0+ AudioManager setMode not working
问题描述
我正在使用AudioManager(这是一个Android SystemService).在Android System 5.0及更高版本中,我遇到了一个AudioManager setMode方法不起作用的问题.
i am working on AudioManager which is a Android SystemService. with Android System 5.0+ , i encounter a problem which AudioManager the setMode method is not working .
i通过测试,Android M,棒棒糖.. 5.0或更高版本,AudioManager setMode无法正常工作.例子:
i through a test , Android M, Lollipop.. 5.0+ version , AudioManager setMode is not working . example :
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+.所以,我不知道哪里发生错误.
but Android 3.0+,4.0+ is ok ,only 5.0+ . so ,i don`t know where happen mistakes.
推荐答案
将音频模式设置为:
setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);
当我的音频流设置为STREAM_MUSIC时,我可以轻松地将音频路由到听筒.我已经在AOSP Lollipop代码中对它进行了测试.
while my audio stream is set to STREAM_MUSIC I can easily route audio to earpiece. I have tested it myself in AOSP Lollipop code.
这里是您从未提及的有关流类型的问题.一定要将流设置为STREAM_MUSIC或STREAM_VOICE_CALL,并且代码也应该对您有用.
Here in the question you have never mentioned about your stream type. Do set your stream to STREAM_MUSIC or STREAM_VOICE_CALL and the code should work for you too.
这篇关于Android 5.0+ AudioManager setMode不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!