1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

GPS-Simulator KML, GPX

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von c0s4n, 09.12.2009.

  1. c0s4n, 09.12.2009 #1
    c0s4n

    c0s4n Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    03.11.2009
    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);
        }
    
     
  2. Janakar, 09.12.2009 #2
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    Zuletzt bearbeitet: 09.12.2009
  3. Janakar, 09.12.2009 #3
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    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.
     
  4. c0s4n, 09.12.2009 #4
    c0s4n

    c0s4n Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    03.11.2009
    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: 09.12.2009
  5. Janakar, 09.12.2009 #5
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    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!
     
  6. Janakar, 10.12.2009 #6
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    Hast du den Code schon probiert?
    Ich sitze in einem Providerloch. Mein Netz ist hier, an diesem Ort sehr schlecht.
    Teste doch mal!
     
  7. c0s4n, 10.12.2009 #7
    c0s4n

    c0s4n Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    03.11.2009
    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 ;)
     
  8. Janakar, 15.12.2009 #8
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    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){}
    };
    }
     
  9. Android1984, 20.12.2009 #9
    Android1984

    Android1984 Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    20.12.2009
    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
     
  10. Janakar, 20.12.2009 #10
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    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!
     
  11. Android1984, 20.12.2009 #11
    Android1984

    Android1984 Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    20.12.2009
    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
     
  12. Janakar, 20.12.2009 #12
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    Nun am Emulator geht das nicht.
    Ohne Handy ist das nicht hinzubekommen.
    Der Emulator taugt nicht viel.
     
    Zuletzt bearbeitet: 20.12.2009
  13. Janakar, 21.12.2009 #13
    Janakar

    Janakar Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2009
    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
     

Diese Seite empfehlen