スピードメーターを作る 2020/09/23
GPSを使った現在位置の表示では現在位置の緯度経度を取得して地図上に表示をしました。
現在位置を取得する方法としてFusedLocationProviderClientを使って実現しました。これは位置情報をGPS,WiFi,携帯基地局からの位置情報で算出します。一番正確なのはGPSです。しかし、バッテーリーの消耗が多いいです。位置の精度が大雑把でよいアプリってなんだ?よくわかりません。やはりGPSを使って正確に検出できないと....
作ったアプリはこれ!

移動距離:計測を開始してから移動した距離。
速度:現在の速度。
精度:GPSの位置検出の精度。小さいほど正確。
標高:海面からの高さ。

グーグルマップでは位置情報をマップにわたすだけですが、今度は位置がわかっただけでは数字を表示してもよくわならないです。位置情報を2つ使えばその間の距離がわかります。この距離を出す方法は地球は球体であると仮定した計算方法です。実際は楕円体です。しかし、これは計算が面倒なので球体といました。
2地点間の距離がわかれば、移動時間から速度が算出できます。最初はタイマーで時間を計って速度をだしていました。しかし、自分で計算しなくても緯度経度の取得と同様に取得できます。

精度はどうか?
移動距離:車で4キロ走って、トリップメータと比較すると同じです。
速度:車の速度計と比較数するとほぼ同じです。
標高:以前国土地理院のサイトで調べた当地の標高は175mです。しかし、表示は220mです。
ソースファイル
MainActivity.java
SpeedView.java
AndroidManifest.xml
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
それと
 <meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
の設定が必要です。