У меня есть несколько вопросов (пока) с LocationManager для Android и GPS в целом. Не стесняйтесь отвечать на любое количество вопросов ниже, и я заранее благодарен за вашу помощь! (Я заметил, что этот материал не очень хорошо задокументирован, так что, надеюсь, эти вопросы помогут и другим!)
1) Я использую следующий код, но я думаю, что здесь может быть дополнительный пух, который мне не нужен. Можете ли вы сказать мне, если я могу удалить что-нибудь из этого?
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
LocationProvider locationProvider = lm.getProvider("gps");
Location currentLocation = lm.getLastKnownLocation(locationProvider.getName());
2) Есть ли способ удержаться на последнем шаге (доступ к getLastKnownLocation) до тех пор, пока я не уверен, что у меня есть блокировка GPS? Что произойдет, если это вызывается и GPS все еще ищет сигнал?
3) Самое главное, я хочу убедиться, что у меня есть блокировка GPS, прежде чем перейти к следующему методу, так есть ли способ проверить, заблокирован ли GPS и актуально ли getLastKnownLocation?
4) Есть ли способ «отключить» прослушиватель GPS, как только он получит блокировку и getLastKnownLocation обновится? Я не вижу необходимости сохранять это работающим для моего приложения после получения блокировки ..
5) Не могли бы вы подтвердить мое предположение, что «getLastKnownLocation» часто обновляется при перемещении получателя?
6) В моем коде у меня также есть класс с именем " MyLocationListener " (код ниже), который я, честно говоря, просто взял из другого примера ... Нужно ли это на самом деле? Я предполагаю, что это обновляет мой диспетчер местоположений всякий раз, когда местоположение меняется, но не похоже, что в самом классе есть что-то особенное!
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
//Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}