2012-08-04 3 views
2

전체 응용 프로그램에서 하나의 LocationListener를 구현해야합니다.전체 응용 프로그램에서 하나의 LocationListener

LocationListener와 함께 서비스를 사용할 수 있다는 것을 알고 있지만 문제는 위치 변경시 알림 기능을 사용해야한다는 것입니다. 언제든지 모든 활동에서 현재 위치가 필요하므로 원하는 시점에 마지막 위치를 얻을 수있을 때 충분하지 않습니다.

myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {

public void onLocationChanged(Location location) { 
       notifyAllActivities(location); 
      }
};

모든 활동에 :

void onNotify(Location location) { //... }

+0

다른 사람들에게 유용 할 수있는 답변을 수락하십시오. –

답변

2

이 인 텐트를 브로드 캐스트 할 수있는 서비스 호출 sendBroadcast()를 확인

그래서 의사 코드에서 나는 그런 일을해야합니다. 해당 인 텐트에 경도/위도를 추가합니다. 위치를 필요로하는 각 활동에서 인 텐트에 대한 BroadcastReceiver를 등록하고 수신자의 의도에 따라 수신자의 수신 번호를 확인하십시오.

+0

그래서이 서비스 클래스에서 내 서비스 의도를 만들어야하고, 거기에 몇 가지 부가 기능을 넣고이 서비스에서 sendBroadcast()를 작성해야합니까? 그런 다음 BroadcastReceriver를 확장하는 내부 클래스가 필요하며 모든 수신에는 Intent 인수로받는 위치 만 변경됩니까? 정확하게 이해 했습니까? – squixy

+1

활동에 새로운 BroadcastReceiver()를 선언하고 onReceive에서 추가 기능을 선택하십시오. onResume()을 등록하고 onPause()에서 등록을 취소하십시오. – NickT

3

CommonsWare's LocationPoller library을 사용해 보셨습니까?

꽤 강력하고 개인적으로 내 위치 기반 응용 프로그램 중 하나에서 사용했습니다.

좋은 점은 Service과의 호환성입니다. 앱이 백그라운드에있을 때에도 위치 업데이트를 받아야합니다. 그것은 WakeLock을 획득하여 전화를 깨우고 위치를 얻은 다음 정상적으로 해제합니다.

+0

나는이 라이브러리를 아직 모르기 때문에 이것을 검사 할 것이다. – squixy

+0

쉽게 설정할 수 있습니다. 데모가 첨부되어 있습니다. 행운을 빕니다! –

관련 문제