Android:MediaPlayer - 免提音量

Posted

技术标签:

【中文标题】Android:MediaPlayer - 免提音量【英文标题】:Android: MediaPlayer - handsfree volume 【发布时间】:2016-10-28 13:36:40 【问题描述】:

我正在尝试手动禁用/启用将音频播放到蓝牙设备(车内免提)。所以我需要将 MediaPlayer 设置为仅从手机上的扬声器或扬声器蓝牙设备播放 - 当然,当蓝牙设备连接时 - 如果没有,我想使用手机扬声器。

我只能通过这种方式做到这一点:

AudioManager ax = (AudioManager) getSystemService(AUDIO_SERVICE);
player.setAudiostreamType(AudioManager.MODE_NORMAL);
ax.setMode(AudioManager.MODE_NORMAL);

这很好,但是当我使用这条线时

ax.setSpeakerphoneOn(true);

当我在这条线上使用“false”时,扬声器是安静的,我不希望这样(但其他一切都正常工作,只是声音安静)。

所以我想要一种方法:

    从手机的扬声器播放声音(仅限) 从蓝牙设备播放声音(仅限) 设备未连接时 - 第 1 步。

如果我使用不同的模式,它就不能正常工作 - 例如。声音可以在蓝牙设备中播放,也可以在手机扬声器中播放。

感谢您的回答。

【问题讨论】:

【参考方案1】:

OPA!

if(ONLY_PHONE_SPEAKER)

   ax.setStreamVolume(AudioManager.MODE_NORMAL, 20, 0);
   player.setAudioStreamType(AudioManager.MODE_NORMAL);
   ax.setSpeakerphoneOn(true);

else

    // BT enabled - only BT when is connected
    // speaker - when is not connected
    ax.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    ax.setSpeakerphoneOn(true);

【讨论】:

以上是关于Android:MediaPlayer - 免提音量的主要内容,如果未能解决你的问题,请参考以下文章

android中常见声音操作方式(Ringtone,SoundPool,MediaPlayer)小结

带有多个 MP3 的单个 MediaPlayer

高通Android 13默认切换免提功能

如何在 Xamarin 中使用 MediaPlayer 获取曲目的持续时间

Android开发,如何编程实现开启电话的免提功能?

如何通过 Android 中的免提音频网关通过 AG 发起来自 HF 的呼叫?