ユーザーが数分間(たとえば10分間)静止している場合にユーザーに警告するアプリを作成しています。
デバイスが特定の距離を移動した場合に関数をトリガーする LocationListener を使用すると、モーションを簡単に検出できます。
しかし、私は何か違うものを望んでいます。デバイスが一定時間動かなかった場合に呼び出される関数が必要です。
どうすればこれを達成できますか?
このコードが機能するかどうかはわかりませんが、テストしていませんが、通常、現在の場所を取得する必要があります。次に、タイマーを使用して、まだ同じ場所にあるかどうかを 10 分で確認します。そうでない場合は、インテントを使用して新しいアクティビティを開始します。
private double locationcheck;
locationcheck = this.getcurrentlocation();
public double[] getcurrentlocation(){
double[] locations= new String[2];
l = lm.getLastKnownLocation(providers.get(i));
locations[0] = l.getLatitude();
locations[0] = l.getLongitude();
return
}
次に、このメソッドを使用して確認します。
final Handler handler = new Handler();
Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
if (locationcheck!=this.getcurrentlocation()) {
Intent i=new Intent(ctxt, YourActivity.class);
StartActivity(i);
}
}
});
}
}, 3000,10000);
タイマーを簡単に設定でき、LocationListener が起動したら、タイマーをゼロにリセットします。タイマーが 10 分に達すると、ユーザーが移動していないことがわかります。このアプローチの欠点は、タイマーを実行し続ける必要があるため、サービスとしてインストールする必要があることです。