【问题标题】:How GPS & Geo Location works for Android Devices [closed]GPS和地理位置如何适用于Android设备[关闭]
【发布时间】:2013-02-28 21:56:37
【问题描述】:

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

【问题讨论】:

  • Lie Ryna, talonmies @ 提出这个问题背后有一个明显的想法。我只是想知道 GPS 在 Android 智能手机中的工作原理,并且我必须了解所有依赖项,以便以后不会产生任何复杂性。谢谢。

标签: java android geolocation gps wifi


【解决方案1】:

Android 提供三种获取用户当前位置的方式。

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

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

这两种方法的其余部分不太准确,但也使用较少的电池。如果当前位置的准确性不是那么重要,可以使用后两种方法。所有这些方法都可以通过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);

【讨论】:

  • 非常感谢您的回答。我可以问你,我怎样才能通过仅使用 WiFi 连接来获取当前位置。它有多少合适以及它是如何被认为不准确或对应用有害的。
  • 我们通常使用 GPS 提供商进行导航。如果您的应用程序没有这种要求,并且您只想显示周围环境的一般信息,那么您应该选择通过 Network Provider 进行位置更新。这样,即使周围没有 wifi,您也会得到不准确的当前位置。您将使用 Network Provider.LocationListener currentlocation = new CurrentLocation(); 获取您的位置更新。 mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,currentlocation);
【解决方案2】:

看看这个,可能对你有帮助,

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) {
   }
 }

【讨论】:

    【解决方案3】:

    全球定位系统

    如今,大多数 Android 智能手机都安装了 AGPS 芯片。AGPS 是指辅助 GPS,它借助网络塔和 WI-FI 热点快速确定附近的位置并帮助启用 GPS 的 Android 智能手机锁定 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

    【讨论】:

      猜你喜欢
      • 2015-06-27
      • 2014-04-15
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2021-11-25
      相关资源
      最近更新 更多