开发环境:
android studio
1.首先你得有一个腾讯开发账号
传送门:https://lbs.qq.com/
进去之后注册。
2.获取APPKey:
3.在AndroidManifest.xml文件下配置APPKey:
<application>
...
<meta-data android:name="TencentMapSDK" android:value="您申请的Key" />
</application>
4.导入AndroidStudio
其实是有两种方式,一种是直接导入jar包,第二种是添加依赖。因为第二种方便很多,所以就选择第二种了。从这一步看来,腾讯定位比百度确实香很多。他瞄的上学期一直是用的百度。
1.修改build.gradle中的配置
增加配置如下:
llprojects {
repositories {
jcenter()
google()
mavenCentral()
}
}
2.在第二个build.gradle文件中的dependencies中增加依赖
implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.6'
5.在AndroidManifest.xml文件中添加权限:
<!-- 通过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" />
<!-- 访问手机当前状态, 需要device id用于网络定位 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 支持A-GPS辅助定位 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!-- 用于 log 日志 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
前面的准备工作做好了然后开始代码部分
1.获取TencentLocationManager实例
TencentLocationManager mLocationManager = TencentLocationManager.getInstance(this);
2.创建位置监听器
public class MyActivity extends Activity implements TencentLocationListener {
...
@Override
public void onLocationChanged(TencentLocation location, int error, String reason) {
// 用于接收定位结果
}
@Override
public void onStatusUpdate(String name, int status, String desc) {
//用于接收GPS、WiFi、Cell状态码,
}
}
3.构造TencentLocationRequest
TencentLocationRequest request = TencentLocationRequest.create()
//1.用户可以自定义定位间隔,事件单位为毫秒,不得小于1000毫秒
request.setInterval(1000);
//2.设置请求级别
request.setRequestLevel(TencentLocationRequest.REQUEST_LEVEL_NAME);
//3.是否允许使用GPS(建议用户开启,在室外场景可以显著提升定位精度);
request.setAllowGPS(true);
//4.是否需要获取传感器方向
request. setAllowDirection(true);
//5.是否需要开启室内定位
request.setIndoorLocationMode(true);
里面的请求级别可以自定义,参照表如下:
4.发起联系定位请求(开始定位)
mLocationManager.requestLocationUpdates(request,this);
5.停止定位
// mLocationManager.removeUpdates(this);
个人感觉腾讯的sdk比百度使用起来要简单方便很多,百度的工程包名还必须要和本地的一致,而腾讯位置服务就没有这种限制,甚至还可以起中文名。sdk腾讯只需要导入依赖即可。功能方面的话还需要进一步测试。