LocationClient vs LocationManager

P

prosk

Neues Mitglied
1
Hallo,

ich entwickle gerade eine App wo ich die genaue Position des Handys brauche. Es sollten nur Werte mit GPS abgefragt werden. Mit LocationManager kann man ja einstellen das geprüft wird ob man GPS enabled hat, aber ich finde diese Funktion bei LocationClient leider nicht. Bin ich zu blöd, oder funktioniert das nicht?

LG.
prosk
 
isProviderEnabled()...

Der Wahrheitsgehalt der Antwort, die du vom LocationManager erhälst, ist alles andere als "glaubwürdig", da hier noch andere Faktoren mit eine Rolle spielen (wenn man unter "alle Apps -> bei LocationServices" (so oder so ähnlich heißt diese System-Anwendung) die Daten löscht, erhält man wieder korrekte Aussagen, jedenfalls war das bei mir unter 2 Geräten so..
Insgesamt kann ich nur stark davon abraten den LocationManager in Kombination mit "der Frage nach der GPS-Einstellung" zu verwenden.
Aber vielleicht habe ich auch irgendwas falsch gemacht.
 
Aber bei LocationClient finde ich nicht einmal die Möglichkeit danach zu fragen
 
Hmm, vielleicht hab ich mich gestern ein bisschen unglücklich ausgedrückt.
Die Frage, die du beantwortet haben möchtest solltest du etwas umgestalten..
Es geht nicht unbedingt darum, ob du GPS-Empfang hast, oder nicht - sondern viel mehr darum ob du überhaupt auf Positionsdaten (in welcher Form auch immer) zurückgreifen kannst.
Schau dir auf jeden Fall das Video an...
https://www.youtube.com/watch?v=Bte_GHuxUGc (ist an manchen Stellen ziemlich "fesselnd") :)

Code:
 private boolean locEnabled() {
        LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        return locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }
so führe ich die Prüfung in meiner Anwendung durch (funktioniert perfekt).
Den Parameter kannst du natürlich abändern, allerdings habe ich dabei alles andere als gute Erfahrungen gemacht - wie beschrieben ist es wohl etwas diffizil über den GPS_PROVIDER eine "wahre" Antwort zu erhalten. Kannst es ja auch nochmal ausprobieren und mir gerade Bescheid geben, was es bei dir ergeben hat.

Hier ist noch ein Ansatz:
android - GPS is not enabled but isProviderEnabled() is returning true - Stack Overflow

-> android - LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) is not reliable, why? - Stack Overflow darauf habe ich mich gestern bezogen...

Dazu kommt noch, dass die Frage "ist eine GPS-Position verfügbar" nicht gleichbedeutend mit der Frage "ist GPS-Einstellung aktiv" zu setzen ist. (wenn man das liest ist es natürlich "logisch", aber stiftet wohl insgesamt doch hin und wieder nochmal Verwirrung).
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: prosk
Bin der Sache noch mal auf den Grund gegangen... Die "fused Locations" alleine sind nicht der Schlüssel zur genauen Positionsbestimmung.

Dieser "Check" hilft meiner App ungemein..
Code:
 final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

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

Code:
private void buildAlertMessageNoGps() {
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Ihre GPS-Einstellung ist deaktiviert. Möchten Sie die Einstellung aktivieren?")
                .setCancelable(false)
                .setPositiveButton("Ja", 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("Nein", new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                        dialog.cancel();
                    }
                });
        final AlertDialog alert = builder.create();
        alert.show();
    }
hier der Link, falls du weitere Infos suchst... ;)
 
  • Danke
Reaktionen: prosk
Danke für die extrem Hilfreichen Tipps, werd jetzt mal alles Testen :thumbsup:
 

Ähnliche Themen

W
Antworten
1
Aufrufe
849
jogimuc
J
K
Antworten
0
Aufrufe
1.178
knuppel
K
A
Antworten
10
Aufrufe
1.142
markus.tullius
markus.tullius
Zurück
Oben Unten