2017-05-07 118 views
4

我使用活動的藍牙LE掃描儀運行應用程序或服務,並在日誌控制檯上顯示掃描結果。如果我把手機鎖在桌子上而不再觸摸了。一段時間後停止,它不會給我更多的掃描結果。Android Bluetooth Le掃描器在一段時間後停止

如果我按下電源按鈕,屏幕醒來,它會給我更多的掃描結果。如果我再次鎖定屏幕或等待自動鎖定,它會停止並且不會給我更多的掃描結果。

我的服務和應用程序,給我的日誌的詳細結果,並看到應用程序正在運行,但掃描儀LE停止,並沒有給我更多的結果,同時屏幕鎖測試。

我有應用程序在「沒有優化電池」打盹模式。我測試強制通過命令介紹手機打盹模式,並工作得很好,它給了我掃描結果。

在我的Nexus 5採用Android 7.1.1通運行應用程序時和鎖定屏幕,並不再觸摸手機。時間是30分鐘。手機只在桌子上,只有與microusb連接才能看到android studio中的日誌。

在其他摩托G2與Android 7.1通恰好但時間爲20分鐘和40分鐘之間,更偶然。手機只在桌子上,只有與microusb連接才能看到android studio中的日誌。

對於再次運行良好,我需要強制手動關閉應用程序,並重新啓動,否則,只有當屏幕處於活動狀態,並沒有給我更多的結果,當屏幕被鎖定工作。

這是用於燈塔效果,首先我使用Android燈塔庫用於此目的,其結果是一樣的。

我認爲這是一個Android藍牙組件的問題,因爲我與Android Beacon庫有相同的結果,或者如果我實現了我自己的BLE掃描儀,但我不知道如何解決這個問題。

受到任何形式的使用藍牙掃描儀LE總是在運行Android的時候,手機處於鎖定狀態多少時間?

在此先感謝。

此致敬禮。

+0

如果我把一個報警電話每10分鐘鎖定屏幕將其他警報在接下來的10分鐘內掃描BLE永遠不會停止。但是,如果我將外部警報並且每隔10分鐘僅移動手機而不解鎖手機,掃描儀在鎖定屏幕30分鐘後停止閱讀。 – Redhunt

+1

我沒有任何形式讓掃描儀在所有我的背景模式測試後都不會觸摸手機。 – Redhunt

回答

8

Android 7.0引入了BLE掃描超時,其中任何運行30分鐘或更長時間的掃描都會自動有效停止,並且只會「機會性」地恢復,這實質上意味着如果另一個進程執行掃描,它也可以得到結果。

您可以通過設置密碼來啓動藍牙LE掃描並讓它無限期地運行看到這一點。整整30分鐘後,掃描將停止,你會看到在logcat中這樣的條目:

06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: clientIf set to scan opportunisticly: 6 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue=1 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - ScanSetting Scan mode=-1 mLastConfiguredScanSetting=2 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue emtpy, scan stopped 
06-11 19:00:22.849 5123 5147 D BtGatt.ScanManager: stop scan 

你可以看到,這是否在AOSP源這裏的代碼:

https://android.googlesource.com/platform/packages/apps/Bluetooth/+/android-7.0.0_r1/src/com/android/bluetooth/gatt/ScanManager.java#72

解決這個問題的方法是不要讓掃描持續很長時間。你可以簡單地阻止他們,並定期重新啓動它們。

+0

這個奇怪的新「特色」究竟是什麼意思?有很多應用程序需要在BLE設備的後臺連續掃描,而這個新的「功能」打破了這些應用程序。 30分鐘後停止掃描感覺非常隨意,特別是如果應用程序已經使用「低功耗」掃描模式。無論如何,程序員只需要使用計時器在30分鐘後重新啓動它即可成爲解決方法。 – Emil

+0

是的。在程序員不經意間進行掃描的情況下,一個好處就是節省電池。 – davidgyoung

+0

@davidgyoung,當我將它發佈到github https://github.com/AltBeacon/android-beacon-library/issues/506時,你幫助我解決了我的問題。感謝您的幫助。 – Redhunt

相關問題