2017-02-14 4 views
0

FusedLocationProviderApi를 사용하여 위치 업데이트를 구현했습니다. 앱이 실행되고 있지 않을 때 백그라운드에서 기기 위치를 추적해야합니다.위치 서비스를 테스트하는 데 문제가 있습니다. 작동하지 않게 할 수는 없습니다.

나는 자습서를 따라 서비스를 시작하는 의도로 requestLocationUpdates이라고 부르는 서비스를 가지고 있습니다.

필자는 웨이크 로크를 테스트하기 위해 구현하지 않았기 때문에 화면이 꺼지면 장치가 위치 업데이트를 중지합니다. 잠자기 후 깨우기 잠금을 구현하고 반대를 기대할 수 있는지 확인한 후 작동하는 것을 확인합니다.

KitKat이 포함 된 Google Nexus 10과 Lollipop이 장착 된 Samsung Galaxy A5 (2016)의 두 가지 기기를 사용했습니다.

두 장치에서 계속 업데이트를 보내고 있습니다 (웹 사이트로 업데이트를 보내고 있습니다). 기기를 책상 위에 놓고 잠시 방치 한 다음 스크린을 이용해 테스트 한 다음 다시 집안을 걸어 다녔습니다.

나는 안드로이드 6 알고 도즈 모드는 더 제한,하지만 난 못하고 안드로이드 4.4과 안드로이드 5.

그래서 실망 작동 방식을 이해하고 싶다! 어떤 아이디어를 실제로 장치를 절전 모드로 전환하여 위치 업데이트가 작동하지 않는 것을 볼 수 있습니까?

재미, 내가 읽은 모든 작동 만들기 :

편집을에 관한 것입니다 : 화면에도 같은 공격적인 위치 업데이트 설정과 함께 꺼져있을 때 그 이유를 위치 업데이트를 점점 여전히 작동하고 혼란 스러워요 다음 위치 업데이트를 요청에 대한

locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
locationRequest.setFastestInterval(2); 
locationRequest.setInterval(1000); 
+0

서비스가 실행되는 동안 위치 업데이트를 계속받을 것입니다. – tyczj

+0

@tyczj 감사하지만 어떻게 도움이됩니까? 더 많은 생각을 나누시겠습니까? –

+0

글쎄, 내가 무엇을 얻는지는 OS를 멈추게하거나 수동으로 서비스를 중단하고 잠시 멈추게 할 필요가있다. – tyczj

답변

2

것입니다 그 모든 아래, LocationManager 용도가 실제로 생성하고 자신의 가동 잠금의 획득이란 무엇인가 LocationManagerService. 따라서 기술적으로 GPS를 적극적으로 수신하도록 등록 된 위치 수신기가있는 한 기기는 절전 모드로 들어 가지 않습니다. 이제 Google의 FusedLocationApi을 사용하고 있지만 그 아래에는 LocationManager이 사용됩니다. 위치 코드를 좀 더 잘 이해하고 싶다면 여기 LocationManagerService의 소스 코드를 참조하십시오.

+0

감사합니다. "기술적으로 말하면 GPS를 적극적으로 수신하도록 등록 된 위치 수신기가있는 한 기기는 절전 모드로 들어 가지 않습니다." 확실하지는 않지만 장치가 잠자기 상태가 아니며'requestLocationUpdate'에서 제공 한'의도 '를 실행하기 위해 스스로 깨어나지 않습니까? –

+1

AlarmManager도 사용하는 것처럼 보이므로 간격을 0보다 크게 설정하면 GPS가 꺼진 후 wakelock이 해제되어 장치가 잠자기 상태가됩니다. –

+0

wakelocks를 사용하고 있기 때문에 Android 6+ Doze 모드 위치 업데이트가 전송되지 않는 것입니까? Doze 모드에서 절전 모드 해제는 무시됩니다. 응용 프로그램이 Doze 모드 인 경우를 제외하고는 흰색 목록에 있습니다 .... 어떤 혼란인가 –