当前位置: 首页 > 知识库问答 >
问题:

如何将音频从android设备重定向到bluetooth speeker

墨星鹏
2023-03-14

我正在尝试将我在应用程序中播放的所有音频重定向到蓝牙扬声器。首先,我将蓝牙设备配对,然后我尝试向audioManager“说”,我播放的所有音频都应发送到蓝牙扬声器:

private final BluetoothAdapter _bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

public void pairBluetoothDevice(BluetoothDevice bluetoothDevice)
{
    BluetoothSocket socket= bluetoothDevice.createInsecureRfcommSocketToServiceRecord( UUID.fromString( "0000111E-0000-1000-8000-00805F9B34FB" ) );
    socket.connect();

    _bluetoothAdapter.getProfileProxy( _appContext, _profileListener, BluetoothProfile.HEADSET );
}

private BluetoothProfile.ServiceListener _profileListener = new BluetoothProfile.ServiceListener()
{
  public void onServiceConnected( int profile, BluetoothProfile proxy )
  {
     if ( profile == BluetoothProfile.HEADSET )
     {
        _bluetoothHeadset = (BluetoothHeadset) proxy;
        _bluetoothHeadset.startVoiceRecognition(_device);

        AudioManager audioManager = (AudioManager) _appContext.getSystemService(Context.AUDIO_SERVICE);
        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        audioManager.startBluetoothSco();
        audioManager.setBluetoothScoOn(true);
        audioManager.setSpeakerphoneOn(false); 
     }
  }

  public void onServiceDisconnected( int profile )
  {
     if ( profile == BluetoothProfile.HEADSET )
     {
        AudioManager audioManager= (AudioManager) _appContext.getSystemService(Context.AUDIO_SERVICE);
        audioManager.setBluetoothScoOn(false);
        audioManager.stopBluetoothSco();
        audioManager.setMode(AudioManager.MODE_NORMAL);
        audioManager.setSpeakerphoneOn(true); 

        _bluetoothHeadset.stopVoiceRecognition(_device);
        _bluetoothHeadset= null;
     }
  }
};

当我播放音频时。。。

_soundPool.play( _soundPoolMap.get( index ), streamVolume, streamVolume, 1, 0, speed );

... 我什么也没听到。

感谢您的提示:-)

共有1个答案

傅新
2023-03-14

我找到了以下解决方法:我打开默认蓝牙设置,我可以在其中配对蓝牙扬声器,然后音频将自动发送到扬声器。

startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
 类似资料:
  • 可以通过蓝牙传输音频吗?在我的研究中,我发现只有使用A2DP(高级音频分布配置文件)才有可能。每个Android设备都支持A2DP吗?如果没有,是否可以使用蓝牙在两个Android设备之间传输音频?请帮我理解这一点。 我浏览了以下链接: 在Android中通过蓝牙接收音频, 谷歌确认蓝牙音频流修复下一个版本的Android 4.2 如何通过蓝牙从另一台设备流式传输音频?

  • AndroidLollipop现在支持USB音频开箱即用。但是,我希望能够控制到USB音频设备的音频路由。Android SDK中是否有任何方法允许这种程度的控制?我尝试使用setForceUse,但这在不同的设备上是不一致的,而且似乎只适用于未连接USB音频设备的情况(更不用说SetForceUser没有USB选项)。 例如,我希望我的应用程序能够在普通手机耳机插孔上播放,但通过切换按钮,可以将

  • 我对同一主题进行了研究,发现android设备是a2dp源,音频只能从a2dp源流式传输到a2dp接收器。A2dp接收器可以是蓝牙耳机或蓝牙扬声器。 但我的问题是,Android应用程序“蓝牙音乐播放器”是如何工作的? 它允许从一部手机到另一部手机进行流媒体传输。因此,在这种情况下,收听移动设备必须充当接收器。这怎么可能?他们是否使用其他配置文件而不是a2dp? 好吧,这可能是他们使用的不同配置文

  • 我的音乐应用程序从外部应用程序启动,使用意向数据作为音乐文件。 我有mp3音频URI,类似这样 file:///storage/emulated/0/Music/Tamil/I(2014)/Ennodu Nee Irundhaal。mp3 如何从媒体获取音频详细信息。标题,媒体。相册,媒体_身份证件

  • 我在使用媒体​流式录制API,用于录制用户的麦克风。该代码在chrome windows上运行良好,但在android上,它只会在录制哔哔声后立即停止录制。 如何使API在android设备上工作 我是否遗漏了什么,或者这是Web音频API的错误? 代码如下: 然后我就用这些台词开始录音: 还有这个要停下来玩:

  • 我有一个情况,我们有一个使用网络视图的Android应用程序。当用户导航到YouTube视频时,它开始播放(带有音频),然后用户使用设备的硬件开关锁定设备,它会继续播放音频。 当应用程序使用设备菜单发送到后台或退出应用程序时,不会发生这种情况。 有人知道为什么会发生这种情况以及如何阻止它吗? 编辑:我刚刚在这里发现了一个类似的、未回答的帖子:应用程序支持视频的后台播放、科尔多瓦问题、谷歌播放拒绝应