7

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

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被授予。

4

4 回答 4

11

嗨,阅读 android 开发者文章

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

解释清楚

您需要在清单中设置权限:MODIFY_AUDIO_SETTINGS

在清单中添加这一行

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
于 2017-04-05T06:56:06.693 回答
2

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

AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
于 2017-07-25T13:18:34.967 回答
2

1.setSpeakerphoneOn()只在工作setMode(AudioManager.MDOE_IN_CALL);

于 2017-11-29T03:37:46.910 回答
0

唯一对我有用的是设置

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

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

感谢这篇文章

于 2021-03-10T15:24:36.513 回答