【问题标题】:How to build Android Bluetooth server app handling data sent from Raspberry Pi using pybluez如何使用 pybluez 构建 Android 蓝牙服务器应用程序处理从 Raspberry Pi 发送的数据
【发布时间】:2018-08-22 12:52:09
【问题描述】:

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

我在 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 raspberry-pi android-bluetooth pybluez


【解决方案1】:

您需要查阅 Android 蓝牙 API,但是您可以非常轻松地构建应用程序。首先,您要做的是获取对代表您要连接的 Raspberry Pi 的 BluetoothDevice 的引用。您可以通过调用BluetoothAdapter.startDiscovery() 或通过调用BluetoothAdapter.getRemoteDevice(...) 直接向框架询问具有Raspberry Pi 的MAC 地址的设备来执行此操作。

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

拥有这两个流后,您可以在两个设备之间来回发送字节数据。请注意,从流中读取和写入是阻塞操作,因此我建议创建两个单独的线程来读取和写入数据,将流和处理程序传递给线程构造函数,以便您可以将数据发送回 UI 线程。

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多