2016-05-19 14 views
2

Android LocationManagerを使用して、ユーザーが定義した場所の周辺にいるかどうかを確認しています。ユーザーがどこかにいる時間を知るには?

私はaddProximityAlertメソッドを使用しているので、ユーザーが私が期待している場所にインテントを受け取ることができます。

しかし、私がしたいのは、ユーザーが特定の場所に一定期間滞在しているかどうかを知ることです。なぜなら、ユーザーが私がチェックしている場所を横切っている場合、私はその意図を受け取るかもしれないからです。

私の最初のアプローチは、しばらくしてから(数分後に)私はもう一度それをチェックすることができます。より良いアプローチがありますか?しばらくしてから意図を受け取る方法はありますか?

ありがとうございます。

答えて

0

この問題を解決するには、ifステートメントを使用して、特定の距離にいるユーザーの経過時間を格納することができます。
System.currentTimeMillis()を使用すると、現在の時刻を取得し、元の開始時刻を減算して経過時間を表示できます。

long startTime = 0; 
long elapsedTime; 
// Set up LocationManager here 
Location targetPlace; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Location location = locationManager.getLastKnownLocation(provider); 
    // Checks to see if the user was already there when they opened the activity 
    if(location.distanceTo(targetPlace) == 5) { 
     startTime = System.currentTimeMillis(); 
    } 
    targetPlace = new Location(provider); 
} 

@Override 
public void onLocationChanged(Location location) { 
    if(startTime != 0) { 
     // Check to see if the user is in a given place 
     if (location.distanceTo(targetPlace) == 5) { 
      elapsedTime = (System.currentTimeMillis() - startTime)/1000; // Time in seconds 
     } else { 
      // User is not near that location 
     } 
    } else { 
     startTime = System.currentTimeMillis(); 
    } 
} 

if声明の変更「5」あなたは半径になりたいものは何でもする:ここであなたができる何かがあります。お役に立てれば!

+0

私は考えを得るが、これは私が望むものではなく、近接警告を使用していない。あなたのコードが行っていることは、onCreateとlocationChangedの間の時間を得ることです。私が望むのは、活動ではなく、バックグラウンドで、ユーザーがX分の場所にいたときにのみ通知することです。 –

関連する問題