場所 (lat/long/alt) を記録する Android アプリをテストしています。Android 2.2.1 を実行している Samsung GTS5830 電話でアプリを実行しています
地球が完全な球体ではないため、GPS の高度が正しくないことがよくあります。たとえば、私の場所では、ジオイドの高さは 52 メートルです。
私の理解では、この高さは「純粋な」GPS 高度から差し引かれます。これは、私の場所では次のように意味があります。
- altitude from GPS phone: 535 m
- geoid altitude: 52 m
- altitude from phone's GPS minus geoid height: 482m
- correct atlitude: 478 m
482 は、ハイキング中に標高を追跡するのに十分なほど本物に近いです。
- GPS の高さからジオイドの高さを引いた上記の式は正しいですか?
- GPS高度を返すときに、アンドロイドがジオイドの高さを考慮していないと仮定するのは正しいですか?
- 上記が当てはまる場合、Android のすべてのバージョンに当てはまりますか?
GPS座標を取得するために使用するコードは次のとおりです。
public class HelloAndroid extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("main", "onCreate");
setupGps();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
LocationListener locationListener;
LocationManager lm;
void setupGps() {
Log.d("gps", "Setting up GPS...");
locationListener = new MyLocationListener();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 5,
locationListener);
Log.d("gps",
"GPS supports altitude: "
+ lm.getProvider(LocationManager.GPS_PROVIDER)
.supportsAltitude());
Log.d("gps", "Finished setting up GPS.");
}
static class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
Log.d("gps", "long: " + location.getLongitude() + ", lat: "
+ location.getLatitude() + ", alt: "
+ location.getAltitude());
}
}
}