2016-05-19 3 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(); 
    } 
} 

Change «5» в if заявлении, что вы хотите радиус быть. Надеюсь это поможет!

+0

У меня есть идея, но это не то, что я хочу, и она не использует оповещение о близости. То, что делает ваш код, это получить время между onCreate и locationChanged. То, что я хочу, не в деятельности, а в фоновом режиме, следует сообщать только тогда, когда пользователь находился в месте в течение X минут. –