AR高精定位
原理
AR高精定位是指通过接入第三方的高精度坐标,然后经过坐标转换来实时的校正AR坐标,从而提高AR场景的定位精度。目前AR支持的高精定位只有千寻定位。
应用场景
AR高精定位适应于室外场景,要求场地宽阔无遮挡,远离楼宇,立交桥,大树等空旷区域。可应用于室外的数据场景恢复,采集等诸多场景。
功能实现
//添加华为定位服务和依赖
//设置项目级 build.gradle
allprojects {
repositories {
// 添加Maven库地址
maven {url 'https://developer.huawei.com/repo/'}
}
}
buildscript{
repositories {
// 添加Maven库地址
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
//添加华为依赖
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
}
}
// 设置模块级 build.gradle
dependencies {
// 添加华为依赖
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
}
apply plugin: 'com.huawei.agconnect'
// 通过OnLocationChangeListener接口的onLocationUpdate()方法回调得到定位数据。
public class QXActivity extends AppCompatActivity implements LocationQXManager.OnLocationChangeListener {
private static LocationQXManager locationQXManager = null;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
locationQXManager = LocationQXManager.getInstance(this);
// 设置接口回调
locationQXManager.setOnLocationChangeListener(this);
// 设置定位时间间隔,单位毫秒(默认是1000毫秒一个)
locationQXManager.setInterval(1000);
// 设置定位类型(默认是HIGH,代表高精度)
locationQXManager.setType(LocationType.HIGH);
}
@Override
protected void onResume() {
super.onResume();
// 重启定位
locationQXManager.onResume();
}
@Override
protected void onPause() {
super.onPause();
// 暂停定位
locationQXManager.onPause();
}
@Override
public void onLocationUpdate(LocationResult location, boolean isHighPrecision) {
if (isHighPrecision){
System.out.println("当前是高精度~"+"经度:"+location.getLongitude()+"\n"+"纬度:"+location.getLatitude()+
"\n"+"水平精度值:"+location.getAccuracy());
}else{
System.out.println("当前不是高精度~"+"经度:"+location.getLongitude()+"\n"+"纬度:"+location.getLatitude()+
"\n"+"水平精度值:"+location.getAccuracy());
}
}
}