繁体   English   中英

如何构建Android蓝牙服务器应用程序以处理使用pybluez从Raspberry Pi发送的数据

[英]How to build Android Bluetooth server app handling data sent from Raspberry Pi using pybluez

我想知道如何构建处理从Raspberry pi发送的数据的Android应用程序。

我在Raspberry Pi上安装了pybluez模块,并使用以下python脚本发送数据。

import bluetooth
port = 1
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((targetBluetoothMacAddress, port)) 
                      #targetBluetoothMacAddress is my phone MacAddress
sock.send("hello!!")
sock.close()

在手机上,我确实看到两个设备成功配对。 但是找不到从Raspberry Pi发送数据的方法。 有没有一种方法可以构建一个处理来自sock.send()的数据的应用程序?

您需要查阅Android蓝牙API,但是可以,您可以轻松构建应用。 首先,您想要做的是获得对BluetoothDevice的引用,该蓝牙设备代表您要连接的Raspberry Pi。 您可以通过调用做到这一点BluetoothAdapter.startDiscovery()或通过调用直接询问与树莓派的MAC地址的设备框架BluetoothAdapter.getRemoteDevice(...) 。

拥有设备后,您将要使用该设备打开BluetoothSocket 为此,请调用createRfcommSocketToServiceRecord(UUID) 如果您要使用SPP连接到Raspberry Pi,则UUID参数将更可能是“ 0001101-0000-1000-8000-00805F9B34FB”。 create方法将为您返回一个BluetoothSocket,您需要在其上调用connect() 注意,connect是一个阻塞调用,您将需要在辅助线程中执行所有这些工作,以防止锁定UI。 如果连接成功返回,则说明您已成功连接设备。 为了实现与该设备的来回通信,您需要通过在BluetoothSocket上调用以下两个方法getInputStream()getOutputStream()来保持其输入输出流。

一旦有了这两个流,就可以在两个设备之间来回发送字节数据。 请注意,从流中进行读取和写入是阻塞操作,因此我建议创建两个用于读取和写入数据的单独线程,将流和Handler传递到线程构造函数中,以便可以将数据发送回UI线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM