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で動かすサンプルコード欲しい方いたら作るのでコメントくださーい