Wert von GPS Lesen

  • Antworten:9
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 609

05.06.2019, 21:25:22 via Website

Hallo zusammen

Ich möchte die Daten vom GPS auslesen. Bei den meisten Daten geht es.
Das Projekt kann ich kompilieren aber wenn die Daten angezeigt werden, stürzt die app ab mit der Meldung

java.lang.NoSuchMethodError: No virtual method getVerticalAccuracyMeters()F in class Landroid/location/Location; or its super classes (declaration of 'android.location.Location' appears in /system/framework/framework.jar)

Was muss ich machen damit ich den Wert korrekt auslese?

Gruss Renato

Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

08.06.2019, 17:32:56 via Website

Hallo
"getVerticalAccuracyMeters" gibt es ja erst ab einer Api 26, darunter würd das Handy abstürzen.
https://developer.android.com/reference/android/location/Location.html#getVerticalAccuracyMeters()
Wie ich weiß arbeitetest nu noch mit alten Handys Android 5- 6, die Methode gibt es erst ab Android 8. Somit ist das kein wunder das dein Handy abstützt.
Es nützt dir auch nicht die Annotationen RequiresApi oder TargetApi zu verwenden denn damit sagst du nur dem Compiler das er den nachfolgenden Code auch mit einer niedrigeren minSDk übersetzen soll. Das hat aber nichts damit zu tun das dadurch der Code auch auf der niedrigeren minSDK läuft.
Dafür must du selber sorgen in dem du prüft auf welcher API du bist und den code bei niedriger api überspringst.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

} else {

}

Hilfreich?
Pascal P.
Kommentieren
Ludy
  • Admin
  • Forum-Beiträge: 7.959

05.06.2019, 21:33:26 via App

Hallo,

ohne Code wird es schwer.

Aber du kannst mal in meinem Projekt reinschauen

https://github.com/Ludy87/AndroidPIT/tree/master/LocalLocation

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.06.2019, 17:38:24 via Website

Ciao Ludy

Danke für die Hilfe. Aber soweit bin ich bereits gekommen.
Ich denke, dass Problem liegt nicht beim Sourcecode. Den kann ich ohne Fehler kompilieren. Erst beim Aufruf der Methode "getVerticalAccuracyMeters" stürzt die App mit der oben stehenden Meldung ab. Ich denke, dass ich beim Aufruf was änder muss. Aber was genau weiss ich nicht.

private void initial(){
    position = (LocationManager) getSystemService(LOCATION_SERVICE);
    positionhorcher = new LocationListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onLocationChanged(Location location) {
            Double b_breit = 0.0;
            Double b_lang = 0.0;
            Double b_hoch = 0.0;
            Float b_schnell = (float) 0;
            Float b_posgenau = (float) 0;
            Float b_lage = (float) 0;
            Long b_zeitpunkt = (long) 0;
            Float b_schnellgenau = (float) 0;
            Float b_lagegenau = (float) 0;
            Long b_fixzeit = (long) 0;
            Float b_hochgenau = (float) 0;

            b_breit = location.getLatitude();
            b_lang = location.getLongitude();
            b_hoch = location.getAltitude();
            b_schnell = location.getSpeed();
            b_posgenau = location.getAccuracy();
            b_lage = location.getBearing();
            b_zeitpunkt = location.getTime();

// b_schnellgenau = location.getSpeedAccuracyMetersPerSecond();
// b_lagegenau = location.getBearingAccuracyDegrees();
b_fixzeit = location.getElapsedRealtimeNanos();
// b_hochgenau = location.getVerticalAccuracyMeters();

            breit.setText(b_breit.toString());
            lang.setText(b_lang.toString());
            genau.setText(b_posgenau.toString());
            hoch.setText(b_hoch.toString());
            hochgenau.setText(b_hochgenau.toString());
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

Vielleicht kann mir jemand anders weiter helfen.

Gruss Renato

Hilfreich?
Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

08.06.2019, 17:32:56 via Website

Hallo
"getVerticalAccuracyMeters" gibt es ja erst ab einer Api 26, darunter würd das Handy abstürzen.
https://developer.android.com/reference/android/location/Location.html#getVerticalAccuracyMeters()
Wie ich weiß arbeitetest nu noch mit alten Handys Android 5- 6, die Methode gibt es erst ab Android 8. Somit ist das kein wunder das dein Handy abstützt.
Es nützt dir auch nicht die Annotationen RequiresApi oder TargetApi zu verwenden denn damit sagst du nur dem Compiler das er den nachfolgenden Code auch mit einer niedrigeren minSDk übersetzen soll. Das hat aber nichts damit zu tun das dadurch der Code auch auf der niedrigeren minSDK läuft.
Dafür must du selber sorgen in dem du prüft auf welcher API du bist und den code bei niedriger api überspringst.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

} else {

}

Hilfreich?
Pascal P.
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

08.06.2019, 20:11:44 via Website

Danke Jokel

Du hast Recht. Mein Handy hat Version 5.1 installiert.
Genau in diese Richtung habe ich gedacht. In diesem Fall muss ich wirklich eine Prüfung einbauen.

Gruss Renato

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

08.06.2019, 20:36:47 via Website

Es gibt auch den Test "location.hasVerticalAccuracy()". Doch der nützt je nach Version auch nicht!

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

08.06.2019, 20:53:34 via Website

Ja diese Methode wurde auch erst mit api 26 hinzugefügt.

Aber mal ehrlich wozu habe ich dir den Link zu der offiziellen Dokumenten begeben. Da kannst du nachschauen mit welcher API Version die Methode geaddet wurden.

Die Dokumentation sollte immer die erste Anlaufstelle sein.

Ich denke mal du hast dir den Link gar nicht angesehen.
Sonst wärest du selber zu dem Ergebnis gekommen ab welcher API Version die Methode eingeführt wurde.(thinking)

Hilfreich?
Pascal P.
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

08.06.2019, 21:17:36 via Website

Ciao Jokel

Habe ich schon angeschaut. Aber den Hinweis oben rechts übersehen.
Danke für deine Geduld.

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

08.06.2019, 23:05:03 via Website

Ja das würde es wenn er nicht die Annotationen hätte.

Mit der @RequiresApi kommt die glaube ich nicht.

Hilfreich?
Rafael K.
Kommentieren