Я следил за это для получения координат местоположения каждые 10 секунд
Итак, теперь я хочу изменить действие на службу, чтобы я запускал ее как фоновую службу для получения обновлений о местоположении каждые 10 секунд...
Но здесь я изменил метод UpdateUI()
private void updateUI() {
mLatitudeTextView.setText(String.format("%s: %f", mLatitudeLabel,
mCurrentLocation.getLatitude()));
mLongitudeTextView.setText(String.format("%s: %f", mLongitudeLabel,
mCurrentLocation.getLongitude()));
mLastUpdateTimeTextView.setText(String.format("%s: %s", mLastUpdateTimeLabel,
mLastUpdateTime));
}
to
private void updateUI() {
try{
mlatitude = String.valueOf(mCurrentLocation.getLatitude());
mlongitude = String.valueOf(mCurrentLocation.getLongitude());
}
catch(Exception e){
Toast.makeText(this,"Location Not Found",Toast.LENGTH_LONG).show();
}
}
И я поджариваю эти значения в onStartCommand()
, и я дал команду запуска, подобную этой
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
buildGoogleApiClient();
mRequestingLocationUpdates = true;
updateUI();
return mStartMode;
}
Но здесь он запускается только в первый раз, не отображает значения и не получает обновлений или не запускается каждые 10 секунд.
Однако в действии все работает нормально, я получаю обновления местоположения каждые 10 секунд...
Может ли кто-нибудь предложить, как дать то же самое в сервисе... чтобы я получал обновления
Обновление 1: чтобы запускать службу каждые 10 секунд, я добавил это...
private final Integer TEN_SECONDS = 10000;
public void sendSendLocation() {
new Handler().postDelayed(new Runnable() {
public void run () {
updateUI();
new Handler().postDelayed(this, TEN_SECONDS);
}
},TEN_SECONDS);
}
Но здесь местоположение отображает нулевое значение... Может ли кто-нибудь предложить мне...
Обновление 2:
На самом деле, мне нужно добавить updateValuesFromBundle(savedInstanceState)
в OnStartCommand
, если я его добавлю... Служба будет работать. Но, следовательно, это услуга, которую я не могу оказать Bundle savedInstanceState
...
private void updateValuesFromBundle(Bundle savedInstanceState) {
Log.i(TAG, "Updating values from bundle");
if (savedInstanceState != null) {
// Update the value of mRequestingLocationUpdates from the Bundle, and make sure that
// the Start Updates and Stop Updates buttons are correctly enabled or disabled.
if (savedInstanceState.keySet().contains(REQUESTING_LOCATION_UPDATES_KEY)) {
mRequestingLocationUpdates = savedInstanceState.getBoolean(
REQUESTING_LOCATION_UPDATES_KEY);
setButtonsEnabledState();
}
// Update the value of mCurrentLocation from the Bundle and update the UI to show the
// correct latitude and longitude.
if (savedInstanceState.keySet().contains(LOCATION_KEY)) {
// Since LOCATION_KEY was found in the Bundle, we can be sure that mCurrentLocation
// is not null.
mCurrentLocation = savedInstanceState.getParcelable(LOCATION_KEY);
}
// Update the value of mLastUpdateTime from the Bundle and update the UI.
if (savedInstanceState.keySet().contains(LAST_UPDATED_TIME_STRING_KEY)) {
mLastUpdateTime = savedInstanceState.getString(LAST_UPDATED_TIME_STRING_KEY);
}
updateUI();
}
}
Итак, я бегу UpdateUI()
прямо в OnStartCommand()
на службе
Кто-нибудь предложит мне на этот вид?