0

検索フラグメント

画像を参照してください。検索時にユーザーの現在の場所が検索結果に含まれる POC を構築しようとしています (すべてのユーザーではなく、検索で返されたユーザーのみです。これらのユーザーはすべて既にアプリにログインしており、ユーザー ID は既にわかっています)。IntentService の代わりに Service アプローチを使用したことを除いて、以下の手法を使用して、バックグラウンドでユーザーの場所を取得し、それを検索フラグメントにブロードキャストできるように、サービスを実行してみました。

public class MyIntentService extends IntentService {

  //ACTION should include application package convention, just to show that this can
  //be any string
  public static final String ACTION = "mycustomactionstring";

  public MyIntentService() {
    super("MyIntentService");
    // TODO Auto-generated constructor stub
    Log.d("sohail", "service started");
  }

  @
  Override
  protected void onHandleIntent(Intent arg0) {
    // TODO Auto-generated method stub

    Log.d("sohail", "onHandleIntent called");
    Intent in = new Intent(ACTION); //you can put anything in it with putExtra
    Log.d("sohail", "sending broadcast");
    LocalBroadcastManager.getInstance(this).sendBroadcast( in );


  }

}

問題は、検索結果で特定のユーザーの現在の場所のみを表示するように Android に反映するにはどうすればよいですか? ログインしているすべてのユーザーの中で特定のユーザーに対して user.getLastLocation のようなことを行うことができる Android のより良いアプローチはありますか? ここに何か良いアプローチはありますか?

私が基本的に探しているのは、Android で「検索結果で返された特定のユーザーの現在の場所を教えてください」と簡単に言う方法です。これらのユーザーは、ログインしているすべてのユーザーの一部です。

すべてのユーザーの場所を追跡し、それを自分で DB に保持し、検索結果で返されたユーザーと比較することを考えましたが、理想的な方法ではないように思えました。

このシナリオで誰かが提案できるより良い方法はありますか?

4

1 に答える 1

0

Webサービスを使用すると、すべてのユーザーが30秒または60秒ごとにWebサーバー上の現在の場所を送信し、その後Webサービス呼び出しを使用してサーバーを更新すると、ユーザーの現在の緯度経度を取得できます

以下のように、2つの緯度間の距離を見つけます。

Location loc1 = new Location("");
loc1.setLatitude(lat1);
loc1.setLongitude(lon1);

Location loc2 = new Location("");
loc2.setLatitude(lat2);
loc2.setLongitude(lon2);

float distanceInMeters = loc1.distanceTo(loc2);

参照: http://developer.android.com/reference/android/location/Location.html#distanceTo(android.location.Location)

上記の解決策が役立つことを願っています。

同じことについて私の側からさらに助けが必要な場合はお知らせください。

于 2015-02-19T05:41:25.570 に答える