Неверное текущее местоположение GPS на Android - PullRequest
0 голосов
/ 09 января 2012

Я тестирую текущее приложение определения местоположения GPS, используя samsung spica 1.5, но оно не отображает мое текущее местоположение, оно просто показывает мне другое местоположение.

Вот мой код:

public class MaptestActivity extends MapActivity implements LocationListener {
     private MapView mapView = null;
        private LocationManager lm = null;
        private double lat = 0;
        private double lng = 0;
        private MapController mc = null;
        private MyLocationOverlay myLocation = null;
        private String current;
        private PositionMarkersList positionMarkersList = 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(15);





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


            }

        }); 

        mapView.getOverlays().add(myLocation);
        GeoPoint pp=myLocation.getMyLocation();

        //addPosition(pp); 
        if (myLocation.isMyLocationEnabled()!=false)
        {
            GeoPoint p =myLocation.getMyLocation();
            lat= p.getLatitudeE6();
            lng= p.getLongitudeE6();
            Toast.makeText(getBaseContext(),
                     "geolocalisation activÈ lat: "+lat+ " long: " +lng,
                     Toast.LENGTH_SHORT).show();
        }
        else
        {

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



        }

        @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;
        }
        return super.onKeyDown(keyCode, event);
        }

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

        public void onProviderDisabled(String provider) {
        }

        public void onProviderEnabled(String provider) {
        }

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


 //ajout d'une position

        private void addPosition(GeoPoint geoPoint) {
            OverlayItem overlayitem = new OverlayItem(geoPoint, current, current);
            positionMarkersList.addMarker(overlayitem);
        }

}

Кто-нибудь имеет представление об этом, пожалуйста?

Когда я нажимаю «Выполнить», чтобы протестировать приложение, у меня появляется список средств для тестирования (виртуальные устройства ...), но появляется «!» возле названия телефона и я не знаю почему.

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 января 2012

убедитесь, что в вашем AndroidManifest.xml указаны правильные разрешения для служб определения местоположения !!!

GPS: ACCESS_FINE_LOCATION

WIFI: ACCESS_COARSE_LOCATION

Все разрешения: можно найти здесь

1 голос
/ 06 апреля 2012
public Location getCurrentLocation() {
    try {

        LocationManager lm = (LocationManager)     getSystemService(Context.LOCATION_SERVICE);
        // ---Get the status of GPS---
        boolean isGPS = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

        // If GPS is not enable then it will be on
        if (!isGPS) {
            Intent intent = new Intent(
                    "android.location.GPS_ENABLED_CHANGE");
            intent.putExtra("enabled", true);
            sendBroadcast(intent);
        }

        Location location = lm
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location == null) {
            location = lm
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        }
        return location;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
1 голос
/ 09 января 2012

Вы должны сделать виртуальное устройство с Google API.

Кроме того, где отображается местоположение вашего устройства, могу ли я узнать, насколько далеко отображаемое местоположение на карте от вашего текущего местоположения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...