39

私は新しい Android コーダーで、ローカリゼーションの更新をリクエストする際に問題があります。

http://developer.android.com/training/location/receive-location-updates.htmlのチュートリアルを使用しています。

私のアプリケーションは例外を処理し、緯度と経度を適切に取得でき、ジオコーダーは住所の表示を処理できます。しかし、場所を尋ねたのは一度だけ、または場所が変わったときだけです。私は時間間隔をやりたいです。今のところ、チュートリアルのコードの実装を開始しました。次のようになります。

public class MainActivity extends Activity implements 
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {

private static final int MILLISECONDS_PER_SECOND = 1000;

public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
private static final long UPDATE_INTERVAL =
          MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;

private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
private static final long FASTEST_INTERVAL =
          MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;

private TextView tvStatus;
private TextView tvLatitude;
private TextView tvLongitude;

LocationRequest mLocationRequest;
LocationClient mLocationClient;
Location mCurrentLocation;

boolean bNetworkEnabled;
boolean bGPSEnabled;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    tvStatus = (TextView)findViewById(R.id.tvStatus);
    tvLatitude = (TextView)findViewById(R.id.tvLatitude);
    tvLongitude = (TextView)findViewById(R.id.tvLongitude);

    mLocationRequest = LocationRequest.create();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(UPDATE_INTERVAL);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
    mLocationClient = new LocationClient(this, this, this);

    checkProviders();
}

したがって、すでに間隔が実装されており、場所の要求があります。しかし、前に私が与えたリンクには、どこかで使用する必要があるというコメントがありますrequestLocationUpdates()(おそらくonCreate()onStart()および のリクエストの削除onStop()) が、問題があります。したがって、Eclipse は 3 つの方法を示しています。

requestLocationUpdates(LocationRequest request, LocationListener listener)
requestLocationUpdates(LocationRequest request, PendingIntent CallbackIntent)
requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper)

したがって、この場所では最初のものが最も正しいと思います。LocationListenerスロットには何を置けばいいですか?それがどのように機能するかを少し説明して助けを求めます。

4

2 に答える 2

38

アクティビティ MainActivity に LocationListener を実装しています。したがって、同時ロケーション更新の呼び出しは次のようになります。

mLocationClient.requestLocationUpdates(mLocationRequest, this);

実装している LocationListener が Google API からのものであることを確認してください。つまり、これをインポートします。

import com.google.android.gms.location.LocationListener;

これではありません:

import android.location.LocationListener;

そしてそれはうまくいくはずです。

これを行う前に、LocationClient が実際に接続されていることも重要です。onCreate または onStart メソッドではなく、onResume で呼び出すことをお勧めします。Google Location Api のチュートリアルですべて説明されています: https://developer.android.com/training/location/index.html

于 2013-07-24T06:22:20.133 に答える