| 关键词: android permission mLocationClientO Context LOCATION uses ption 定位 false mLocationClient |
1.下载地址:http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android-download 官方文档:http://developer.baidu.com/map/index.php?title=android-locsdk 2.配置: ①key值的获取,在应用管理添加应用时根据提示填写即可,这里我只介绍安全码的获取。 安全码有三部分:Android签名的sha1 的值 + “;” + packageName 组成; Android签名的sha1 值的获取有两种方式: 一、查看Eclipse获取,这个要求你的adt版本在22以上: 二、通过控制台获取,如图: 密匙库口令默认是android; ②把下面包复制到自己工程,如图: ③AndroidManifest.xml文件配置 一、权限: <!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> 注意: 定位SDKv3.1版本之后,以下权限已不需要,请取消声明,否则将由于Android 5.0多帐户系统加强权限管理而导致应用安装失败。 二、声明service组件,每个工程有单独的service,如下: <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> 三、添加标签: <meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="key" /> //key:开发者申请的key3.类介绍及相关代码: package com.example.baidumapdemo; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import android.content.Context; import android.widget.Toast; public class BaiduMapLocationUtils implements BDLocationListener{ private static LocationClient mLocationClient; //定位客户端 private LocationClientOption mLocationClientOption; private Context context; private String currentCity = null; //当前所在城市 private boolean isFirLoc = true; //是否是第一次定位 private static BaiduMapLocationUtils mLocationUtils; private BaiduMapLocationUtils(Context context){ init(context); } public static BaiduMapLocationUtils getInstance(Context context){ if(mLocationUtils == null){ mLocationUtils = new BaiduMapLocationUtils(context); mLocationClient.start(); } return mLocationUtils; } /** * 初始化数据及定位相关 * @param context */ public void init(Context context){ this.context = context; mLocationClient = new LocationClient(context); mLocationClient.registerLocationListener(this); mLocationClientOption = new LocationClientOption() mLocationClientOption.setCoorType("bd09ll"); //返回坐标类型 mLocationClientOption.setScanSpan(1000 * 1); //定位间隔时间 mLocationClientOption.setAddrType("all"); //是否需要地址信息,默认为false mLocationClientOption.SetIgnoreCacheException(false); //可选,默认false,设置是否收集CRASH信息,默认收集 mLocationClientOption.setEnableSimulateGps(false); //可选,默认false,设置是否需要过滤gps仿真结果,默认需要 mLocationClientOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要 mLocationClientOption.setOpenGps(true);//可选,默认false,设置是否使用gps mLocationClientOption.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 mLocationClientOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京**附近” mLocationClientOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 mLocationClientOption.setIgnoreKillProcess(false);//可选,默认false,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认杀死 mLocationClient.setLocOption(mLocationClientOption); } @Override public void onReceiveLocation(BDLocation location) { if(location == null || location.getCity() == null){ if(isFirLoc){ Toast.makeText(context, "定位失败,错误类型:" + BDLocation.TypeServerError, Toast.LENGTH_SHORT).show(); isFirLoc = false; } return; } if((currentCity == null && location.getCity() != null) || (location.getCity() != null && !location.getCity().equals(currentCity))){ currentCity = location.getCity(); Toast.makeText(context, "当前所在城市:" + currentCity, Toast.LENGTH_SHORT).show(); return; } } public void onReceivePoi(BDLocation location) { } /** * 关闭定位功能 */ public void onStop(){ mLocationClient.stop(); } } 在这里类里我仅封装了定位部分,配置完成之后在onCreate里直接调用即可实现定位功能,我会稍后介绍在地图上标记位置。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|