我正在尝试在通话时启用扬声器:
final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);
我试图在setSpeakerphoneOn()
听力管理员之后检查,并通过询问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,我已尝试this,android.permission.MODIFY_AUDIO_SETTINGS
已获批准。
答案 0 :(得分:4)
嗨,阅读android开发者文章
https://developer.android.com/reference/android/media/AudioManager.html
清楚地解释
您需要在清单
中设置权限:MODIFY_AUDIO_SETTINGS在清单
中添加此行<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
答案 1 :(得分:1)
我发现setMode()
之前setSpeakerphoneOn()
(当前模式)修复了logcat上的错误:
AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
答案 2 :(得分:0)
1. setSpeakerphoneOn()
仅适用于setMode(AudioManager.MDOE_IN_CALL);
答案 3 :(得分:0)
唯一对我有用的是设置
audioManager.setMode(AudioManager.MODE_RINGTONE | AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
如果没有 AudioManager.MODE_RINGTONE,它就不起作用..