如何编程连接2个Android设备与蓝牙?

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

Solutions Collecting From Web of "如何编程连接2个Android设备与蓝牙?"

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

从BluetoothAdapter开始 – 这是您的蓝牙pipe理器。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

如果bluetoothAdapter为空,则意味着这个Android设备不支持蓝牙(它没有蓝牙无线电,虽然我认为很less遇到这些设备…)

接下来,确保蓝牙已打开:

 if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, request_code_for_enabling_bt); } 

如果没有,我们开始要求用户启用它的活动。

比方说,用户确实启用(我想你应该检查他是否做,在你的onActivityResult方法做)。 我们可以查询配对的设备:

 Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices(); 

然后循环播放: for(BluetoothDevice device : pairedDevices)并find您要连接的那个。

一旦你find了一个设备,创build一个套接字来连接它:

 BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID); 

YOUR_UUID是包含您的应用的特殊ID的UUID对象。 在这里阅读。

现在,尝试连接(您尝试连接的设备必须在侦听模式下使用相同的UUID创build一个套接字):

 socket.connect(); 

connect() 阻塞你的线程,直到连接build立,或者发生错误 – 在这种情况下会抛出一个exception。 所以你应该调用connect在一个单独的线程。

在那里! 您已连接到其他设备。 现在得到input和输出stream:

 InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); 

你可以开始发送/接收数据。 请记住,这两个动作(发送和接收)都是阻塞的,所以你应该从不同的线程调用这些动作。

阅读更多关于此的信息,并了解如何在蓝牙文档中创build服务器(这里我们创build了一个客户端) 。