美文网首页
Android 集成高德SDK

Android 集成高德SDK

作者: 图之 | 来源:发表于2018-11-06 16:25 被阅读0次

先去高德开发平台注册一下你的APP


image.png

清单文件中添加权限声明

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

还需要在清单文件中添加key值和高德服务

 <!-- 高德地图 -->
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你的高德key值" />
        <service android:name="com.amap.api.location.APSService"/>

在studio中添加关于高德的sign


image.png

最后抄一个高德的工具类

public OnLocationListenter onLocationListenter;
    public AMapLocationClient aMapLocationClient;

    /**
     * 高德地图参数配置
     *
     * @return
     */
    public AMapLocationClientOption parameterConfiguration() {
        //初始化AMapLocationClientOption对象
        AMapLocationClientOption mLocationOption = new AMapLocationClientOption();
        //设置定位模式(采取高精度定位模式)
        mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
        //设置单次定位
        mLocationOption.setOnceLocation(true);
        //获取3s内最精确的一次定位结果
        mLocationOption.setOnceLocationLatest(true);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        //设置是否允许模拟位置,默认为true,允许模拟位置
//        mLocationOption.setMockEnable(true);
        //单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
//        mLocationOption.setHttpTimeOut(20000);
        return mLocationOption;
    }

    /**
     * 开始定位
     *
     * @return
     */
    public void startLocation(Context context, OnLocationListenter onLocationListenter) {
        this.onLocationListenter = onLocationListenter;
        //初始化定位
        aMapLocationClient = new AMapLocationClient(context);
        //设置定位成功监听
        aMapLocationClient.setLocationOption(parameterConfiguration());
        //成功结果监听
        aMapLocationClient.setLocationListener(aMapLocationListener);
        //检测是否有GPS权限
        AndPermission
                .with(context)
                .requestCode(100)
                .permission(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
                .callback(permissionListener)
                .start();


    }

    /**
     * 定位监听
     */
    public interface OnLocationListenter {
        /**
         * 获取经纬度
         *
         * @param longitude 经度
         * @param latitude  纬度
         */
        void getLatitudeAndLongitude(double longitude, double latitude);
    }

    AMapLocationListener aMapLocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (onLocationListenter != null) {
                aMapLocationClient.onDestroy();
                onLocationListenter.getLatitudeAndLongitude(aMapLocation.getLongitude(), aMapLocation.getLatitude());
            }
        }
    };
    PermissionListener permissionListener = new PermissionListener() {
        @Override
        public void onSucceed(int requestCode, @NonNull List<String> grantPermissions) {
            aMapLocationClient.startLocation();
        }

        @Override
        public void onFailed(int requestCode, @NonNull List<String> deniedPermissions) {
            //获取位置失败
            if (onLocationListenter != null) {
                onLocationListenter.getLatitudeAndLongitude(0, 0);
            }
        }
    };

好了,没毛病,集成一个高德的定位SDK就结束了!!!!

相关文章

网友评论

      本文标题:Android 集成高德SDK

      本文链接:https://www.haomeiwen.com/subject/yaiyxqtx.html