我正在开发一个应用程序,应该通过蓝牙自动连接2个Android设备。假设它们已经配对了。有可能做到这一点吗?
发布于 2011-10-29 04:16:25
当然这是可能的。我将根据文档制作一个简短的教程:
从BluetoothAdapter开始-它是您的蓝牙管理器。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();如果bluetoothAdapter为空,则意味着该安卓设备不支持蓝牙(它没有蓝牙无线电。尽管我认为很少会遇到这些设备...)
接下来,确保蓝牙处于打开状态:
if (!bluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, request_code_for_enabling_bt);
}如果它没有打开,我们启动要求用户启用它的活动。
假设用户确实启用了(我想您应该检查他是否启用了,在您的onActivityResult方法中执行)。我们可以查询成对的设备:
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();然后循环遍历它们: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.中创建服务器(在这里我们已经创建了一个客户端
https://stackoverflow.com/questions/7273084
复制相似问题