2014-03-26 59 views
0

我正在Android應用程序列出所發現的藍牙LE設備。如何檢查設備Dicovery和未發現的藍牙樂設備

我正在使用以下代碼掃描BLE設備。

BluetoothManager mBta = ((BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter(); 
    SNFBluetoothAdapter mSNFBluetoothAdapter=new SNFBluetoothAdapter(MainActivity.this); 

    mBta.startLeScan(mSNFBluetoothAdapter); 

使用這種方法我能夠掃描藍牙設備的範圍英寸

onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) 

但現在我的問題是, 我如何檢查設備超出藍牙範圍和更新我的設備列表? 請幫助。

對不起,我的語言。

+0

你可以看到之前發現的東西是否在一些合理次數的嘗試中找不到。 rssi的下降也可能是一個線索。有可能您需要根據您的應用需求調整決策。 –

回答

0

最後我用定時器刷新列表。

某些特定時間後重置列表數據並重新獲取DeviceList,以便獲取位於範圍設備中的新列表。

0

你可以使用幾個開發人員sdk。檢查Radius網絡信標和Estimote信標。 Estimote只描述了Estimote信標。信標具有接近功能作爲您的要求,他們可以在您進入/退出該區域時通知您。

+0

這個問題不是特定於「信標」,此外,SO更喜歡提供獨立解釋的答案,而不僅僅指向另一個地方。 –

0

除非您停止此過程,否則方法onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord)將始終運行。如果Device Goes Out of bluetooth range,它會自動消失。

不需要擔心。

+0

@ Alex Tran。 我正在管理設備的ArrayList並在ListView中顯示它。 和onLeScan(最終的BluetoothDevice設備,int rssi,byte [] scanRecord)僅在設備進入藍牙範圍時調用。所以在onLeScan方法中,我將Device添加到我的列表中。 因此,如果設備超出範圍我必須從我的列表中刪除設備,所以使用這種方法是不可能的。 嘗試代碼,如果可能的話,請描述。 –