Android LocationClient クラスは非推奨ですが、ドキュメントでは使用されています 質問する

Android LocationClient クラスは非推奨ですが、ドキュメントでは使用されています 質問する

文書を見てみるとLocationClient、クラスが非推奨であることがわかります。

しかし、非推奨のクラスは現在の場所を取得するためのドキュメント

これは少し誤解を招くと思いますか、それとも間違ったドキュメントを見ているのでしょうか?

ベストアンサー1

また Google が新しい API をリリースしましたが、ドキュメントは更新されていません :$ しばらく時間をかけて仕組みを理解しようとしましたが、新しい最新のロケーション サービス API を使用した完全な例がここにあります... 開発を楽しんでください :)

import android.location.Location;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;

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

    private final String TAG = "MyAwesomeApp";

    private TextView mLocationView;

    private GoogleApiClient mGoogleApiClient;

    private LocationRequest mLocationRequest;

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

        mLocationView = new TextView(this);

        setContentView(mLocationView);

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Connect the client.
        mGoogleApiClient.connect();
    }

    @Override
    protected void onStop() {
        // Disconnecting the client invalidates it.
        mGoogleApiClient.disconnect();
        super.onStop();
    }

    @Override
    public void onConnected(Bundle bundle) {

        mLocationRequest = LocationRequest.create();
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        mLocationRequest.setInterval(1000); // Update location every second

        LocationServices.FusedLocationApi.requestLocationUpdates(
                mGoogleApiClient, mLocationRequest, this);
    }

    @Override
    public void onConnectionSuspended(int i) {
        Log.i(TAG, "GoogleApiClient connection has been suspend");
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        Log.i(TAG, "GoogleApiClient connection has failed");
    }

    @Override
    public void onLocationChanged(Location location) {
        mLocationView.setText("Location received: " + location.toString());
    }
}

AndroidManifest.xml ファイルに次の権限を追加することを忘れないでください:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient)注: 最新の位置情報(更新なし)のみを取得する必要がある場合は、 OnConnectedから使用できます。

おすすめ記事