Я только начал играть с Android-устройством и испытываю проблемы с получением обновлений от приемника GPS.
Во-первых, код, поэтому вы можете проверить, правильно ли я делаю все:
В AndroidManifest.xml у меня есть:
<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
Слушатель местоположения определяется как частный член Activity:
private LocationListener mLocationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location pLocation) {
double lLatitude = pLocation.getLatitude();
double lLongitude = pLocation.getLongitude();
mGpsTextView.setText ("Longitude" + Double.toString(lLongitude) + " Latitude: " + Double.toString(lLatitude));
}
@Override
public void onProviderDisabled(String provider) {
mGpsTextView.setText ("Provider disabled");
}
@Override
public void onProviderEnabled(String provider) {
mGpsTextView.setText ("Provider enabled");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status)
{
case LocationProvider.OUT_OF_SERVICE:
mGpsTextView.setText("GPS out of service");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
mGpsTextView.setText("GPS temorarily unawalible");
break;
case LocationProvider.AVAILABLE:
mGpsTextView.setText("GPS avalible");
break;
default:
mGpsTextView.setText("GPS crazy");
}
}
};
В методе onResume я получаю LocationManager и регистрирую слушателя:
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0.0f, mLocationListener);
В "onPause" я удаляю прослушиватель
mLocationManager.removeUpdates(mLocationListener);
Затем, когда я тестирую код на эмуляторе с geo fix - все работает отлично. Но когда я развертываю свое приложение по телефону, код не работает так, как должен. Когда поставщик отключен, текст в "mGpsTextView" отключен "провайдер" - так что это нормально. Но когда я запускаю приложение с включенным gps-провайдером, текст в "mGpsTextView" и никакие обновления не возвращаются (проверяется с помощью отладчика - onLocationChanges не вызывается).
Любая идея, что может быть неправильным?
Почему вы используете Sensor.TYPE_ACCELEROMETER?
Это должно быть примерно так:
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 100.0f, locationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0.0f, locationListener);