我将开发一个应用程序,我需要将用户的当前位置检索到应用程序中,以便获取特定位置的数据。在开始之前,我想了解 GPS 系统如何在 Android 上工作以及与 WiFi 有什么关系。任何人都可以告诉我关于 GPS 和地理代码参考 Android 设备的完整解释,并建议我如何开始。
3 回答
Android 有三种获取用户当前位置的方法。
- 通过 WI-FI
- 通过您的网络提供商。
- 通过 Android Device 中的 GPS 芯片。
其中最准确的方法是从 GPS 获取坐标。这将获得您在纬度的准确位置,但它也将使用大部分电池。这通常用于精度很重要的导航地图。
这两种方法的其余部分不太准确,但也使用较少的电池。如果当前位置的准确性不是那么重要,您可以使用后两种方法。所有这些方法都可以通过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);
全球定位系统
如今,大多数 Android 智能手机都安装了AGPS芯片。AGPS 是指辅助 GPS,它借助网络塔和 WI-FI 热点快速确定附近的位置,并帮助支持 Android GPS 的智能手机锁定 GPS 卫星。Android 智能手机使用 AGPS 芯片也可以锁定 GPS 卫星,无需数据计划或网络,但需要清晰的天空视野和一些时间锁定 GPS 卫星。
Google Maps 是一种导航系统,其地图在具有活动数据连接时加载,通常借助网络塔或 WI-FI 热点定位您的设备位置,其中位置不是那么准确。在 Android 中获得准确的位置“我的位置”中有两个设置,一个是启用使用具有位计算功能的无线网络,另一个是使用 GPS 卫星,这需要更多电池和清晰的天空视野。所以我们可以说启用或配备 AGPS 芯片的 Android 智能手机具有准确的位置位置和充分利用 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) {
}
}