Minimalbeispiel GPS für Emulator

S

schneseb

Neues Mitglied
0
Hallo Forum,

ich habe nun einige Quellen im Internet zum Thema GPS gesichtet und mich hier durch die 5 Seiten GPS Ergebnisse im Forum geklickt. Leider habe ich immer noch das Problem, dass ich kein funktionierendes Minimalbeispiel zum GPS testen mit dem Emulator gefunden habe.

Ich habe begonnen mit dem Tutorial von Lars Vogel, das fand ich gut geschrieben und versucht es 1:1 zum Laufen zu bekommen. Funktionierte nicht, die Felder im DDMS in Eclipse waren ausgegraut, ich konnte keine Positionen eintragen. Auch ein Übermittlung per Telnet über den Port 5554 gab zwar immer "OK" zurück, änderte allerdings nichts. Allerdings hatte ich bei anderen Versuchen schon die Eingabemöglichkeit, aber auch hier zeigte sich keine Änderung.

Ich glaube am besten trifft mein Problem auch dieser Forumsartikel, bei dem es allerdings keine Rückmeldungen gab.

das Manifest enthält bei allen Beispielen immer
INTERNET
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION

Ich suche nun ein "DAU-Beispiel", an dem ich möglichst schnell sehen kann, wo der Fehler liegt. Ich möchte auch nicht auf einem realen Gerät testen, sondern vorerst nur auf dem Emulator. Es scheint irgendwie, dass dort keine Daten ankommen. Am besten wäre es, wenn jemand ein Beispiel bei sich laufen hat, was korrekt ist und welches auf Werte über Eclipse oder Telnet reagiert.

Im voraus vielen Dank
 
das hier läuft bei mir (emu und handy):

Code:
package test.de;

import java.io.IOException;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

public class GPSTest extends Activity {
    
    private LocationManager locManager = null;
    private LocationListener locListener = null;
    
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        
        locListener = new LocationListener() {
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                Toast.makeText( getApplicationContext(), "Status changed: " + provider + "[" + status + "]", Toast.LENGTH_SHORT ).show();
            }
            
            @Override
            public void onProviderEnabled(String provider) {
                Toast.makeText( getApplicationContext(), "Gps Disabled: " + provider, Toast.LENGTH_SHORT ).show();
            }
            
            @Override
            public void onProviderDisabled(String provider) {
                Toast.makeText( getApplicationContext(), "Gps Enabled: " + provider, Toast.LENGTH_SHORT ).show();
            }
            
            @Override
            public void onLocationChanged(Location location) {
                Double latitude = location.getLatitude();
                Double longitude = location.getLongitude();
                String Text = "Current location: " + "Lat=" + latitude.toString() + " Long=" + longitude.toString();
                Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
            }
        };
        
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locListener);

        /*
        for (String provider: locManager.getAllProviders()) {
            System.out.println(provider);
            Location loc = locManager.getLastKnownLocation(provider);
            if (loc != null) {
                Double latitude = loc.getLatitude();
                Double longitude = loc.getLongitude();
                String Text = "Current location for provider " + provider + ": " + "Lat=" + latitude.toString() + " Long=" + longitude.toString();
                Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();                
            }
        }
        */
        
        Location loc = locManager.getLastKnownLocation("gps");
        if (loc != null) {
            Double latitude = loc.getLatitude();
            Double longitude = loc.getLongitude();
            Geocoder geo = new Geocoder(this);
            if (geo != null) {
                List<Address> addresses;
                try {
                    addresses = geo.getFromLocation(latitude, longitude, 1);
                    if (addresses.size() > 0) {
                        /*
                        System.out.println(addresses.get(0).getLocality());
                        String text = "Current location for provider " + "gps" + ": " + addresses.get(0).getLocality();
                        Toast.makeText( getApplicationContext(), text, Toast.LENGTH_SHORT).show();
                        Toast.makeText( getApplicationContext(), addresses.get(0).getSubLocality(), Toast.LENGTH_SHORT).show();
                        Toast.makeText( getApplicationContext(), addresses.get(0).getThoroughfare(), Toast.LENGTH_SHORT).show();
                        Toast.makeText( getApplicationContext(), addresses.get(0).getSubThoroughfare(), Toast.LENGTH_SHORT).show();
                        Toast.makeText( getApplicationContext(), addresses.get(0).getPostalCode(), Toast.LENGTH_SHORT).show();
                        Toast.makeText( getApplicationContext(), addresses.get(0).getPhone(), Toast.LENGTH_SHORT).show();
                        */
                        
                        /*
                        Toast.makeText( getApplicationContext(), addresses.get(0).getMaxAddressLineIndex(), Toast.LENGTH_SHORT).show();
                        if (addresses.get(0).getMaxAddressLineIndex() > 0) {
                            Toast.makeText( getApplicationContext(), addresses.get(0).getAddressLine(0), Toast.LENGTH_SHORT).show();
                        }
                        */
                        
                        String text = addresses.get(0).getThoroughfare() + "\n" +
                                      addresses.get(0).getPostalCode() + " " + addresses.get(0).getLocality();
                        Toast.makeText( getApplicationContext(), text, Toast.LENGTH_LONG).show();
                    }
                } 
                catch (IOException e) {
                    e.printStackTrace();
                }

            }
            /*
            else {
                String Text = "Current location for provider " + "gps" + ": " + "Lat=" + latitude.toString() + " Long=" + longitude.toString();
                Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
            }
            */
        }
        

    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (locManager != null) {
            locManager.removeUpdates(locListener);
            locManager = null;
        }
    }

}
 
  • Danke
Reaktionen: schneseb
Hallo Tom,

danke für das Beispiel - ich werde es bis zum Wochenende getestet haben und dann Rückmeldung geben können.
 
So, nun möchte ich noch eine Rückmeldung geben. Ich habe dein Programm bei mir laufen lassen und es tut sich leider nichts. Wenn ich es ausführe startet korrekt der Emulator. In dem DDMS Perspektive kann ich leider keine Koordinaten eingeben. Per Telnet kann ich mich zum Emulator verbinden und der wird mir auch unter Devices (DDMS) als online angezeigt.

Wenn alles gestartet ist und ich den Screen per "rechtswisch" mit der Maus freigebe sehe ich den Titel "ShowLocation" und dann

Latitude: unknown
Longitute: unknow

wenn ich mich nun per Telnet verbinde und Koordinate per geo fix übermittle, dann bekomme ich zwar immer ein "OK", aber es ändert sich nichts. Nach kurzer Zeit allerdings scheint der Emulator nicht mehr zu wollen und ich bekomme ewig lange das "android" logo zu sehen.

Irgendwas scheint hier gar nicht zu funktionieren, ich denke mittlerweile es ist nicht der Code, sondern irgendwas anderes - ich weiß nur leider nicht was.

Ich habe jetzt auch extra noch bei dem Device ein GPS support auf true gesetzt, ändert nur auch gar nichts.

Wenn es hier noch Tipps gibt, immer gerne her damit :)

Thx!
 
So ich noch einmal.

Ich habe nun dein Programm mal auf mein Tablet installiert und bin dann nach draußen. Ja es funktioniert, ich hatte gar nicht so auf den Code geachtet, das Update erfolgt ja nicht in den oben beschriebenen Werten.

Nur warum will der Emulator nicht?...
 

Ähnliche Themen

S
Antworten
4
Aufrufe
995
Sempervivum
S
O
Antworten
15
Aufrufe
2.973
ORHUX
O
A
Antworten
1
Aufrufe
642
swa00
swa00
Zurück
Oben Unten