Чтобы получить значение GPS часто Android? - PullRequest
0 голосов
/ 02 февраля 2012

Привет, я разрабатываю приложение для получения значения Gps, которое прекрасно работает. Но я столкнулся с некоторой проблемой

проблема

1. когда мобильный телефон заблокирован экраном

2.при включении мобильного телефона в выключатель

3. когда индикатор мобильного дисплея выключен

MyRequirements

В любое время, когда я хочу получить значение GPS, за исключением того, что мобильный выключен

 Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, true);
networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (networkLoc != null) {
double l = (double) (networkLoc.getLatitude());
double lng11 = (double) (networkLoc.getLongitude());
latituteField1.setText(Double.toString(l));
 longitudeField1.setText(Double.toString(lng11));
 } 
 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
  }
  @Override
  protected void onResume() {
super.onResume();

locationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 
        MINIMUM_TIME_BETWEEN_UPDATES, 
        MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
        this
    );
    }
   @Override
  protected void onPause() {
super.onPause();
locationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 
        MINIMUM_TIME_BETWEEN_UPDATES, 
        MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
        this
   );
   }
@Override
  public void onLocationChanged(Location location) {
lat1 = (double) (networkLoc.getLatitude());
lng1 = (double) (networkLoc.getLongitude());
  latituteField1.setText(Double.toString(lat1));
  longitudeField1.setText(Double.toString(lng1));      
  }
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {

  }
   @Override
  public void onProviderEnabled(String provider) {
Toast.makeText(this, "Enabled new provider " + provider,
        Toast.LENGTH_SHORT).show();
       }

    @Override
  public void onProviderDisabled(String provider) {
Toast.makeText(this, "Disenabled provider " + provider,
        Toast.LENGTH_SHORT).show();
   }

Ответы [ 2 ]

0 голосов
/ 03 февраля 2012

Обычно устройство выключает экран через некоторое время, а затем и процессор. Если это произойдет, вы больше не будете получать обновления от GPS. Чтобы предотвратить такое поведение, вам нужно приобрести WakeLock.

Wakelocks описаны здесь: http://developer.android.com/reference/android/os/PowerManager.html

А вот еще одна статья о WakeLocks: Как заставить работать Android WakeLock?

0 голосов
/ 02 февраля 2012

Вы можете использовать TimerTask Class и Android's Alarm Class.В методе TimerTask's Run продолжайте извлекать данные GPS на определенном интервале (допустим, каждую минуту).И используйте Alarm Класс для закрытия LocationListener Класс & Открытие на каждый час.Таким образом, ваше приложение будет работать очень эффективно.Я использовал то же самое для моего приложения.Для автоматического запуска при включении мобильного телефона вы можете использовать службы Android.

Пример TimerTask: здесь .Пример AlarmManager: здесь .

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