维智 Android 定位SDK

获取位置

获取定位数据

首先,声明Service组件

请在application标签中声明service组件,每个app拥有自己单独的定位service。

<!-- 必选-->
<service android:name="com.wayz.location.WzService"></service>

然后,声明权限

Android 6.0及以上系统可以参考Android 6.0权限说明章节

<!--用于进行网络定位-->
<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.READ_PHONE_STATE"></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>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!-- 基础前台服务权限(兼容 Android 8.0-11) -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<!-- Android 12+ 定位类前台服务专用权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<!-- 后台定位核心权限(Android 10+) -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

最后,设置维智KEY

在application标签中加入:

<meta-data android:name="com.wayz.location.appkey" android:value="wz_key" />

代码实现

如下几行代码可以帮助您实现最基础的定位功能

private lateinit var client: WzLocationClient
private lateinit var option: WzLocationClientOption

private fun initLocationClient() {
    option = WzLocationClientOption()
    // 回调间隔
    option.interval = 5000
    option.isFastLocation = false
    option.setOnceLocate(false)
    client = WzLocationClient(this@BasicLocActivity, option)
    client?.startLocation(this@BasicLocActivity)
}

    override fun onLocationReceived(location: WzLocation) {
        // 定位结果返回
    }

    override fun onLocationError(exception: WzException) {
        tv.text = StringBuilder().append("数据异常:").append(exception.errorMessage).toString()
    }