LoginSignup
3
7

More than 3 years have passed since last update.

【2019最新版】非推奨になったFusedLocationApiをFusedLocationProviderClientに置き換える【Android】

Last updated at Posted at 2019-09-07

FusedLocationApiが非推奨になったはいいが
じゃあどうしたらいいか
がなかなかバシっと出てこなかったのでここに書いときたい

ノーカットのサンプルコード

取得した位置情報が画面に出るまでの丸ごとのサンプルコードはこちら
https://pannacotta-ceo.hatenablog.com/entry/2658930

FusedLocationApi -> FusedLocationProviderClient

新しいのは FusedLocationProviderClient です

build.gradleはそのままでOK

パーミッションの処理もそのままでOK

何をどう変更するのかのざっくり概要

書き方はとりあえず置いておくとして

登場するキーワードが変わるイメージが▼こんな感じです

LocationClient
-> なくてOK(LocationClientとFusedLocationApiが合体してFusedLocationProviderClient、ということなのかも)

LocationListener
-> onCompleteListener

onLocationChanged
-> onComplete

LocationServices.FusedLocationApi.requestLocationUpdates()
-> mFusedLocationClient.getLastLocation().addOnCompleteListener()

ソースコードのイメージ

パーミッションの処理ざっくりカットしてるイメージ掴むためだけのコード
実際動かそうとしたらパーミッションの処理やってないと動かないです

public class MainActivity extends AppCompatActivity {
    private FusedLocationProviderClient mFusedLocationClient;
    protected Location mLastLocation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button locationButton = findViewById(R.id.locationButton);
        locationButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getLastLocation();
            }
        });
        mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    }

    private void getLastLocation() {
        mFusedLocationClient.getLastLocation()
                .addOnCompleteListener(this, new OnCompleteListener<Location>() {
                    @Override
                    public void onComplete(@NonNull Task<Location> task) {
                        if (task.isSuccessful() && task.getResult() != null) {
                            mLastLocation = task.getResult();
                            Log.d("ろぐ", "lat = " + mLastLocation.getLatitude() + ", lon = " + mLastLocation.getLongitude());
                        } else {
                            Log.w("ろぐ", "getLastLocation:exception", task.getException());
                        }
                    }
                });
    }
}

ノーカットのサンプルコード

取得した位置情報が画面に出るまでの丸ごとのサンプルコードはこちら
https://pannacotta-ceo.hatenablog.com/entry/2658930

Google本家のサンプルコードはこちら
https://github.com/googlesamples/android-play-location

GoogleMapで動かすサンプルコード欲しい方いたら作るのでコメントくださーい

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7