2012-07-09 2 views
2

아래 코드를 작성했지만 작동하지 않습니다. 아무도 나를 도울 수 있습니까? 나는 단지 능동적 인 질문보다는 수동적으로 GPS 상태 변화를 받고 싶다. 전력을 절약하는 것이 가장 중요합니다.GPS 상태가 변경되면 시스템 브로드 캐스트를 수신하려면 어떻게해야합니까?

메시지가 출력되지 않습니다. 나는 수신기의 이름을 변경, 당신은 단순히 매니페스트에 잘못된 위치를 가리키는 생각

<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<receiver android:name=".service.GPStStatusReceiver"> 
    <intent-filter> 
    <action android:name="android.location.GPS_ENABLED_CHANGE" /> 
    </intent-filter> 
</receiver> 

답변

7

: 여기

package com.sharelbs.lbs.service; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class GPStStatusReceiver extends BroadcastReceiver { 
    public static final String GPS_ENABLED_CHANGE_ACTION = "android.location.GPS_ENABLED_CHANGE"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("---------log--------","GPS Status onReceive"); 
     if(intent.getAction().equals(GPS_ENABLED_CHANGE_ACTION)){ 
     Log.d("---------log--------","GPS Status Changed"); 
     startMyProgram(); 
     } 
    } 
} 

내 Manifest.xml입니다

<receiver android:name=".GPStStatusReceiver"> 

이러한 유형의 수신기는 GPS가 활성화 될 때마다 앱을 시작하는 데 적합하지만 앱이 실행되는 동안 새로 고침 간격을 10으로 설정해도 LocationListener의 onProviderEnabled() 또는 onProviderDisable()이이를 catch합니다. 일 및 1000 마일 이상. 따라서 requestLocationUpdates() 메소드에 관대 한 설정을 전달하는 경우 배터리 전원을 낭비하지 않아도됩니다. 의견

난 단지 당신이 위치 요구를 유발하지 않기 때문에 당신이 GPS_ENABLED_CHANGE을받지 못하고 있음을 추측 할 수에서

추가. Locations 메뉴의 확인란을 클릭하여 GPS 기능을 사용 설정하면이 Intent가 브로드 캐스트되지 않고 일부 앱은 현재 위치를 요청해야합니다. 또한이 의도에 대한 공식 문서가 없으므로 Android might change or remove this at any time을 의미합니다.

아마도 공식적으로 지원되는 LocationManager.PROVIDERS_CHANGED_ACTION을 원한다면 GPS 공급자 (및 기타 공급자)가 활성화/비활성화되었을 때 Intent를 브로드 캐스트합니다.

<action android:name="android.location.PROVIDERS_CHANGED" /> 
+0

내 경로가 맞습니다. android : name = ". service.GPStStatusReceiver". 그것도 작동하지 않습니다. – tristan

+1

@tristan 답변을 올렸습니다. – Sam

+0

정말 고마워요 !!!!! 너는 나의 영웅이다! – tristan

관련 문제