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

如何在通话期间从代码启用Android扬声器?,android,volume,phone-call,speaker,Android,Volume,Phone Call,Speaker,这个问题以前在这个网站上被问过两次,也被回答过两次,但这个代码在现代手机上似乎根本不起作用。我正在开发安卓4.2和安卓4.3,这两个版本似乎都不起作用 在通话过程中,我通过媒体播放器播放MP3,效果很好,但歌曲和通话都是通过语音扬声器播放的。如果我按“扬声器”,它们都会继续通过扬声器播放我需要那种效果,但不必自己按 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

这个问题以前在这个网站上被问过两次,也被回答过两次,但这个代码在现代手机上似乎根本不起作用。我正在开发安卓4.2和安卓4.3,这两个版本似乎都不起作用

在通话过程中,我通过媒体播放器播放MP3,效果很好,但歌曲和通话都是通过语音扬声器播放的。如果我按“扬声器”,它们都会继续通过扬声器播放我需要那种效果,但不必自己按

    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"/>
AudioManager AudioManager=(AudioManager)getSystemService(Context.AUDIO\u SERVICE);
audioManager.setMode(audioManager.MODE_在_调用中);
audioManager.Setspeakerphone(真);
这被认为是解决S.O的其他两个问题的一个办法,但它根本不起作用。应该是这样的,代码很好,但它根本不影响音频


想法?

我解决了。我创建了一个线程,它在“While(true)”中不断运行上述三行代码。非常好。

使用以下代码:

    AudioManager audioManager = (AudioManager) yourActivity.getSystemService(Context.AUDIO_SERVICE);
                    audioManager.setMode(AudioManager.MODE_IN_CALL);
                    audioManager.setSpeakerphoneOn(true);
在您的InCallService呼叫集AudioRoute中为我工作,如下所示:

setAudioRoute(ROUTE_SPEAKER);

您是否查看了开发者网站上的这句话“您只能将音频数据播放到标准输出设备。目前,这是移动设备扬声器或蓝牙耳机。您不能在通话过程中播放对话音频中的声音文件。”----您能播放声音文件吗,如果你在打电话,通过手机扬声器或耳机?是的,我在上面说过,它绝对可以工作。令人尴尬的是,在我发布这个问题一小时后,我找到了一个解决方案。我在“while(true)”中创建了一个单独的线程,该线程重复运行上述代码。那样的话,扬声器就开着,音乐也随着通话一起播放。等等,真的吗?