首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过蓝牙编程连接2台android设备?

如何通过蓝牙编程连接2台android设备?
EN

Stack Overflow用户
提问于 2011-09-02 00:03:55
回答 1查看 19.7K关注 0票数 14

我正在开发一个应用程序,应该通过蓝牙自动连接2个Android设备。假设它们已经配对了。有可能做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-29 04:16:25

当然这是可能的。我将根据文档制作一个简短的教程:

从BluetoothAdapter开始-它是您的蓝牙管理器。

代码语言:javascript
复制
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

如果bluetoothAdapter为空,则意味着该安卓设备不支持蓝牙(它没有蓝牙无线电。尽管我认为很少会遇到这些设备...)

接下来,确保蓝牙处于打开状态:

代码语言:javascript
复制
if (!bluetoothAdapter.isEnabled()) {
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, request_code_for_enabling_bt);
}

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

假设用户确实启用了(我想您应该检查他是否启用了,在您的onActivityResult方法中执行)。我们可以查询成对的设备:

代码语言:javascript
复制
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();

然后循环遍历它们:for(BluetoothDevice device : pairedDevices)并找到您想要连接的那一个。

找到设备后,创建一个套接字来连接它:

代码语言:javascript
复制
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID);

YOUR_UUID是一个包含应用程序的特殊ID的UUID对象。阅读关于它的here

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

代码语言:javascript
复制
socket.connect();

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

还有这里!您已连接到另一台设备。现在获取输入流和输出流:

代码语言:javascript
复制
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();

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

阅读更多关于这方面的内容,了解如何在Bluetooth documentation.中创建服务器(在这里我们已经创建了一个客户端

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7273084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档