Я создал программу, которая отображает mapView с указанием местоположения телефона и возможностью отправки этого местоположения (широта, долгота) по электронной почте.(чтобы добавить некоторые места в базу данных).
Я использую класс LocationManager и методы getLatitude / getLongitude для определения местоположения телефона.Мой код выглядит следующим образом:
double MyLongitude = 0;
double MyLatitude = 0;
Location location = null;
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, new ShowLocation());
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
MyLatitude = location.getLatitude();
MyLongitude = location.getLongitude();
При тестировании моего приложения на эмуляторе все в порядке: mapView отображает местоположение, которое я исправил (используя команды telnet и geo fix), и я могу отправить местоположение по электронной почте,Я получаю тот же результат по телефону от друга;кажется, все работает хорошо.
Проблема на моем телефоне.Я могу отобразить свое местоположение на mapView (маленький синий круг), но когда я пытаюсь отправить свое местоположение по электронной почте, широта и долгота были равны 0.
Вот код для отображения моего местоположенияна карте:
MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView);
myLocation.enableMyLocation();
Я не понимаю, почему мое местоположение, кажется, работает, когда отображается, но я не могу получить правильную широту и долготу, в то время как это, кажется, работает на эмуляторе и телефоне моего друга.
Это из-за отсутствия кода или чего-то в этом роде?Это проблема с моим телефоном?Я проверил разрешения, и у меня уже есть нужные:
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
Я также попытался проверить с LocationManager.NETWORK_PROVIDER вместо LocationManager.GPS_PROVIDER, но получил тот же результат.