GPS-Simulator KML, GPX

C

c0s4n

Neues Mitglied
0
Hallo Android Freunde,

ich schreibe bereits das 3te mal, hoffe dieses mal auf eine Hife und es mich wenigstens weiterbringen kann.
Ich versuche seit Tagen die GPS nachzusimulieren. Im DDMS kann man KML File laden, in der KML File die Waypoint vorgeben und anhand von locationListener diese ablesen. Ich habe jetzt, meiner Meinung nach, alles versucht um dies zuverwirklichen, jedoch erstmal ohne Erfolg. Das Normale GPS, was mir ein Satellit gibt, funktioniert, da möchte ich nicht mekern (nicht dass ich mich garnicht auskenne :))
Mit dem Simulator gibt es jedoch Probleme, der LocationListener liefert mir immer 0, wenn ich getLat und getLon aurufe. KML-File laden, funzt ohne probleme und mir werden alle waypoints angzeigt (die ich natürlich selbst festgelegt habe).
Weis evtl einer woran das liegen kann? Ich habe das mini programm mit Google Api Key erstellt, auch ohne die Api versucht in beiden Fällen bekomme ich das gleiche als Antwort, nehmlich 0,0.
Ich poste mal mein Code hier rein und hoffe dass einer so was schon mal gemacht hat und mir ein Ratschlag geben kann:
Code:
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
        tvLatitude = (TextView)findViewById(R.id.tvLatitude);
        tvLongitude = (TextView)findViewById(R.id.tvLongitude);
        
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);



        
        // Get Location Services
        this.lm = (LocationManager) getApplicationContext().getSystemService(
                Context.LOCATION_SERVICE);

//        Location loc = lm.getLastKnownLocation("gps");
//        // fill in the TextViews
//        tvLatitude.setText(Double.toString(loc.getLatitude()));
//        tvLongitude.setText(Double.toString(loc.getLongitude()));
        // ask the Location Manager to send us location updates
        locListenD = new DispLocListener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListenD);
        

        
    }

    
    
    private class DispLocListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            // update TextViews
            tvLatitude.setText("Hallo");
            tvLongitude.setText("" + location.getLongitude());
        }

        @Override
        public void onProviderDisabled(String provider) {
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    }
    
    @Override
    public void onPause() {
        super.onPause();
        lm.removeUpdates(locListenD);
    }

    /**
     * Resume location updates when we're resumed
     */
    @Override
    public void onResume() {
        super.onResume();
        lm.requestLocationUpdates("gps", 30000L, 10.0f, locListenD);
    }
 
Ich denke, dass du ihm ein Zeitintervall und eine Meterangabe liefern mußt
anstatt:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListenD);

also
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10, locListenD);

Leider äuft mein Code mit deinem Hinweis nicht.
 
was möchtest du genau machen? GPS vom Satelit empfangen? Wenn ja?
Hast du in der manifest.xml
Ganz unten bevor das </manifest> steht

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

geschrieben?

Das konnte der Grund bei dir sein.

Ich glaube nicht, dass es daran liegt.
In der this.locationManager.requestLocationUpdates,gibst du mit 2 Diesen werten, erstmal die Zeit (nach welchen Abständen die GPS-Upgedatet wird), Streecke (nach der die GPS updaten soll). Aber danke für den Tip ich teste gleich ;).
 
Zuletzt bearbeitet:
Jetzt habe ich den Code verändert.
Probier ihn doch bitte mal aus.
http://web29.hosting.bndlg.de/HelloGPSLocation.zip


super .onCreate(savedInstanceState);
setContentView(R.layout.main);
muss am Anfang von onCreate stehen.

Immerhin kommt jetzt die Fehlermeldung:
"No location found."

Na dann auf ein Neues!
 
Hast du den Code schon probiert?
Ich sitze in einem Providerloch. Mein Netz ist hier, an diesem Ort sehr schlecht.
Teste doch mal!
 
Ich habe den Code noch nicht probiert, aber werde es morgen testen und schauen was passiert, heute leider keine Zeit mehr für. Sorry. Also bis morgen abwarten ;)
 
Der HelloGPsLocator funktioniert.
Man muß allerdings die Settings des Handys ändern und GPS-Empfang zulassen.

package de.photochallenge.HelloGPSLocation;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.widget.TextView;
public class HelloGPSLocation extends Activity {
volatile Location curLocation = null;
private LocationManager mLocationManager;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
curLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,100,1,gpsListener);

updateWithNewLocation(curLocation);
}


private void updateWithNewLocation(Location mLocation) {
String mText;

TextView myLocationText;
myLocationText = (TextView)findViewById(R.id.myLocationText);

if(mLocation != null){
double lat = mLocation.getLatitude();
double lng = mLocation.getLongitude();
String prov = mLocation.getProvider () ;

mText = "Latitude:" + lat + "\nLongitude:" + lng + "Provider:" + prov;
}
else {
mText = "No location found.";
}
myLocationText.setText(mText);
}

private final LocationListener gpsListener = new LocationListener(){

public void onLocationChanged(Location curLocation){
updateWithNewLocation(curLocation);
}

public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}

public void onProviderEnabled(String provider){}
public void onStatusChanged(String provider, int status, Bundle extras){}
};
}
 
Grüß euch,
ich bin auch dabei mit GPS rumzuprobieren und hab glaub ich das gleiche Problem wie ihr. Immer wenn ich die Koordinaten über DDMS ändern will, dann kriegt mein Emulator nur die Werte 0,0 übermittelt.
Du hast jetzt gesagt, dass es bei dir funktioniert. Kannst vllt nochmal a bissal genauer erzählen, was du gemacht hast? Bei meinem Gerät hab is "hw.gps = yes"...
Viele Grüße
 
Ich habe dir den Code hinterlegt.
http://web-schlagbauer.de/HelloGPSLocation.zip

Ich habe ein g1
Man muss ins Menü gehen.
Settings aufrufen
Dann Security+Locations
=> Enable GPS Satelites

Du mußt einige Zeit im Freien sein und ein bißchen rumlaufen.

Ich habe den ganzen Vormittag programmiert und jetzt ist der Akku
für die nächste Zeit hinüber.
Viel Erfolg!
 
da haben wir uns glaub ich a bissal falsch verstanden. Ich red von keinem richtigen Gerät, sondern von dem Emulator der beim SDK dabei is. Wenn ich da die Koordinaten eingeb, dann kriegt mein Handy (also das virtuelle) nur die Werte 0.0 übermittelt.
Ein Android-Handy hab ich leider (noch) nicht. von daher kann ich nicht testen, ob es am Code oder an der Entwicklungsumgebung liegt.
Grüße
 
Nun am Emulator geht das nicht.
Ohne Handy ist das nicht hinzubekommen.
Der Emulator taugt nicht viel.
 
Zuletzt bearbeitet:
Ich würde mir auf jeden Fall ein Handy mit einem druckempfindlichen Touchscreen kaufen. Das G1 ist schwer zu bedienen, da man immer mit der Breitseite der Finger über den virtuellen Button fahren muss und dann noch eine Verzögerung in Kauf nehmen muss.
Zu Beachten ist auch, dass bei diesem Handy der Datenschutz nicht gewährleistet ist.
Viel Erfolg und schöne Weihnachten
 

Ähnliche Themen

S
Antworten
8
Aufrufe
512
swa00
swa00
H
Antworten
2
Aufrufe
933
swa00
swa00
W
  • washpuda
Antworten
10
Aufrufe
1.258
swa00
swa00
Zurück
Oben Unten