android - Android:MediaPlayer-免提音量

标签 android audio bluetooth

我正在尝试手动禁用/启用向蓝牙设备(车内免提)播放音频。因此,我需要仅通过电话上的扬声器或扬声器上的蓝牙设备播放MediaPlayer设置-当然,当连接了蓝牙设备时-否则,我想使用电话扬声器。

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

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

这很好用,但仅当我使用此行时
ax.setSpeakerphoneOn(true);

当我在此行上使用“false”时,扬声器处于安静状态,而我不希望这样做(但是其他所有功能都可以正常工作,只是声音处于安静状态)。

所以我想要一种方法:
  • 播放电话中扬声器的声音(仅)
  • 播放来自蓝牙设备的声音(仅)
  • 未连接设备时的
  • -步骤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 - Android:MediaPlayer-免提音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40306279/

    相关文章:

    java - 如何存储对象

    c# - 后台任务由SocketActivityTrigger激活,但是触发器中的套接字返回null

    android - 清除整个历史堆栈并在 Android 上启动一个新 Activity

    c++ - ALSA 在 Raspberry Pi 模拟输出上接收和播放原始 PCM 的配置

    java - 通过点击 Android 中的 "Next"和 "Previous"按钮来更改阵列图像和音频

    c# - MP3 字节数组 - 转换为 WAV 并导航到时间索引?

    BluetoothClass of devices——什么是什么?

    android - RecyclerView 添加/重新添加项目

    java - android os 决定调用 gc 的策略是什么?

    php - 智能识别不同账户为同一用户