在通话中打开扬声器,在Android 10及以上版本中不工作

在通话中打开扬声器,在Android 10及以上版本中不工作,android,phone-call,android-audiomanager,speakerphone,Android,Phone Call,Android Audiomanager,Speakerphone,权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> (Optional) 当应用程序在前台、后台和从后台删除时尝试。在任何情况下都不起作用 我已经查看了谷歌开发者网站,但没有提到安卓10限制或其

权限

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> (Optional)
当应用程序在前台、后台和从后台删除时尝试。在任何情况下都不起作用


我已经查看了谷歌开发者网站,但没有提到安卓10限制或其他不起作用的东西。如果有人有线索,请提供建议。

您找到解决此问题的方法了吗?我也有同样的行为。
boolean isRunning;

public class PhoneListener extends PhoneStateListener {


    public void onCallStateChanged(int state, String incomingNumber) {
        Log.i(TAG, "CallRecorder PhoneListener::onCallStateChanged state:" + state + " incomingNumber:");

        switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:
                Log.i(TAG, "CALL_STATE_IDLE");
                 new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            if (!isPressedClose) {
                                if (moSharedPreferenceManager.isSpeakerOn()) {
                                    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                                    audioManager.setMode(AudioManager.MODE_NORMAL);
                                    if (audioManager.isSpeakerphoneOn())
                                        audioManager.setSpeakerphoneOn(fase);
                                }
                                isRunning = false;
                                handleRedial();
                            } else {
                                finish();
                            }
                        }
                    }, 3000);

                break;
            case TelephonyManager.CALL_STATE_RINGING:
                Log.i(TAG, " CALL_STATE_RINGING");

                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                moSharedPreferenceManager.setResetCallOrAlert(true);
                Log.i(TAG, "CALL_STATE_OFFHOOK");
                
                if (moSharedPreferenceManager.isSpeakerOn()) {
                    new Thread() {
                        @Override
                        public void run() {
                            try {
                                while (!isRunning) {
                                    isRunning = true;
                                    sleep(1000);
                                    //Activate loudspeaker
                                    AudioManager audioManager = (AudioManager)
                                            getSystemService(Context.AUDIO_SERVICE);
                                    audioManager.setMode(AudioManager.MODE_IN_CALL);
                                    audioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND);

                                    Log.i(TAG, "audioManager.isSpeakerphoneOn() : " + audioManager.isSpeakerphoneOn());

                                    if (!audioManager.isSpeakerphoneOn())
                                        audioManager.setSpeakerphoneOn(true);
                                    break;
                                }
                                Log.i(TAG, "audioManager.isSpeakerphoneOn() running ");
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                }

                break;
        }
    }
}