0

我将开发一个应用程序,我需要将用户的当前位置检索到应用程序中,以便获取特定位置的数据。在开始之前,我想了解 GPS 系统如何在 Android 上工作以及与 WiFi 有什么关系。任何人都可以告诉我关于 GPS 和地理代码参考 Android 设备的完整解释,并建议我如何开始。

4

3 回答 3

5

Android 有三种获取用户当前位置的方法。

  1. 通过 WI-FI
  2. 通过您的网络提供商。
  3. 通过 Android Device 中的 GPS 芯片。

其中最准确的方法是从 GPS 获取坐标。这将获得您在纬度的准确位置,但它也将使用大部分电池。这通常用于精度很重要的导航地图。

这两种方法的其余部分不太准确,但也使用较少的电池。如果当前位置的准确性不是那么重要,您可以使用后两种方法。所有这些方法都可以通过LocationManagerandroid获得。

编辑:

        // 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);
于 2013-03-13T05:20:56.033 回答
4

全球定位系统

如今,大多数 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 版本差异

于 2013-03-13T05:47:52.650 回答
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) {
   }
 }
于 2013-03-13T05:47:01.217 回答