[英]Android 5.0+ AudioManager setMode not working
i am working on AudioManager which is a Android SystemService. 我正在使用AudioManager,这是一个Android SystemService。 with Android System 5.0+ , i encounter a problem which AudioManager the setMode method is not working . 使用Android系统5.0+,我遇到一个问题,哪个AudioManager的setMode方法不起作用。
i through a test , Android M, Lollipop.. 5.0+ version , AudioManager setMode is not working . 我通过测试,Android M,Lollipop .. 5.0+版本,AudioManager setMode无效。 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);
}
}
}
but Android 3.0+,4.0+ is ok ,only 5.0+ . 但Android 3.0 +,4.0 +还可以,只有5.0+。 so ,i don`t know where happen mistakes. 所以,我不知道错误发生在哪里。
With audio mode set to : 将音频模式设置为:
setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);
while my audio stream is set to STREAM_MUSIC I can easily route audio to earpiece. 当我的音频流设置为STREAM_MUSIC时,我可以轻松地将音频路由到耳机。 I have tested it myself in AOSP Lollipop code. 我已经在AOSP Lollipop代码中自己测试了它。
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. 将您的流设置为STREAM_MUSIC或STREAM_VOICE_CALL,代码也应该适合您。
In android Lollipop setAudioMode(AudioManager.MODE_IN_CALL)
is restricted. 在android Lollipop中, setAudioMode(AudioManager.MODE_IN_CALL)
受到限制。 It can be used only by system application with MODIFY_PHONE_STATE
permission. 它只能由具有MODIFY_PHONE_STATE
权限的系统应用程序使用。 However you can use MODE_IN_COMMUNICATION
and MODE_NORMAL
in normal applications. 但是,您可以在正常应用程序中使用MODE_IN_COMMUNICATION
和MODE_NORMAL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.