我使用com.google.android.gms.location.SettingsApi在我的Android應用程序中啓用藍牙和位置。它會彈出一個對話框提示用戶在禁用時啓用它,以便我的應用可以掃描附近的藍牙設備。我遵循了參考指南(https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi)中的說明。這是非常簡單的:首先你連接到GoogleApiClient,然後你做一個LcoationSettingsRequest.builder:setNeedBle from SettingsApi不工作API23
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequestHighAccuracy)
.setNeedBle(true)
在我的情況下,我加入setNeedBle(真),因爲我需要打開藍牙以及。然後您從SettingsApi調用checkLocationSettings並向結果添加回調。這會彈出一個對話框,提示用戶打開藍牙和位置信息,然後您將回答用戶是否選擇執行此操作。
在API22和Google Play服務版本8.4.89的設備上工作正常,但不在API23和GPS版本8.4.89的相同設備上。只有setNeedBle(true)部分不適用於API23:當Bluetooth關閉時,我沒有收到對話框(但啓用位置的對話框正常工作)。由於他們都安裝了相同版本的GPS,它與API22與API23有關。有誰知道這是一個錯誤還是我可以如何解決這個問題?
我發現了一個類似的問題(How to pop up Enable Bluetooth prompt from Google Play Services?)關於這個,但它建議固定在GPS版本8.1,但我正在運行GPS v8.4。此外,這是一個稍微不同的問題,因爲我沒有收到SETTINGS_CHANGE_UNAVAILABLE狀態。
不知道您是否考慮過這一點,但API 23中有關於BLE掃描的新實施。請參閱[改進的低功耗藍牙掃描](http://developer.android.com/about/versions/marshmallow/android-6.0.html#ble-scanning)。您需要爲新API使用['setCallbackType()'](http://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder.html#setCallbackType(int))。 – gerardnimo
謝謝,但這與掃描時優化性能有關,而不是啓用藍牙。 – Nimyz
你有沒有找到解決方案? – Eylen