2015-05-21 51 views
1

我有Laird BL6000 BLE設備,我用傳感器連接並配置爲每0.5秒發佈一次數據。BLE每0.5秒讀取一次廣告

現在我想每0.5秒閱讀一次廣告數據。

我可以使用startScanning()讀取數據並在uiOnLeScan(BluetoothDevice device, int rssi, byte[] scanRecord)中訪問數據,但是這個過程大約需要2-3秒。我需要比這更快地讀取這些數據。

如果他們的最小廣告時間爲0.5秒,那麼必須有一種方法來讀取這些數據。

+0

這不是一個掃描應用程序 - 你應該連接到外設。如果你想掃描,你需要更多的時間進行廣告宣傳,因爲這不是一個協調的或可靠的操作,但即使這樣你也不可能達到目標,尤其是當你開始使用不同的手機時。 –

+0

當我連接到外設時,BLE設備停止發佈數據,因此只有一個連接的設備將能夠讀取數據。 –

+0

這就是我在我的問題中提到的,掃描需要很長時間,我不想掃描,我只想讀取廣告數據。 –

回答

0

您是否在使用LeScanCallback來顯示廣告數據包?

onLeScan方法你應該幾乎立即收到數據包。如果您不確定您的設備是否在您設置的時間段內沒有投放廣告。

嘗試打印日誌與scanRecord收到您的廣告包:

private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { 
    @Override 
    public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) { 
     Log.i("ON LE SCAN", "UUID: "+ byteArrayToHex(scanRecord)); 
    } 
}; 

您還可以找到HERE如何掃描BLE裝置和連接到他們一個完整的例子。

祝你好運!