Android11, 模拟拨打电话时,打开扬声器代码无效

打开扬声器的代码如下。
在安卓8,9,10,效果很好,都能成功打开扬声器。不过安卓11测试的时候 无效,调试发现也没有出错,就是没有效果。各位帮我解决一下。
我测试的手机都是三星手机。

AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);

if (!mSpeakerOn) {
    //audioManager.setMode(AudioManager.MODE_IN_CALL);
    audioManager.setSpeakerphoneOn(true);
} else {
    //audioManager.setMode(AudioManager.MODE_NORMAL);
    audioManager.setSpeakerphoneOn(false);
}
updateSpeakerUI();

参考这个试试


public void setSpeakerphoneOn(final boolean enable) {
        try {
            Class audioSystemClass = Class.forName("android.media.AudioSystem");
            Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
            setForceUse.invoke(null, 1, 1);
        }catch (Exception err){
            err.printStackTrace();
        }


        if (enable != audioManager.isSpeakerphoneOn())  {
            Log.d(TAG, "setSpeakerphoneOn(): " + enable);
            audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
            audioManager.setSpeakerphoneOn(enable);
        }
    }