GPS abfragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi,

    ich versuch jetzt schon das ganze Wochenende das GPS unter Android abzufragen aber irgendwie will es nicht klappten.

    Hier ist der Code den ich benutzte:

    Quellcode

    1. String serviceString = Context.LOCATION_SERVICE;
    2. LocationManager locationManager = (LocationManager)getSystemService(serviceString);
    3. String provider = locationManager.GPS_PROVIDER;
    4. Location location = locationManager.getLastKnownLocation(provider);
    5. if(location != null){
    6. double lat = location.getLatitude();
    7. double lon = location.getLongitude();
    8. String msg = "GPS Länge:" + lon + " Breite: " + lat;
    9. Toast toast1 = Toast.makeText(this,msg,Toast.LENGTH_LONG);
    10. toast1.show();
    11. }
    12. else {
    13. Toast toast2 = Toast.makeText(this,GPSOUT,Toast.LENGTH_SHORT);
    14. toast2.show();
    15. }
    Alles anzeigen


    Wenn ich den Code ausführe wird immer nur die die Toast2 angezeigt.

    Im Emulator hab ich eingestellt das ein GPS Sender/empfänger vorhanden ist und in der AndroidManifest.xml habe ich folgenden Eintrag hinzugefügt:

    Quellcode

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


    Mittels Telnet schicke ich die Koordinaten an das Smartphone.

    Quellcode

    1. telnet localhost 5554

    Quellcode

    1. geo fix 53.12 13.23


    Ich hoffe einer von euch kann mir vieleicht sagen was ich falsch mache bzw warum die ganze Sache nicht geht
  • Hi Thrakbad,

    ich hab meinen Code jetzt so um gebaut.

    Quellcode

    1. String serviceString = Context.LOCATION_SERVICE;
    2. LocationManager locationManager = (LocationManager)getSystemService(serviceString);
    3. String provider = locationManager.GPS_PROVIDER;
    4. //Location location = locationManager.getLastKnownLocation(provider);
    5. LocationListener locationListener = new LocationListener(){
    6. public void onLocationChanged(Location location){
    7. latitude = location.getLatitude();
    8. longitude = location.getLongitude();
    9. String msg = "GPS Länge:" + longitude +" Breite: " + latitude;
    10. Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
    11. }
    12. public void onProviderDisabled(String provider){
    13. Toast.makeText(getApplicationContext(),GPSON,Toast.LENGTH_SHORT);
    14. }
    15. public void onProviderEnabled(String provider){
    16. Toast.makeText(getApplicationContext(),GPSOUT,Toast.LENGTH_SHORT);
    17. }
    18. public void onStatusChanged(String provider, int status, Bundle extras) {
    19. }
    20. };
    21. locationManager.requestLocationUpdates(provider, 0,0, locationListener);
    Alles anzeigen


    Also wenn ich jetzt mittels telnet die Koordinaten übermittlere geht alles.

    So jetzt hätte ich nur noch die Frage wie teste ich ob der Nutzer das GPS eingeschaltet hat.
    Weil so wie ich das verstehe sind dafür die folgenden Methoden zuständig.

    Quellcode

    1. public void onProviderDisabled(String provider){
    2. Toast.makeText(getApplicationContext(),GPSON,Toast.LENGTH_SHORT);
    3. }
    4. public void onProviderEnabled(String provider){
    5. Toast.makeText(getApplicationContext(),GPSOUT,Toast.LENGTH_SHORT);
    6. }


    Aber wenn ich nun den Emulator ohne telnet nutze wird keine der beiden Methoden ausgelöst.

    Sind meine Überlegungen falsch oder gibts ne andere möglichkeit den Status des GPS abzufragen?

    MFG Titus
  • Also die beiden events feuern nur, wenn sich an dem GPS Status was ändert, während deine app läuft. Nen extra check beim Start gibts nicht. Dafür kann man das hier benutzen:

    Quellcode

    1. locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER )
    Gruß
    Thorsten