如何编程连接2个Android设备与蓝牙?
答
当然这是可能的。我将在文档中做一个简短的教程:
从BluetoothAdapter开始 - 它是您的蓝牙管理器。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
如果bluetoothAdapter
为null,则意味着此Android设备不支持蓝牙(它没有蓝牙无线电。虽然我认为这是难得遇到这些设备......)
接下来,确保蓝牙开启:
如果不是,我们开始要求用户启用它的活动。我们假设用户确实启用了(我想你应该检查他是否执行了,在onActivityResult
方法中执行)。我们可以查询配对设备:
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices();
然后遍历它们:for(BluetoothDevice device : pairedDevices)
,找到你要连接到一个。
一旦你找到了一个设备,创建一个套接字连接它:
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID);
YOUR_UUID是包含您的应用程序的特殊ID的UUID对象。阅读关于它here。
现在,尝试连接(设备你试图连接到必须在监听模式具有相同UUID创建的套接字):
socket.connect();
连接()块你的线程,直到建立连接或者发生错误 - 在这种情况下将引发异常。所以你应该在一个单独的线程上调用connect
。
还有!您已连接到其他设备。现在得到输入和输出流:
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
并且您可以开始发送/接收数据。请记住,这两个操作(发送和接收)都是阻止,所以你应该从不同的线程调用这些。
了解更多关于这一点,并找出如何创建在Bluetooth documentation.
这是可能的服务器(在这里,我们已经创建了一个客户端),在看看:http://developer.android.com /guide/topics/wireless/bluetooth.html –
缺点是,这样的应用程序,例如即不断寻呼来建立连接,会对电池的使用寿命产生不利影响。不是一个好主意。 –