2011-09-01 79 views
10

我正在开发一个应用程序,它应该通过蓝牙自动连接2个Android设备。假设他们已经配对。这有可能实现吗?如何编程连接2个Android设备与蓝牙?

+1

这是可能的服务器(在这里,我们已经创建了一个客户端),在看看:http://developer.android.com /guide/topics/wireless/bluetooth.html –

+1

缺点是,这样的应用程序,例如即不断寻呼来建立连接,会对电池的使用寿命产生不利影响。不是一个好主意。 –

回答

18

当然这是可能的。我将在文档中做一个简短的教程:

从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.

+1

谢谢你,我已经在我的应用程序中执行了一段时间以前的工作,但我的想法很好,但你的答案非常好,我将其标记为已接受。 – Miky

+0

@Miky你​​能告诉我们你的执行 – jaimin

+0

@jaimin对不起,自动蓝牙连接从来没有令我满意。必须选择WiFi作为替代方案。 – Miky

相关问题