1

我開發了一個應用程序,需要運行連續的BLE掃描,因爲它必須檢查所有周圍的外圍設備是否正在傳輸。 當其中一個或多個人停止傳輸時,我的應用必須發出警報。 我測試過它在某些手機上:Samsung上的Android 6.0.1:手機鎖定時BLE發現掃描停止

1 - 採用Android 5.1.1 2三星注4 - 8榮譽與Android 6.0 3 - LG的Nexus 5採用Android 6.0.1 4 - 三星注4 Android 6.0.1 5 - 三星J5與Android 6.0.1

只有在手機4和5,發現BLE外圍設備似乎行爲不同時,當設備是「甦醒」相比,當它被鎖定。 特別是,當我按下電源按鈕並且設備進入鎖定狀態時,手機會停止發現我的外圍設備 - 或者至少發現是以非常低的頻率觸發的。當我再次按下電源按鈕(通過輸入一個PIN回到解鎖模式)時,BLE發現將再次開始並持續運行。

運行掃描的服務完全存在且正在運行,但它只是不執行掃描。

這種奇怪的行爲只發生在手機4和5(三星Android 6.0.1)。相同的手機與不同的Android版本,並在不同的手機上的相同的Android版本似乎不受影響。

我已經嘗試了各種解決辦法,都沒有成功:

  • 禁用的Android打盹模式我的應用程序,無論是從Android的設置,然後從源代碼在我的應用程序
  • 利用各種ScanSettings選項:ScanMode,NumOfMatches ,MatchMode ...
  • 給掃描服務高喚醒鎖級別

有沒有人遇到過同樣的問題?

編輯:採用Android 4.4.2

+0

您是否設置了任何電源喚醒鎖?你在使用前臺服務嗎? – mhenryk

+0

我已經設置了PARTIAL_WAKE_LOCK的喚醒鎖。該服務在後臺,因爲我不需要用戶意識到它的存在。 – AlbeSte

+0

你有沒有找到任何解決方案? –

回答

0

這可以被鏈接到位置服務進入一個低優先級的狀態下進行測試,並確定還對三星注2。您可以嘗試將測試設備中的服務轉換爲高準確度並重新測試。

+0

如何做到這一點,我想要把服務轉化爲高精度? –

+0

您必須在每臺設備上查看它。不幸的是,不同的Android設備有不同的菜單。 – Chris

+0

好吧,那是壞的:( –