GPS Current Location

I want to display my current location, but it shows me the latitude and longitude that I set on the command line! If I don't set the parameters on the command line, this will show me the latitude and longitude included in Eclipse!

Does anyone have an idea? I am testing AVD.

I did a test to find out if my location is turned on, but it’s not. I do not know why this is so.

This is my code:

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()); } } } 

Thanks!

+6
source share
3 answers

If your PC / Mac does not have GPS, AVD is not able to detect your location. Test your program on a real device or manually enter values.

+1
source

Open Virtual Device Manager and click Edit. In the "Hardware" section, click "Create" and add GPS support and change the value to "true". Now run the emulator and open the console. If the emulator boots up to the full type in the telnet localhost 5554 console. When the telnet connection is established, you can insert the following places: geo fix 21.42 42

+4
source

To add to the existing answers, if you really need to test the functionality of your emulator, you can use the location layout. You can find more details here http://developer.android.com/guide/topics/location/obtaining-user-location.html#MockData .

Keep in mind that for this you must add the necessary permissions (ACCESS_MOCK_LOCATION).

Hope this helps!

+3
source

Source: https://habr.com/ru/post/904382/


All Articles