Android笔记(12)利用高德地图定位

来源:互联网 发布:php 判断是否含有中文 编辑:程序博客网 时间:2024/05/16 07:59

高德官网说明:http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation

1.先获得一个key:http://lbs.amap.com/dev/key/app(文章尾部附获取SHA1方法)

2.添加权限处添加:

<anInterface android:name="com.amap.api.location.APSService"></anInterface>

3.下载jar:http://amappc.cn-hangzhou.oss-pub.aliyun-inc.com/lbs/static/zip/AMap_Android_Location_SDK_All.zip
下载解压后打开Demo的app的libs,拿走jar,放在你的对应位置

4.在AndroidManifest中添加权限

<!--用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><!--用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><!--用于获取运营商信息,用于支持提供运营商信息相关的接口--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><!--用于访问wifi网络信息,wifi信息会用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!--用于访问网络,网络定位需要上网--><uses-permission android:name="android.permission.INTERNET"></uses-permission><!--用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><!--用于写入缓存数据到扩展存储卡--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--用于申请调用A-GPS模块--><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission><!--用于申请获取蓝牙信息进行室内定位--><uses-permission android:name="android.permission.BLUETOOTH"></uses-permission><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

5.设置高德Key,在AndroidManifest中的application标签中加入:

<meta-data android:name="com.amap.api.v2.apikey" android:value="key"><!--开发者申请的key--></meta-data>

6.在Activity中声明

    public AMapLocationClient mLocationClient = null;//声明AMapLocationClient类对象    public AMapLocationClientOption mLocationOption = null;//声明AMapLocationClientOption对象

7.在Activity中设置

mLocationClient = new AMapLocationClient(context);                mLocationClient.setLocationListener(new AMapLocationListener() {//设置定位回调监听                    @Override                    public void onLocationChanged(AMapLocation aMapLocation) {                        if(!aMapLocation.getAddress().equals("")) {                            textView.setText(aMapLocation.getAddress());//显示地址                        }else{                           Toast.makeText(context,aMapLocation.getErrorInfo(),Toast.LENGTH_SHORT).show();//打印错误信息                        }                    }                });                mLocationOption = new AMapLocationClientOption();//初始化AMapLocationClientOption对象                mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。                //mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving); //设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。                //mLocationOption.setLocationMode(AMapLocationMode.Device_Sensors);//设置定位模式为AMapLocationMode.Device_Sensors,仅设备模式。                mLocationOption.setOnceLocation(true);//获取一次定位结果://该方法默认为false。                mLocationOption.setOnceLocationLatest(true);//获取最近3s内精度最高的一次定位结果://设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。                //mLocationOption.setInterval(1000);//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。                mLocationOption.setNeedAddress(true);//设置是否返回地址信息(默认返回地址信息)                mLocationOption.setWifiActiveScan(false);//设置是否强制刷新WIFI,默认为true,强制刷新。                mLocationOption.setMockEnable(true);//设置是否允许模拟位置,默认为true,允许模拟位置                mLocationOption.setHttpTimeOut(15000);//设置定位请求超时时间,单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。                mLocationOption.setLocationCacheEnable(false);//关闭缓存机制

8.在Activity中开启定位

mLocationClient.setLocationOption(mLocationOption);//给定位客户端对象设置定位参数mLocationClient.startLocation();//启动定位

9.停止定位

mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。

附:使用 keytool(jdk自带工具)获取SHA1
,按照如下步骤进行操作:
(1).运行进入控制台。
(2).在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹。
(3).继续在控制台输入命令。
命令为:keytool -list -v -keystore debug.keystore

原创粉丝点击