您的位置:首页 > 移动开发 > Android开发

Android定位功能总结

2016-08-10 16:39 459 查看
前言:

定位功能,在我们的很多app中都可以看得到,今天就编写一个Demo来总结一下如何获取经纬度

步骤一:声明权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


注:在Android 6.0以上,除了在AndroidManifest.xml中进行权限的声明之外,这个权限还需要在代码去进行校验,征询用户的同意;

步骤二:获取LocationManager实例

locationManager
= (LocationManager) getSystemService(Context.LOCATION_SERVICE);


步骤三:设置定位的方式

/***
* 设置定位的方式:
* GPS_PROVIDER:使用GPS的方式进行定位
* NETWORK_PROVIDER:使用网络的方式进行定位
* PASSIVE_PROVIDER:通过其他应用定位的结果来获知此时的位置(一般不用)
* ***/
/***
* 获取目前所有可用的定位方式
*/
List<String> providers = locationManager.getProviders(true);
/***
* 手动筛选出最佳的一个定位方式
*/
if (providers.contains(LocationManager.GPS_PROVIDER)) {
bestProvider = LocationManager.GPS_PROVIDER;
} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
bestProvider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this, "no provider", Toast.LENGTH_SHORT).show();
return;
}


步骤四:对定位进行侦听

listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
/***
* 获取维度值
* **/
double latitude = location.getLatitude();
Log.e("latitude", "" + latitude);
/***
* 获取经度值
* **/
double longitude = location.getLongitude();
Log.e("longitude", "" + longitude);

textView_01.setText("latitude:" + latitude + '\n' + "longitude" + longitude);

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}
};

/**
* bestProvider表示我们设置的定位方式
* 2000:表示每2000ms定位信息就更新一次
* 1:表示每1m定位信息也更新一次
* listener:定位侦听者
*/
locationManager.requestLocationUpdates(bestProvider, 2000, 1, listener);


步骤五:当程序关闭时,移除侦听

locationManager.removeUpdates(listener);


总结:

在这里只是进行了获取经纬度的操作,若想要获取其具体的地址,可以通过引入百度SDK的反地理编码功能来实现,

也可以用其他反地理编码API来实现,当然你还可以直接通过百度地图SDK集成的定位功能来替代上述一切操作;

至于如何用百度地图SDK来操作定位功能,直接进官网查看,文档已经写得很清楚了........

效果图:



源码:

Android定位功能示例源码

参考:

郭霖《第一行代码android》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: