1. ホーム
  2. android

[解決済み] Android LocationClientクラスは非推奨だが、ドキュメントでは使用されている

2022-05-10 21:16:04

質問

のドキュメントを見ていくと LocationClient のように、このクラスは非推奨であることがわかります。

しかし、非推奨のクラスが使われているのは 現在地取得のためのドキュメント .

これは少し誤解を招く表現だと思うのですが、それとも私が見ている資料が正しくないのでしょうか?

解決するには?

Googleはまた新しいAPIをリリースしましたが、ドキュメントを更新していません :$ どのように動作するかを理解するのに時間を費やした後、私はそれを得た、ここに新しい/最新のLocation Service 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より