citta - navigator app cordova




Usa PhoneGap per verificare se il GPS รจ abilitato (4)

È possibile controllare il codice di errore nel parametro PositionError di geolocationError nella chiamata a getCurrentPosition . Immagino che sarà PositionError.PERMISSION_DENIED quando gps non è abilitato e PositionError.POSITION_UNAVAILABLE o PositionError.TIMEOUT quando gps è abilitato ma ci sono altri problemi.

Si noti che questo dipende dalla piattaforma. Probabilmente dovresti scrivere un messaggio di errore forzato che dice "Impossibile ottenere la posizione corrente. O i segnali GPS sono deboli o il GPS è stato spento".

Una cosa che puoi provare è chiamare getCurrentPosition con un timeout incredibilmente piccolo, ad esempio 1 ms. Se viene negata l'autorizzazione, è possibile concludere che il GPS è disattivato e se scade il tempo, è possibile presumere che il GPS sia abilitato. Non ho il tempo di testare questo, probabilmente potresti modificare questa risposta con il risultato dei tuoi test.

Un'altra cosa che puoi provare è usare il plugin diagnostico phonegap per Android . Dovrai assicurarti di usare anche i plugin per le altre piattaforme, ma sono anche tutti per lo più lì.

Sto costruendo un'app utilizzando PhoneGap. Durante l'utilizzo dell'API di geolocalizzazione di phonegap mi sono reso conto che le API scadono per due motivi e viene generato lo stesso errore: 1. Se il GPS non è abilitato sul dispositivo dell'utente 2. Se il GPS è abilitato e non è in grado di ottenere la posizione di l'utente (potrebbero essere diversi motivi, GPS difettoso, condizioni meteorologiche poco chiare e così via)

Sto avendo un problema nel differenziare la causa? Qualche idea su come farlo?

Mi chiedevo se c'è un modo, posso verificare se il GPS è attivo sul dispositivo dell'utente utilizzando PhoneGap, in modo che io possa farlo come un controllo separato e indirizzare l'utente alla finestra delle impostazioni in cui sono posizionate le impostazioni GEO in genere. Non sei sicuro di come farlo? potrebbe essere un plug-in personalizzato per PhoneGap?


Ho avuto un problema simile con alcuni dispositivi. Riuscito a risolverlo con il codice qui sotto:

var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true};
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

Solo per i nuovi utenti reindirizzati qui c'è un plugin (che è iniziato verso la metà del 2014) che è chiamato plugin diagnostico Cordova :

Questo plug-in Cordova / PhoneGap per iOS, Android e Windows 10 Mobile viene utilizzato per gestire le impostazioni del dispositivo come Posizione, Bluetooth e WiFi. Consente la gestione delle autorizzazioni di runtime, dell'hardware del dispositivo e delle funzionalità del sistema operativo principale. ref


Utilizzando la piattaforma Android apache cordova 3

Nel file GeoBroker.java sul metodo exectute aggiungere la seguente azione dopo che il locationManager è stato istanziato.

if(action.equals("isGPSEnabled")){
            PluginResult result;
            if ( locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER )){
                result = new PluginResult(PluginResult.Status.OK);
            }else{
                result = new PluginResult(PluginResult.Status.ERROR);
            }
            callbackContext.sendPluginResult(result);
        }

Quindi, nel file geolocation.js nella cartella plugins delle risorse aggiungere la nuova funzionalità

 /**
     * Asynchronously checks if gps is enabled.
     *
     * @param {Function} successCallback    The function to call when gps is enabled.
     * @param {Function} errorCallback      The function to call when gps is not enabled. (OPTIONAL)
     */
    isGPSEnabled:function(successCallback, errorCallback){
        exec(successCallback, errorCallback, "Geolocation", "isGPSEnabled", []);
    }

Spero che sia d'aiuto