特定の場所のデータを取得するために、ユーザーの現在の場所をアプリケーションに取得する必要があるアプリケーションを開発します。これを始める前に、GPS システムが Android でどのように機能するか、および WiFi との関係を学びたいと思います。Android デバイスを参照して、GPS とジオコードに関する完全な説明を教えてください。
3 に答える
Android には、ユーザーの現在地を取得する 3 つの方法があります。
- Wi-Fi経由
- ネットワークプロバイダー経由。
- Android デバイスの GPS チップを介して。
これらの中で最も正確な方法は、GPS から座標を取得することです。これにより、緯度経度で正確な位置が取得されますが、ほとんどのバッテリーも使用されます. これは一般に、精度が重要なナビゲーション マップで使用されます。
残りの 2 つの方法は精度が低くなりますが、バッテリーの消費も少なくなります。現在地の精度がそれほど重要でない場合は、後の 2 つを使用できます。これらの方法はすべてLocationManager
、Android から利用できます。
編集:
// To get Updates From GPS Use
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
currentlocation);
//To get Updates From network Use
mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
currentlocation);
GPS
最近では、ほとんどの Android スマートフォンにAGPSチップが搭載されています。AGPSとは、ネットワーク タワーと WI-FI ホット スポットの助けを借りて近くの場所をすばやく特定し、Android GPS 対応スマートフォンが GPS 衛星でロックを取得できるようにするAssisted GPSを意味します。Android スマートフォンAGPSチップを使用すると、データプランやネットワークを必要とせずにGPS衛星をロックすることもできますが、GPS衛星をロックするには、空がきれいに見えることと時間が必要です.
Google マップは、アクティブなデータ接続で読み込まれるマップを備えたナビゲーション システムであり、通常、ネットワーク タワーや場所がそれほど正確ではない WI-FI ホット スポットの助けを借りてデバイスの位置を特定します。Android で正確な位置を取得するにはMy Locations の 2 つの設定は、1 つは少し計算可能なワイヤレス ネットワークの使用を有効にする設定で、もう 1 つは GPS 衛星の使用です。この設定には、より多くのバッテリーと空のクリアなビューが必要です。 GPS 衛星を最大限に活用します。
ジオコード
ジオコーディングとは、住所やその他の場所の説明を (緯度、経度) 座標に変換するプロセスです。
次のリンクは学習に役立ちます
1) https://developers.google.com/maps/documentation/directions/
2) http://blog.synyx.de/2010/06/routing-driving-directions-on-android-part-1-get- the-route/
3) http://eagle.phys.utk.edu/guidry/android/mappingDemo.html
4) Google Maps API バージョン違い
これを見てください、それはあなたを助けるかもしれません、
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
Geocoder gcd = new Geocoder(getApplicationContext(),
Locale.getDefault());
try {
mAddresses = gcd.getFromLocation(loc.getLatitude(),
loc.getLongitude(), 1);
} catch (IOException e) {
}
String cityName = (mAddresses != null) ? mAddresses.get(0)
.getLocality() : TimeZone.getDefault().getID();
String countryName = (mAddresses != null) ? mAddresses.get(0)
.getCountryName() : Locale.getDefault().getDisplayCountry()
.toString();
mCurrentSpeed.setText(loc.getSpeed());
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Disabled",
Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Enabled",
Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}