Я пишу программу клиентского сервера, который клиент дает свое местоположение серверу, и сервер показывает это. У меня есть класс, чтобы получить широту и долготу местоположения. У меня есть таймер для извлечения места каждые 2 секунды. Но я получаю эту ошибку: Невозможно создать обработчик внутри потока, который не называется Looper.prepare()Невозможно создать обработчик ... Looper.prepare()
Вот мой таймер внутри метода OnCreate:
time.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
GetLocation();
}
}, 0, sampling_interval);
}
А вот метод GetLocation:
private void GetLocation(){
gps = new GPSTracker(MainActivity.this);
// check if GPS enabled
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
Log.d("Latitude", Double.toString(latitude));
}else{
gps.showSettingsAlert();
}
}
Проблема: gps = новый GPSTracker (MainActivity.this); Если я поместил эту строку в MainActivity, нет проблем, но проблема в том, что я не получаю обновленное местоположение, я просто получаю такое же местоположение, потому что он создан только один раз. Таким образом, эта строка должна быть внутри метода GetLocation(), который я могу получить обновленным местоположением каждый раз, когда таймер вызывает его.
Любая помощь?
используйте Create Handler в MainActivity и используйте handler.post для вызова вышеуказанного метода, потому что для доступа за пределами MainActivity вам нужен контекст – Pragnani