我将开发一个应用程序,我需要将用户的当前位置检索到应用程序中以获取特定位置的数据。在开始之前我想了解一下GPS系统如何适用于Android&与WiFi的关系是什么?谁能告诉我关于GPS& amp;的完整解释Android设备参考中的地理代码&建议我如何开始。
答案 0 :(得分:4)
<强> GPS 强>
现在大多数Android智能手机都安装了 AGPS 芯片.AGPS意味着辅助GPS ,它可以借助网络塔和WI-FI热点快速确定附近的位置并帮助支持Android GPS的智能手机锁定GPS卫星。带AGPS芯片的Android智能手机也可以锁定GPS卫星,无需数据计划或网络,但需要清晰的天空视图和一些时间锁定GPS卫星。
Google地图是一个带有地图的导航系统,它可以加载有效数据连接,并且通常可以借助网络塔或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 Version difference
答案 1 :(得分:3)
Android有三种获取用户当前位置的方法。
其中最准确的方法是从GPS获得坐标。这将获得您在lat longs的准确位置,但它也将使用大部分电池。这通常用于精度很重要的导航地图。
这两种方法的其余部分不太准确,但也使用较少的电池。如果当前位置的准确性不是那么重要,你可以使用后两个。所有这些方法都可以通过android的LocationManager
获得。
编辑:
// 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);
答案 2 :(得分:1)
看看这个,它可能对你有帮助,
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) {
}
}