2015-09-10 53 views
5

L'applicazione su cui sto lavorando utilizza entrambe le posizioni e BLE e se la posizione o il bluetooth sono disattivati, devo chiedere all'utente di abilitarli.Come spuntare Abilita la richiesta Bluetooth da Google Play Services?

Gli ultimi servizi di Google Play forniscono un modo standard per farlo utilizzando LocationSettingsRequest che verifica i requisiti e genera un popup standard se sono necessarie modifiche alle impostazioni. Funziona come un fascino solo per la posizione, ma una volta che aggiungo SetNeedBle (true) a LocationSettingsRequest ottengo uno stato SETTINGS_CHANGE_UNAVAILABLE.

L'unica mia ipotesi era ho bisogno di aggiungere AddApi (FitnessClass.BLE_API) chiamata a un GoogleApiClientBuilder come potrebbe essere di vitale importanza per la funzionalità BLE, ma poi ho avuto il collegamento a Google Play Services non riuscita con SIGN_IN_REQUIRED status che è fuorviante in quanto ho solo bisogno di una parte BLE di Servizio di fitness

Qualcuno conosce un buon esempio di utilizzo di LocationSettingsRequest per richiedere all'utente sia la posizione che il bluetooth?

Location popup

risposta

0

sembrare che è stato risolto in 8.1.0 in modo SetNeedBle (true) funziona come previsto:

enter image description here

1

si è molto vicini. Nello LocationSettingsRequest.Builder c'è setNeedBle(boolean needBle) che aprirà una finestra di dialogo per chiedere BLE. Non utilizzare l'API Fitness per la posizione BLE.

Assicurarsi inoltre che il telefono è BLE abilitare aggiungendo nel manifesto:

<manifest> 
<uses-feature 
     android:name="android.hardware.bluetooth_le" 
     android:required="false" /> 
</manifest> 

Poi in voi codice:

if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { 
    //has BLE 
} 

E da Google Play Service è possibile utilizzare il SettingApi che chiedono la sistema sulle funzionalità disponibili. La guida contiene un esempio completo di come usarlo.

https://developers.google.com/android/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html#setNeedBle(boolean)

+0

Ho provato questo prima, ma ciò che ottengo è stato 'SETTINGS_CHANGE_UNAVAILABLE'. Hai un campione funzionante? – Mikhail

+0

Quale versione di Android stai prendendo di mira? È possibile evitare il telefono senza BLE sul manifest con '' – xiaomi

+0

L'applicazione ha già indicato le righe nel manifest e io cercando 'setNeedBle (boolean)' su Samsung Galaxy S3 (4.3) e LG G3 (5.0). Entrambe le volte mi ha dato "SETTINGS_CHANGE_UNAVAILABLE". – Mikhail

Problemi correlati