2013-09-25 4 views
1

Android에서는 알람 관리자를 사용하여 GPS로 매 30 초마다 위치를 파악하고 있습니다. 내가 geopoints를 사용하여 장치가 여행하거나 같은 위치에 존재 여부를 감지 싶어요. 같은 위치에있는 GPS가 정확한 시간에 정확한 데이터를 얻는 경우지도에 정확한 위치가 표시되는 20 ~ 30 미터 떨어진 지점에서 대략적인 데이터를 얻는 경우가 있습니다.기기가 Android에서 동일한 위치에 있거나 이동 중인지 확인하는 방법은 무엇인가요?

여행하는 데 문제가 있습니다.

기기가 여행하지 않는 방법을 찾는 방법은 무엇입니까?

+0

location.getSpeed가 원하는 것을 수행하지 못합니까? 또는 설명서를 읽지 않았습니까? – njzk2

답변

0

30 초마다 새 위치를 얻으면 이전 위치와 비교하여 위치가 다른지 확인하고 장치가 이동하는지 확인합니다.

+0

나는 네가 말했던 것처럼했지만 GPS는 여행으로 표시 할 때 올바른 위치에서 대략적인 위치를 벗어났다. – Dhana

1

onLocationChanged() 메소드에서 코드를 작성할 수 있습니다. 장비가 위치를 바꿀 때마다 새로운 위도 경도를 매번 얻을 수 있습니다. 위치가 변경된 경우에만 호출되는 OnLocationChange() 메서드입니다. 그러나 특정 거리 계산을 원할 경우 오래된 lat-long과 더 가까운 거리 사이의 거리를 계산해야합니다. lat-long을 사용하여 거리를 찾을 수 있습니다.

+0

onLocationChanged() 메서드를 사용하지 않았습니다. 대기중인 의도를 사용하여 위치를 확인했습니다. – Dhana

+0

LocationManager 클래스를 사용하면 정확한 결과뿐만 아니라 필요한 계산을 얻을 수 있습니다. –

6

Play Services에 액세스 할 수 있다면 Recognizing the User's Current Activity을 살펴보십시오.

그렇지 않으면 다음과 같이 할 수 있습니다. GPS 신호가 동일한 위치에 있어도 달라질 수 있으므로 새 위치와 이전 위치를 비교할 수 없습니다. 난 당신이 플레이 서비스를 위해 제공되는 새로운 활동 인식 기능을 사용하여, 사용자가 "여전히"는 것을 확인할 수 있습니다 다음과 같은 코드

  double venueLat =latitude // Last known lat 
      double venueLng = longitude // Last known lng 

      double latDistance = Math.toRadians(userLat - venueLat); 
      double lngDistance = Math.toRadians(userLng - venueLng); 
      double a = (Math.sin(latDistance/2) * Math.sin(latDistance/2)) + 
          (Math.cos(Math.toRadians(userLat))) * 
          (Math.cos(Math.toRadians(venueLat))) * 
          (Math.sin(lngDistance/2)) * 
          (Math.sin(lngDistance/2)); 

      double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 

      double dist = 6371 * c;    
      if (dist<0.01){ (in km, you can use 0.1 for metres etc.) 
       /* If it's within 10m, we assume we're not moving */ 
      } 
+0

Play 서비스에 대한 유용한 정보를 제공해 주셔서 감사합니다. – Dhana

1

뭔가를 사용할 수 있습니다. 자세한 내용은 here, herehere을 읽고 this video 또는 this one을 확인하십시오. 나는 그것을 테스트 한 적이 없지만 매우 유망 해 보입니다.

gps를 사용하려면 사용자가 동일한 위치에 머무르는 것으로 간주되는 범위를 정의하고 사용자가이 범위를 벗어나지 않는지 각 샘플을 확인하십시오.

항상 너무 큰 실수가 있기 때문에 너무 작지 않고 너무 크게하지 않는 것이 좋습니다.

+0

감사합니다. 나는 유용한 정보를 보냈다. – Dhana

+0

활동 인식 기능은 Play 스토어가 설치된 안드로이드 기기에서만 작동합니다 (대다수의 경우) –

+0

인식 기능이 기기 위치를 Google Play Server에 보내나요? – Dhana

관련 문제