2011-03-09 1 views
13

나는 BroadcastReceiver가 텍스트, 전화 이벤트 등을 감시하고 있음을 알고 있습니다. 그러나 LocationServices를 위치 기반 서비스 및 이벤트로 실행할 수 있습니까?BroadcastReceiver 위치 :

예를 들어 특정 GPS 지점 근처에 있으며 전화로 알려줍니다.

+1

당신이 http://developer.android.com/reference/android/location/LocationListener.html – schwiz

답변

31

나는 당신이 찾고있는 것이 이런 것이라고 생각합니다. LocationManager.requestLocationUpdates()의 버전은 PendingIntent을 매개 변수로 사용하며이 인 텐트는 BroadcastReceiver을 실행하는 데 사용될 수 있습니다. 이 코드는 사용자 정의 브로드 캐스트를 등록하여 위치 업데이트를 실행합니다.

Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE"); 
LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); 
long minTime;  //This should probably be fairly long 
float minDistance; //This should probably be fairly big 
String provider; //GPS_PROVIDER or NETWORK_PROVIDER 

PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent); 

은 그럼 그냥 같은 의도 작용하여 BroadcastReceiver을 등록해야하며 처리를 위해 위치 업데이트를 받게됩니다. 그리고 어떤 점에서 manager.removeUpdates(launchIntent)에 전화해야하기 때문에 주위에 PendingIntent을 유지하십시오!

최종 참고 : 앱이 포 그라운드에없는 동안 정기적으로 위치 업데이트를 구현하기 위해 노력하고있다처럼 소리 때문에

,이 점에 유의하십시오. 앱을 배터리 킬러로 분류하고 싶지 않다면이 기능을 구현하는 방법에 매우주의해야합니다.

큰 minTime 또는 minDistance 매개 변수로 위치 업데이트 빈도를 크게 줄이면 위치 서비스를 중지 할 수 있습니다. 이 기능은 앱이 백그라운드에서 위치를 추적 할 수 있도록 사용자가 제어하는 ​​환경 설정에 연결되어야합니다.

희망이 도움이됩니다!

+0

이동 무선 디자인 @, 당신이 보석 위치 : 아래에서 더 자세하게 배울 수 있습니다 나는 이것이 사실이라고 생각했다. 나는 Droid의 의도에 대해 아직도 배우고있다. 당신의 반응은 매우 유익하다. 시간을내어 주셔서 감사합니다. – ProNeticas

+0

문제 없습니다. 이 답이 문제를 해결하면 끝내주십시오. 건배! – Devunwired

+0

먼저 테스트 해보고 싶습니다.) – ProNeticas