Audiomanager 扬声器不工作

Audiomanager Speaker not working

我正在通话时尝试启用扬声器:

final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);

我试图在 setSpeakerphoneOn() audiomanager 之后检查,并通过询问 isSpeakerphoneOn()

得知扬声器仍然没有打开
audioManager.isSpeakerphoneOn();

在我的日志中我可以看到一些我无法理解的错误:

E/AudioManager: Don't setBluetoothScoOn-PackageName: com.myapp.app  on = false
E/AudioManager: Don't setSpeakerphoneOn-PackageName: com.myapp.app  on = true

我在论坛中找不到关于此错误的任何信息。

无法在设备上运行:中兴 Z981、华为 p9,我已经尝试过 ,并且 android.permission.MODIFY_AUDIO_SETTINGS 被授予。

嗨,阅读 android 开发者文章

https://developer.android.com/reference/android/media/AudioManager.html

解释清楚

您需要在清单

中设置权限:MODIFY_AUDIO_SETTINGS

在清单中添加这一行

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

我发现setSpeakerphoneOn()之前的setMode()(当前模式)修复了logcat上的错误:

AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

1.setSpeakerphoneOn() 仅在 setMode(AudioManager.MDOE_IN_CALL);

上工作

唯一对我有用的是设置

audioManager.setMode(AudioManager.MODE_RINGTONE | AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

没有 AudioManager.MODE_RINGTONE 它不起作用..

感谢this post