2013-02-19 1 views
1

위치 서비스가 배터리를 소모 함을 발견했습니다. 그러나 위치 서비스가 켜져 있기 때문에 그것이 아니라고 생각합니다. 일부 응용 프로그램이 그 서비스를 많이 사용하기 때문입니다. 찾을 수있는 방법이 있습니까? 어떤 응용 프로그램이 위치 서비스를 잘못 설정 했습니까 (높은로드로)? 지금 위치 서비스를 사용하는 응용 프로그램 목록을 얻을 수 있습니까? 도움을 위해 미리 감사드립니다.위치 서비스를 사용하는 응용 프로그램은 무엇입니까?

+1

이 질문은 프로그래밍/소프트웨어 개발과 관련이 있습니다. 프로그래밍 방식으로 위치 정보 서비스에 과부하가 걸리는 응용 프로그램을 찾아야합니다. – Michal

답변

1

나는 백그라운드에서 실행되는 서비스와 GPS를 사용하는 것과 같은 것을 의미한다고 생각하십니까? GPS를 직접 작동시키지 않고 계속 작동 중입니까? 그런 경우 백그라운드에서 GPS를 사용할 수있는 모든 앱을 가져올 수있는 방법이 없습니다. 설정 -> 앱으로 이동하여 GPS를 사용할 수있는 앱의 권한을 확인할 수 있습니다.

typicall 배경 GPS 사용자는 페이스 북 앱 (또는 google +)입니다. 희망이 도움이됩니다.

편집 : 필요하지 않을 때 대안으로 GPS를 사용 중지 할 수 없으므로 어떤 앱도 백그라운드에서 사용할 수 없습니다.

+0

내 경험에 따르면 일부 응용 프로그램은 내가 설정 한 것을 무시하기 때문에 (일반적으로 페이스 북) 나는 프로그램을 통해 문제의 자원을 찾는 것에 대해 더 흥미 롭다. . 그것은 설정이 작동하는지 확신 할 수 없다는 것을 의미합니다. (어쨌든 내부 감사합니다. – Michal

+1

설정에서 GPS를 끄면 장치의 하드웨어 부분이 꺼집니다 (또는 적어도 그렇게되기를 바랍니다). . 그래서 어리 석음이있는 페이스 북도 연결할 수 없어야한다. – chrissik

2

내가 아는 한, LocationProvider에 액세스하는 앱 목록을 얻는 쉬운 방법은 없습니다. 하지만 진단하는 간단한 방법은 ACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION 권한을 하나씩 요청한 앱을 종료하는 것입니다.

많은 앱이 onLocationChanged (...)와 같은 콜백을 통해 위치 데이터를 가져 오므로 Android 시스템을 수정하지 않고 문제를 식별하는 것이 거의 불가능합니다. 위치 서비스를 사용하여 Und (Binder.getCallingUid()를 통해)를 기록하여 현재 위치 정보 서비스를 사용하도록 위치 서비스를 수정할 수 있습니다. 그다지 어렵지는 않지만 무거운 짐을 지니고 있습니다.

편집 :

프레임 워크 /베이스/서비스/자바/COM/안드로이드/서버 아래에 LocationManagerService.java이 있습니다

.

일반적으로 Android에서 Location Strategies에 따라 위치를 가져 오는 방법은 여러 가지가 있습니다.

LocationManager.requestLocationUpdates

당신은 LocationManagerService.java이의 구현을 볼 수 있습니다. 이 메소드는 클라이언트에서 ILocationListener (Binder 객체)를 수신하고 위치 업데이트를 수신하면이 수신기를 나중에 호출합니다.

기본적으로이 방법으로 응용 프로그램의 uid를 가져 와서 얼마나 많은 응용 프로그램이 위치 업데이트를 요청하는지 알 수 있습니다. 그러나 removeUpdates 메소드를 반드시 기억해야합니다.

또한이 방법의 구현에 응용 프로그램의 UID를 로그 아웃 할 수

LocationManager.getLastKnownLocation.

코드를 수정 한 후에 전체 Android 프로젝트를 컴파일하고 애플리케이션을 설치하고 결과를 얻을 수 있습니다.

+0

알았어, 조언을 해줘서 고맙다. 나는 방법을 죽이려고 노력할 것이지만, 나는 그 앱을 몇 번이고 다시 시작할 수 있다는 것을 두려워하고있다. (일부 응용 프로그램은 제거 할 수 없습니다.) 내가 위치 서비스를 수정할 수있는 방법을 조금 명확히 해 주시겠습니까? 내가 따를 지 모르겠다. – Michal

+0

일반적으로 그 응용 프로그램 (브로드 캐스트가 아닌) 인 텐트가 전송되지 않으면 시작되지 않습니다. 위치 서비스를 수정하려면 응답을 업데이트하겠습니다. – StarPinkER

+0

고맙습니다. – Michal

관련 문제