簡體   English   中英

Android低功耗藍牙(BLE)斷開/重新連接

[英]android Bluetooth low energy (BLE) disconnect / reconnect

應用程序活動顯示可用的BLE設備列表,然后與選定的設備連接(我看到通知等)。 編碼:

private static BluetoothAdapter mAdapter=null;
if(mAdapter == null);
mAdapter = BluetoothAdapter.getDefaultAdapter();
mAdapter.startLeScan((BluetoothAdapter.LeScanCallback)mContext);

它給出了一個設備的輸入(如預期的那樣)。 但是,我無法正確斷開連接。 當我關閉應用程序時,連接縫保持不變。 LED指示連接保持打開狀態,並且在下次運行該應用時,可用設備的列表很完整-要斷開連接,我必須重新啟動設備或電話。

我試過System. exit(0) System. exit(0)private static BluetoothGatt mGatt; mGatt.disconnect(); private static BluetoothGatt mGatt; mGatt.disconnect(); 並在Android Device Monitor中停止應用程序實例(順便說一句,為什么在主活動的“返回”按鈕之后出現了-為什么它可能在那兒,未注冊的廣播接收器?) 仍然帶領該設備為ON,並且在下一個應用程序啟動時,可用設備的列表為空(並且屏幕上不顯示任何消息-通知等)。

如何正確重置BLE連接? 如果需要更多應用程序代碼,我會添加它。

從您的描述中還不完全清楚發生了什么。 您看到什么通知? 您如何建立和管理設備列表? 在什么情況下設備上的LED燈應該亮起?

無論如何,如果您之前沒有調用過,幾乎可以肯定應該在onDestroy()onPause()調用mGatt.close()

按下后退按鈕是否完成應用程序取決於它的設置方式,並不一定意味着有一些資源尚未釋放,但這值得檢查。 與未注冊的廣播接收器相比,它更可能是處於運行狀態的服務,我認為這是由系統處理的(這並不意味着您不應該注銷接收器)。

斷開連接與將BluetoothAdapter設置為null沒有關系。

要斷開與設備的連接,必須調用mGatt.close()

如果要在此之后關閉藍牙,請調用mAdapter.disable()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM