2011-12-23 22 views
6

Desidero visualizzare la posizione corrente, ma mi mostra la latitudine e la longitudine impostate sulla riga di comando. Se non ho impostato i parametri sulla riga di comando, mi mostra la latitudine e la longitudine incluse in Eclipse!posizione corrente gps android

C'è qualcuno che ha un'idea a riguardo? Sto testando con AVD.

Ho fatto un test per vedere se la mia posizione è abilitata, ma non lo è. Non sono sicuro del perché sia ​​così.

Questo è il mio codice:

package com.manita.mapuse; 


import java.io.InputStream; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.widget.Toast; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.MyLocationOverlay; 



public class MapuseActivity extends MapActivity implements LocationListener { 

    private MapView mapView = null; 
     private LocationManager lm = null; 
     private double lat = 0; 
     private double lng = 0; 
     private double alt = 0; 
     private MapController mc = null; 
     private MyLocationOverlay myLocation = null; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mapView = (MapView) this.findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 

     lm = (LocationManager) this.getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, 
      this); 

     mc = mapView.getController(); 
     mc.setZoom(10); 

     myLocation = new MyLocationOverlay(getApplicationContext(), mapView); 
     myLocation.runOnFirstFix(new Runnable() { 
      public void run() { 
      mc.animateTo(myLocation.getMyLocation()); 
      mc.setZoom(10); 
      } 
     }); 


     LocationManager locationManager; 
     String context = Context.LOCATION_SERVICE; 
     locationManager = (LocationManager)getSystemService(context); 
     String provider = LocationManager.GPS_PROVIDER; 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
     Location location = locationManager.getLastKnownLocation(provider); 
     locationManager.getProvider(provider); 
     if(!locationManager.isProviderEnabled(provider)){ 
      locationManager.setTestProviderEnabled(provider, true); 
      } 
      boolean enabled = locationManager.isProviderEnabled(provider); 
      if(enabled){ 

       Toast.makeText(getBaseContext(), 
         "provide enabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 

      } 
      else{ 
       Toast.makeText(getBaseContext(), 
         "provider disabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 

      } 
      if(location!=null){ 
       lat = location.getLatitude(); 
       lng = location.getLongitude(); 
       alt = location.getAltitude(); 
       Toast.makeText(getBaseContext(), 
         "providerrr enabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       Toast.makeText(getBaseContext(), 
         "location not found : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 
      } 



     mapView.getOverlays().add(myLocation); 
     if (myLocation.isMyLocationEnabled()!=false) 
     { 
      GeoPoint p =myLocation.getMyLocation(); 
      lat= p.getLatitudeE6(); 
      lng= p.getLongitudeE6(); 
      alt = location.getAltitude(); 
      Toast.makeText(getBaseContext(), 
        "geolocalisation activé lat: "+lat+ " long: " +lng +" Altitude = " + alt, 
        Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 

      Toast.makeText(getBaseContext(), 
        "geolocalisation desactivée" , 
        Toast.LENGTH_SHORT).show(); 
     } 

     // appel de la fonction insert values 
     insertvalues(lat, lng); 
     } 

     @Override 
     protected void onResume() { 
     super.onResume(); 
     myLocation.enableMyLocation(); 
     myLocation.enableCompass(); 
     } 

     @Override 
     protected boolean isRouteDisplayed() { 
     return false; 
     } 

     @Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_S) { 
      mapView.setSatellite(!mapView.isSatellite()); 
      return true; 
     } 
     if (keyCode == KeyEvent.KEYCODE_T) { 
      mapView.setSatellite(!mapView.isTraffic()); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
     } 

     @Override 
     public void onLocationChanged(Location location) { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     Toast.makeText(
      getBaseContext(), 
      "Location change to : Latitude = " + lat + " Longitude = " 
       + lng, Toast.LENGTH_SHORT).show(); 
     GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
     mc.animateTo(p); 
     mc.setCenter(p); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

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


     ///// insert valeurs .... 
     public void insertvalues(double lat, double lng){ 




      //http post c à d envoi des données 
      try{ 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new 

       HttpPost("http://www.pizza-paris.com/clic/marwa/test/form.php?latitude="+lat+"&longitude="+lng); 

       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       InputStream is = entity.getContent(); 
       Log.i("postData", response.getStatusLine().toString()); 

      } 

      catch(Exception e) 
      { 
       Log.e("log_tag", "Error in http connection "+e.toString()); 
      }  


      } 
} 

Grazie!

+0

gps non funziona in un emulatore. Prova il tuo codice su un dispositivo reale. – Snicolas

+0

Si prega di controllare questo link può aiutare. [Posizione GPS nell'emulatore Android] (http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator) –

+0

grazie Sniche mybe la tua risposta è quello che sto cercando ma come posso ottenere il file apk ??? –

risposta

1

A meno che il PC/Mac non disponga di GPS, AVD non è in grado di rilevare la posizione. Metti alla prova il tuo programma con un dispositivo reale o inserendo i valori manualmente.

+0

Grazie mille :) –

+0

Oppure usa 'geo fix' http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator –

4

Apri il tuo gestore di dispositivi virtuali e fai clic su Modifica. Nella sezione Hardware fai clic su Nuovo e aggiungi il supporto GPS e cambia il valore su vero. Adesso avvia l'emulatore e apri una console. Se l'emulatore è stato avviato, digitare il tipo nella console telnet localhost 5554. Quando la connessione viene stabilita telnet si può mettere in luoghi come questo: geo fix 21.42 42

+0

sì, si ottiene la posizione che ho impostato su localhost ma voglio che mostri la mia posizione attuale che significa dove sono ora !!! –

+0

Scopri quali sono le tue coordinate attuali e inseriscile usando 'geo fix' o vai a comprare un android. –

3

Per aggiungere alle risposte esistenti, se si ha realmente bisogno per verificare la funzionalità sul vostro emulatore è possibile utilizzare posizioni simulate. Più potete trovare qui http://developer.android.com/guide/topics/location/obtaining-user-location.html#MockData.

Ricordare che è necessario aggiungere l'autorizzazione richiesta per questo (ACCESS_MOCK_LOCATION).

Spero che questo aiuti!

+0

sì, l'ho fatto ma voglio che mostri la mia posizione attuale, non la posizione nel simulato !!! –

+0

Allora hai bisogno di uno smartphone con gps o un gps con il tuo pc. –

+0

si !! la versione della mia app è 7 !! posso provarlo con iphone ?? –

Problemi correlati