0

クライアントがサーバーにその場所を提供し、サーバーがそれを表示するクライアントサーバープログラムを作成しています。場所の緯度と経度を取得するクラスがあります。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() メソッド内にある必要があり、タイマーが呼び出すたびに更新された場所を取得できます。

何か助けはありますか?

4

1 に答える 1