如何在通话期间通过代码启用 Android 扬声器?

How do I enable the Android speaker during a call, from code?

此问题之前已在此站点上提出并回答过两次,但该代码似乎根本不适用于现代手机。我正在研究 Android 4.2 和 Android 4.3,但似乎都不起作用。

我在通话期间通过媒体播放器播放 MP3,效果很好,但歌曲和通话都是通过语音扬声器发出的。如果我按 "Speaker",它们都会继续通过扬声器播放。 我需要那种效果,但又不用自己按

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

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

有人建议将此作为 S.O 上其他两个问题的解决方案,但根本行不通。它应该,代码很好,但它对音频根本没有任何作用。

想法?

我解决了。我创建了一个线程,在"While (true)"中不断运行以上三行代码。效果很好。

使用此代码:

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

This 为我工作,在你的 InCallService 调用 setAudioRoute 中是这样的:

setAudioRoute(ROUTE_SPEAKER);