0

ロケーショントラッキングを動的に制御する(位置登録ブロードキャストレシーバーの登録/登録解除)。これが私のやり方です。私はアンドロイド/ Javaのdevのに非常に新しいですと、すべてこの概念はまだ私には非常に理論的であるため、ロケーショントラッキングを動的に制御する正しい方法(ロケーションブロードキャストレシーバーの登録/登録解除)

  1. は以下の実装の間違いどのようなものです:私は2つの質問があります。まだコンセプト構築中!

  2. 私のロケーションライブラリクラスからEXTRA_INFOをロケーションレシーバに渡すにはどうすればよいですか?

IMPLEMENTATION:

私は2つのメソッドで構成され、ライブラリのクラス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。もちろんコンストラクタがその仕事をします。どのように私はそれを逃しましたか?ありがとうジャック:)! –

関連する問題