【问题标题】:How do I enable the Android speaker during a call, from code?如何在通话期间通过代码启用 Android 扬声器?
【发布时间】:2016-02-21 01:55:29
【问题描述】:

这个问题已经在这个网站上被问过两次了,但是这个代码似乎根本不能在现代手机上运行。我正在开发 Android 4.2 和 Android 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"/>

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

想法?

【问题讨论】:

  • 您是否在开发者网站上查看过此引用“您只能将音频数据播放到标准输出设备。目前,即移动设备扬声器或蓝牙耳机。您无法播放声音文件通话期间的对话音频。” ----developer.android.com/guide/topics/media/mediaplayer.html
  • 通话中能否通过手机扬声器或耳机播放声音文件?
  • 是的,我在上面说过,它工作得很好。令人尴尬的是,在我发布这个问题一个小时后,我找到了解决方案。我在重复运行上述代码的“while(true)”中创建了一个单独的线程。这样扬声器就打开了,音乐随着通话一起播放。

标签: android volume phone-call speaker


【解决方案1】:

This 为我工作,在您的 InCallService 调用 setAudioRoute 中,如下所示:

setAudioRoute(ROUTE_SPEAKER);

【讨论】:

    【解决方案2】:

    使用此代码:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 等等,认真的吗?
      猜你喜欢
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多