Posted at

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

FusedLocationApiが非推奨になったはいいが

じゃあどうしたらいいか

がなかなかバシっと出てこなかったのでここに書いときたい


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

取得した位置情報が画面に出るまでの丸ごとのサンプルコードはこちら

http://pannacotta.co.jp/archives/2658930.html


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());
}
}
});
}
}


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

取得した位置情報が画面に出るまでの丸ごとのサンプルコードはこちら

http://pannacotta.co.jp/archives/2658930.html

Google本家のサンプルコードはこちら

https://github.com/googlesamples/android-play-location

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