Android 5.0+ AudioManager setMode 不工作
Android 5.0+ AudioManager setMode not working
我正在研究 AudioManager,它是一个 Android 系统服务。
使用 Android System 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);
}
}
}
但是Android3.0+,4.0+还可以,只有5.0+。
所以,我不知道哪里会发生错误。
在 android Lollipop setAudioMode(AudioManager.MODE_IN_CALL)
中受到限制。它只能由具有 MODIFY_PHONE_STATE
权限的系统应用程序使用。但是,您可以在正常应用程序中使用 MODE_IN_COMMUNICATION
和 MODE_NORMAL
。
音频模式设置为:
setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);
当我的音频流设置为 STREAM_MUSIC 时,我可以轻松地将音频路由到听筒。我自己在 AOSP Lollipop 代码中测试过。
在这个问题中,您从未提及您的流类型。请将您的流设置为 STREAM_MUSIC 或 STREAM_VOICE_CALL,代码也应该适用于您。
我正在研究 AudioManager,它是一个 Android 系统服务。 使用 Android System 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);
}
}
}
但是Android3.0+,4.0+还可以,只有5.0+。 所以,我不知道哪里会发生错误。
在 android Lollipop setAudioMode(AudioManager.MODE_IN_CALL)
中受到限制。它只能由具有 MODIFY_PHONE_STATE
权限的系统应用程序使用。但是,您可以在正常应用程序中使用 MODE_IN_COMMUNICATION
和 MODE_NORMAL
。
音频模式设置为:
setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);
当我的音频流设置为 STREAM_MUSIC 时,我可以轻松地将音频路由到听筒。我自己在 AOSP Lollipop 代码中测试过。
在这个问题中,您从未提及您的流类型。请将您的流设置为 STREAM_MUSIC 或 STREAM_VOICE_CALL,代码也应该适用于您。