簡體   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