2012-11-12 2 views
0

앱을 사용 중이고 일부 정보를 인터넷에서 확인하고 싶습니다. 기기가 이동 한 경우에만 기기를 이동하려고합니다. X 미터. 예를 들어 사용자가 300 미터를 이동 한 경우 서버에 전화를 걸고 그렇지 않으면 아무 것도하지 마십시오. 하지만 배터리가 빨리 소모되기 때문에 GPS를 항상 듣고 거리를 계산할 수는 없다고 생각합니다.기기가 움직여 GPS 코드가 등록되어 있는지 확인합니다.

그리고 내 질문은 : 안드로이드가 서비스를 시작하는 어떤 방법이 있습니까? gps coord가 X 미터를 변경했다는 경고를 방송에 보냅니다.

현재 AlarmManager를 보유하고 있으며 30 분마다 GPS 좌표를 얻지 만 더 정확한 정보가 필요합니다.

답변

1

LocationManager.requestLocationUpdates(); 메서드를 사용하십시오. 업데이트를 전송해야하는 최소 시간 (초)과 업데이트하기 전의 최소 미터 수를 지정할 수 있습니다.

이 모양은 다음과 같습니다

// 밀리 초
민간 최종 INT MINIMUM_TIME_BETWEEN_UPDATES = 5000;

// 미터 단위
개인 최종 정수 MINIMUM_DISTANCE_BETWEEN_UPDATES = 1;

LocationManager lManager =(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
LocationListener = listener = new LocationListener() { 

      public void onStatusChanged(String provider, int status, Bundle extras) {   
} 

      public void onProviderEnabled(String provider) { 
      } 


      public void onProviderDisabled(String provider) { 
      } 

      public void onLocationChanged(Location location) { 
      } 

     }; 

lManager.requestLocationUpdates(bestProvider, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_BETWEEN_UPDATES, listener); 

이 지정된 위치 제공자 (GPS 또는 네트워크), 초 지정된 시간과 거리의 특정 량을 가진 LocationManager를 생성한다. locationmanager는 LocationListener에 업데이트를 보냅니다. onLocationChanged는 업데이트가 수신 될 때마다 호출됩니다. bestProvider 변수는 LocationManager.getBestProvider()를 사용하여 찾을 수 있습니다. 및 Criteria 클래스.

+0

답장을 보내 주셔서 감사합니다. MINIMUM_DISTANCE_BETWEEN_UPDATES에 0을 전달하고 있습니다. 솔루션이 제대로 작동해야한다고 생각합니다. – Pipeline

관련 문제