// you can generate your own UUID and use it as an port to eatablish a socket
private static final UUID MY_UUID = UUID.fromString("20687DAD-B023-F19E-2F60-A135554CC3FD")
BluetoothServerSocket serverSocket = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME_INSECURE, MY_UUID);
// you should implement the method getBlutoothDevice
BluetoothDevice device = getBluetoothDevice();
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);
5 回答
以下类型的线程说,它可能在设备之间通过蓝牙传输音频,但是在谷歌官方宣布We have fixed the a2dp streaming stutter problem on N7. The next release should have the fix. Sorry about the problem.之前,它的成功率存在问号
Fix for poor A2DP quality on 4.2.2
Bluetooth sound quality suffer after upgrade to 4.2 with Galaxy Nexus
Android 4.3 Bluetooth Audio Quality Fix for Nexus 7 Flo
支持兼容性在Android developers site上提到它是从
API Level-11 with appropriate features.
添加的但是我遇到XDA tread其中OP提到Android 2.1
中的问题,意味着它也支持以前的api级别但OP面临问题 .希望理解它是有意义的,我想建议参考XDA forum以获得有关A2DP兼容性及其成功的更多信息 .
我认为,如果A2DP无法正常工作,我们最好转移到较低层,我们可以创建一个基本流,可用于发送任何形式的日期 . 我成功通过J2ME设备之间的蓝牙发送字节流 .
如果在两个设备上安装应用程序是可以接受的,我会通过套接字创建蓝牙服务器和客户端进行通信的示例代码,一旦套接字 Build ,你就可以发送音频流:)
这里有一些核心代码:
1)服务器设备:
现在你有了serverSocket,只需将它用作普通的ServerSocket:
然后你可以从这个
BluetoothSocket
获得InputStream
和OutputStream
并发送音频流就像HttpConnection
2)客户端设备:
假设你已经拥有
BluetoothDevice
您还可以通过不依赖于任何配置文件的基本SCO连接来传输音频 . 但请注意,A2DP是专为流媒体音乐开发的配置文件 . 因此,与A2DP相比,您自己制作的任何实现都会受到影响 .
除非您将音乐流式传输到不支持A2DP的设备,否则我肯定会使用A2DP . 真的唯一的另一种选择是使用SCO链接 .
尝试使用以下代码段:
这真的很难 . 但我做了很多研究并找到了方法 . 有几个延迟,连接和根问题,但显然有效 . 为此,您需要在服务器和“AllConnect”接收器上安装“AirAudio”应用程序 . 然后在主屏幕上打开AirAudio,然后打开AllConnect,按设备,然后在源上选择服务器,然后选择流式mp3 . 问题是延迟非常大,另一个缺点就是只传输android服务器系统的声音,你应该在手机上有root ...我也试过流媒体接收器是VLC,少了延迟但仍然如此令人不舒服 .