wake-up-neo.com

Wie finde ich heraus, ob das GPS eines Android Geräts aktiviert ist?

Wie überprüfe und aktiviere ich auf einem Android Cupcake (1.5) -fähigen Gerät das GPS?

195
Marcus

Der beste Weg scheint der folgende zu sein:

 final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );

    if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
        buildAlertMessageNoGps();
    }

  private void buildAlertMessageNoGps() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                   startActivity(new Intent(Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                    dialog.cancel();
               }
           });
    final AlertDialog alert = builder.create();
    alert.show();
}
439
Marcus

In Android können wir mithilfe von LocationManager problemlos überprüfen, ob GPS auf dem Gerät aktiviert ist oder nicht.

Hier ist ein einfaches Programm zum Überprüfen.

GPS aktiviert oder nicht: - Fügen Sie die unten stehende Zeile für Benutzerberechtigungen in AndroidManifest.xml zum Access Location hinzu

<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

Ihre Java Klassendatei sollte

public class ExampleApp extends Activity {
    /** Called when the activity is first created. */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
            Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();
        }else{
            showGPSDisabledAlertToUser();
        }
    }

    private void showGPSDisabledAlertToUser(){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
        .setCancelable(false)
        .setPositiveButton("Goto Settings Page To Enable GPS",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                Intent callGPSSettingIntent = new Intent(
                        Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(callGPSSettingIntent);
            }
        });
        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                dialog.cancel();
            }
        });
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }
}

Die Ausgabe wird so aussehen

enter image description here

enter image description here

125
user647826

ja GPS-Einstellungen können nicht mehr programmgesteuert geändert werden, da es sich um Datenschutzeinstellungen handelt und wir überprüfen müssen, ob sie im Programm eingeschaltet sind oder nicht, und sie behandeln, wenn sie nicht eingeschaltet sind. Sie können den Benutzer benachrichtigen, dass GPS ausgeschaltet ist, und auf diese Weise den Einstellungsbildschirm für den Benutzer anzeigen, wenn Sie dies möchten.

Überprüfen Sie, ob Standortanbieter verfügbar sind

    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    if(provider != null){
        Log.v(TAG, " Location providers: "+provider);
        //Start searching for location and update the location text when update available
        startFetchingLocation();
    }else{
        // Notify users and show settings if they want to enable GPS
    }

Wenn der Benutzer GPS aktivieren möchte, kann der Einstellungsbildschirm auf diese Weise angezeigt werden.

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, REQUEST_CODE);

Und in Ihrem onActivityResult können Sie sehen, ob der Benutzer es aktiviert hat oder nicht

    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE && resultCode == 0){
            String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
            if(provider != null){
                Log.v(TAG, " Location providers: "+provider);
                //Start searching for location and update the location text when update available. 
// Do whatever you want
                startFetchingLocation();
            }else{
                //Users did not switch on the GPS
            }
        }
    }

Das ist eine Möglichkeit, und ich hoffe, es hilft. Lassen Sie mich wissen, wenn ich etwas falsch mache.

36
achie

Hier sind die Schritte:

Schritt 1: Erstellen Sie Dienste, die im Hintergrund ausgeführt werden.

Schritt 2: Sie benötigen auch die folgende Berechtigung in der Manifest-Datei:

Android.permission.ACCESS_FINE_LOCATION

Schritt 3: Code schreiben:

 final LocationManager manager = (LocationManager)context.getSystemService    (Context.LOCATION_SERVICE );

if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) )
  Toast.makeText(context, "GPS is disabled!", Toast.LENGTH_LONG).show(); 
else
  Toast.makeText(context, "GPS is enabled!", Toast.LENGTH_LONG).show();

Schritt 4: Oder einfach überprüfen mit:

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);

Schritt 5: Führen Sie Ihre Dienste kontinuierlich aus, um die Verbindung zu überwachen.

31
Rakesh

Ja, Sie können unten den Code überprüfen:

public boolean isGPSEnabled (Context mContext){
    LocationManager locationManager = (LocationManager)
                mContext.getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
13
Arun kumar

GPS wird verwendet, wenn der Benutzer die Verwendung in seinen Einstellungen zugelassen hat.

Sie können dies nicht mehr explizit aktivieren, müssen es aber nicht - es ist wirklich eine Datenschutzeinstellung, sodass Sie es nicht optimieren möchten. Wenn der Benutzer damit einverstanden ist, dass Apps genaue Koordinaten erhalten, wird dies aktiviert. Dann verwendet die Location Manager-API GPS, wenn dies möglich ist.

Wenn Ihre App ohne GPS nicht wirklich nützlich ist und deaktiviert ist, können Sie die Einstellungs-App auf dem rechten Bildschirm mit einer Absicht öffnen, damit der Benutzer sie aktivieren kann.

6
Mike Hearn

Dieser Code überprüft den GPS-Status

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
    buildAlertMessageNoGps();
}

`

5
kashifahmad

Diese Methode verwendet den LocationManager-Dienst .

Quelle Link

//Check GPS Status true/false
public static boolean checkGPSStatus(Context context){
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );
    boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    return statusOfGPS;
};
3
Code Spy

Implementieren Sie in Ihrem LocationListener die Ereignishandler onProviderEnabled und onProviderDisabled. Wenn Sie requestLocationUpdates(...) anrufen und GPS auf dem Telefon deaktiviert ist, wird onProviderDisabled angerufen. Wenn der Benutzer GPS aktiviert, wird onProviderEnabled aufgerufen.

3