phonegap: how to check if gps is enabled

17,738

Solution 1

Assuming we're talking just about Android platform only, as @Joerg rightly says, you can use cordova.plugins.diagnostic to check if GPS is enabled using isGpsLocationEnabled():

cordova.plugins.diagnostic.isGpsLocationEnabled(function(enabled){
    console.log("GPS location is " + (enabled ? "enabled" : "disabled"));
}, function(error){
    console.error("The following error occurred: "+error);
});    

If the result is that GPS is switched off, you can either switch the user to the location settings page to manually enable GPS:

cordova.plugins.diagnostic.switchToLocationSettings();

Or, in addition, you could use cordova-plugin-request-location-accuracy to request high accuracy location mode (i.e. GPS) directly from within the app. This will show a native confirm dialog and if user agrees, GPS will be enabled automatically:

function onRequestSuccess(success){
    console.log("Successfully requested accuracy: "+success.message);
}

function onRequestFailure(error){
    console.error("Accuracy request failed: error code="+error.code+"; error message="+error.message);
    if(error.code !== cordova.plugins.locationAccuracy.ERROR_USER_DISAGREED){
        if(window.confirm("Failed to automatically set Location Mode to 'High Accuracy'. Would you like to switch to the Location Settings page and do this manually?")){
            cordova.plugins.diagnostic.switchToLocationSettings();
        }
    }
}

cordova.plugins.locationAccuracy.request(onRequestSuccess, onRequestFailure, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY);

Solution 2

The best way to check if GPS, Wifi, … is enabled, is to use this plugin:

https://www.npmjs.com/package/cordova.plugins.diagnostic

Using this plugin you can check a lot of features and you can switch the user to the settings.

Share:
17,738
user2899728
Author by

user2899728

Updated on June 15, 2022

Comments

  • user2899728
    user2899728 almost 2 years

    I want to show an alert saying that "Please turn on your GPS".

    How can I get GPS status using phonegap?

    I have used following code but I don't get any alert message if GPS is turned off. Instead nothing happens.

    <!DOCTYPE html>
      <html>
      <head>
       <title>Device Properties Example</title>
    
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">
    
    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);
    
    // device APIs are available
    //
    function onDeviceReady() {
    
       var test= navigator.geolocation.getCurrentPosition(onSuccess, onError);
    
    }
    
    // onSuccess Geolocation
    //
    function onSuccess(position) {
        var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
                            'Longitude: '          + position.coords.longitude             + '<br />' +
                            'Altitude: '           + position.coords.altitude              + '<br />' +
                            'Accuracy: '           + position.coords.accuracy              + '<br />' +
                            'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
                            'Heading: '            + position.coords.heading               + '<br />' +
                            'Speed: '              + position.coords.speed                 + '<br />' +
                            'Timestamp: '          + position.timestamp                    + '<br />';
    }
    
    // onError Callback receives a PositionError object
    //
    function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }
    
    </script>
    </head>
    <body>
      <p id="geolocation">   Finding geolocation...</p>
    </body>
    </html>