Android 腾讯地图定位

本文详细介绍了如何使用腾讯地图SDK进行Android应用的位置定位。主要内容包括申请API Key、配置开发环境、实现定位功能及监听位置更新等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,申请key

https://lbs.qq.com/console/key.html

2,配置环境

a,配置sdk

下载jar包 TencentLocationSdk_v7.1.5 (点击链接可直接下载)

解压得到以下路径:
在这里插入图片描述

我们要用到的是libs目录下的so包 和 sdk jar
在这里插入图片描述在这里插入图片描述
很简单,sdk jar包拷到项目中的libs目录下,并 选中 > 右键 > Add As Library,没有libs目录就新建,与src目录同级。

so包拷到jniLibs 目录下,没有jniLibs 目录就新建,在main目录下,与java目录同级。

b,配置 manifest

添加权限:

<!-- 通过GPS得到精确位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 通过网络得到粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 访问网络,某些位置信息需要从网络服务器获取 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 修改WiFi状态,发起WiFi扫描, 需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 访问网络状态, 检测网络的可用性,需要网络运营商相关信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!-- 访问手机当前状态, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

加过的就不用重复再加

配置key:

<application>
    ...
    <meta-data android:name="TencentMapSDK" android:value="您申请的Key" />
</application>

混淆(用就加,不用就不加,不知道就不加):

-keepclassmembers class ** {
    public void on*Event(...);
}
-keep class c.t.**{*;}
-keep class com.tencent.map.geolocation.**{*;}
-keep class com.tencent.tencentmap.lbssdk.service.**{*;}
 
 
-dontwarn  org.eclipse.jdt.annotation.**
-dontwarn  c.t.**

3,开始定位

a,建议先获取位置权限,之前已获取的可以跳过
RxPermissions rxPermission = new RxPermissions(AddressLocationActivity.this);
        rxPermission.requestEach(Manifest.permission.ACCESS_FINE_LOCATION)
                .subscribe(new Consumer<Permission>() {
                    @Override
                    public void accept(Permission permission) throws Exception {
                        if (permission.granted) {
                        // 已经同意该权限
                            initTencentLocationRequest();
                        } else {
                        // 拒绝了该权限
                        }
                    }
                });
b,创建监听
    /**
     * 开启定位监听器
     */
    private void initTencentLocationRequest() {
        TencentLocationRequest request = TencentLocationRequest.create();
        request.setInterval(30000).setRequestLevel(1).setAllowCache(true);
        TencentLocationManager locationManager = TencentLocationManager.getInstance(this);
        int error = locationManager.requestLocationUpdates(request, this);
        if (error == 0)
            LogUtil.i("注册位置监听器成功!");
        else
            LogUtil.i("注册位置监听器失败!");
    }

Activity 实现TencentLocationListener 接口并 实现两个方法 onLocationChangedonStatusUpdate,前者是位置更新时的回调,后者是GPS和Wi-Fi的状态变化回调。

c,定位回调
    /**
     * 位置更新时的回调
     *
     * @param tencentLocation 新的位置
     * @param i               错误码
     * @param s               错误描述
     */
    @Override
    public void onLocationChanged(TencentLocation tencentLocation, int i, String s) {
        if (TencentLocation.ERROR_OK == i) {
            // 定位成功
            if (tencentLocation != null) {
                String lat = String.valueOf(tencentLocation.getLatitude());
                String lon = String.valueOf(tencentLocation.getLongitude());
                LogUtil.i(lat + "---" + lon);
            }
        } else {
            // 定位失败
        }
    }

定位成功之后,我们可以在TencentLocation 对象中获取我们需要的信息,而TencentLocation 中信息的有效性是根据setRequestLevel 等级确定的
在这里插入图片描述

ok,到这里就完成基本定位了,但是也要做好善后工作。

d,删除位置监听器
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //删除位置监听器
        TencentLocationManager locationManager = TencentLocationManager.getInstance(this);
        locationManager.removeUpdates(this);
    }

ok 基本功能完成, 更多 查看官方文档


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值