0

位置追跡(位置放送受信機の登録/登録解除)を動的に制御したい。これが私がそれをすることを計画している方法です。2つの質問があります:

  1. 私はandroid/java devに非常に慣れていないので、この概念はすべて私にとってまだ非常に理論的であるため、以下の実装の間違いは何ですか。まだコンセプトを構築しています!

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

実装:

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!

4

1 に答える 1

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!"));
于 2012-04-12T13:41:12.143 に答える