0

동적으로 위치 추적 (위치 방송 수신기 등록/등록 해제)을 제어하려고합니다. 이것이 내가 어떻게 할 계획인가.위치 추적을 동적으로 제어하는 ​​올바른 방법 (위치 방송 수신기 등록/등록 해제)

  1. 내가/자바 dev에 안드로이드 매우 새로운 오전 모든이 개념은 여전히 ​​나에게 매우 이론적이기 때문에 아래의 구현에 실수 무엇 : 저는 두 가지 질문이 있습니다. 아직도 건물 개념!

  2. 내 위치 라이브러리 클래스의 EXTRA_INFO를 위치 수신기로 전달하는 방법

이행 :

나는 두 가지 방법으로 구성 라이브러리 클래스 LocationLibrary.java 있습니다. 이름에서 알 수 있듯이 그들은 그렇게합니다. startTracking()을 호출하면 위치 추적이 시작됩니다. Plz는 myLocationReceiver에 전달되어야하는 extraInfo를 주목합니다. stopTracking()이 호출되면 추적이 중지되어야합니다.

코드 :

public class LocationLibraray 
{ 
    private static BroadcastReceiver myLocationReceiver; 

    public LocationLibraray(Context context) 
    { 
     this.ctx = context; 
     myLocationReceiver = new MyLocationReceiver(); 
    } 

    public void startTracking(Context context, String extraInfo) 
    { 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("com.app.android.tracker.LOCATION_READY"); 
     context.registerReceiver(myLocationReceiver, filter); 

     // NEED TO PASS extraInfo to myLocationReceiver for some processing, but HOW? 
    } 

    public void stopTracking(Context context) 
    { 
     context.unregisterReceiver(locationReceiver); 
    } 

}

MyLocationReceiver.java는

public class MyLocationReceiver extends BroadcastReceiver { 

    public void onReceive(final Context context, Intent intent) { 
     if ((intent.getAction() != null) && 
       (intent.getAction().equals("com.app.android.tracker.LOCATION_READY"))) 
     { 
      //GET THAT EXTRA INFO FROM LocationLibrary class and process it here 
     } 
    } 
} 

저를 도와주세요. Thnx!

답변

1

왜 MyLocationReceiver에 생성자를 추가하지 않습니까?

public class MyLocationReceiver extends BroadcastReceiver { 
String info = ""; 

public MyLocationReceiver(String extraInfo) 
{ 
    this.info = extraInfo; 

} 
........ 
public void onReceive(final Context context, Intent intent) { 
    if ((intent.getAction() != null) && 
       (intent.getAction().equals("com.app.android.tracker.LOCATION_READY"))) 
     { 
      if (info.contains("Hi")) 
       //do some stuff 
     } 
    } 


} 

그리고 당신은 다음과 같이 인스턴스화 것 :

myLocationReceiver = new MyLocationReceiver(new String("Hello!")); 
+0

아차! 그것은 파렴치했다 : P. 물론 생성자가 작업을 수행합니다. 나는 그것을 어떻게 놓쳤는가? 고마워 잭 :)! –