Я использую com.google.android.gms.location.SettingsApi, чтобы включить Bluetooth и местоположение в моем приложении для Android. Появится диалоговое окно с приглашением пользователя включить его, когда оно отключено, чтобы мое приложение могло сканировать соседние устройства Bluetooth. Я выполнил инструкции в справочном руководстве (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 (истинную), так как мне нужно, чтобы включить Bluetooth на а. Затем вы вызываете checkLocationSettings из SettingsApi и добавляете обратный вызов к результату. Появится диалоговое окно с приглашением пользователя включить Bluetooth и местоположение, и вы получите обратный вызов, независимо от того, выбрал ли пользователь это делать или нет.
Это прекрасно работает на устройстве с 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. См. [Улучшенное сканирование с низким энергопотреблением Bluetooth] (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
Спасибо, но это связано с оптимизацией производительности во время сканирования, а не с поддержкой Bluetooth. – Nimyz
Вы нашли решение? – Eylen