クライアントがサーバーにその場所を提供し、サーバーがそれを表示するクライアントサーバープログラムを作成しています。場所の緯度と経度を取得するクラスがあります。2秒ごとに場所を取得するタイマーがあります。しかし、私はこのエラーを受け取ります: 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 = new GPSTracker(MainActivity.this); この行を MainActivity 内に配置しても問題はありませんが、問題は更新された場所を取得できないことです。一度しか作成されないため、同じ場所を取得するだけです。したがって、この行は GetLocation() メソッド内にある必要があり、タイマーが呼び出すたびに更新された場所を取得できます。
何か助けはありますか?