GPS&地理位置适用于Android设备

时间:2013-03-13 04:48:25

标签: java android geolocation gps wifi

我将开发一个应用程序,我需要将用户的当前位置检索到应用程序中以获取特定位置的数据。在开始之前我想了解一下GPS系统如何适用于Android&与WiFi的关系是什么?谁能告诉我关于GPS& amp;的完整解释Android设备参考中的地理代码&建议我如何开始。

3 个答案:

答案 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有三种获取用户当前位置的方法。

  1. 通过WI-FI
  2. 通过您的网络提供商。
  3. 通过Android设备中的GPS芯片。
  4. 其中最准确的方法是从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) {
   }
 }