1.说明
根据大疆开放的api,集成一个rtk定位的功能到我们的软件,两种方式
1.1有一个移动站,基站,让app去连接移动基站,获取gps定位信息
1.2用千寻的网络账号,自定义网络,来获取gps信息
2.效果图:我把项目代码单独抽了rtk功能的代码,运行,测试的效果图,可以拿到gps数据,但是对频有点问题,没有解决
3.下载地址:https://github.com/wrs13634194612/DJIRTK
4.代码
1.打开rtk模块
mRtk.setRtkEnabled(isChecked, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
}
});
2.获取rtk模块的状态,打开或关闭
mRtk.getRtkEnabled(new CommonCallbacks.CompletionCallbackWith<Boolean>() {
@Override
public void onSuccess(Boolean aBoolean) {
//这个东西用来判断是否成功开启RTK
//String description2 = "AZ=启用RTK模块: " + aBoolean;
// NettyClient.getInstance().sendMsgToServer(description2);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
tv_rtk_status.setText(String.valueOf(aBoolean)); //??这玩意能不能记住我的状态呢
}
});
}
3.设置信号源,移动站或者自定义网络
主要有这几种:根据需求 自行选择
NONE | Not using any reference station source. |
BASE_STATION | RTK is using the D-RTK 2 base station as the reference station. |
CUSTOM_NETWORK_SERVICE | RTK is using third-party network service as the reference station. The network service should use NTRIP(Networked Transport of RTCM via Internet Protocol). |
NETWORK_RTK | Default virtual reference station solution to provide cm level accurate position. The frame can be either WGS84 or CGCS 2000. Please note that this default solution can only be used in China. Please add the "djinetworkrtkhelper" to the project via gradle: implementation 'com.dji:library-networkrtk-helper:1.0' It is only supported by Phantom 4 RTK. |
UNKNOWN | Unknown reference station source. |
//设置信号源 移动站
mRtk.setReferenceStationSource(ReferenceStationSource.BASE_STATION, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
}
});
4.查看一下当前的信号源是什么
mRtk.addReferenceStationSourceCallback(new ReferenceStationSource.Callback() {
@Override
public void onReferenceStationSourceUpdate(ReferenceStationSource referenceStationSource) {
// String description3 = "AC=设置RTK信号源-移动站rtk: " + referenceStationSource.toString();
// NettyClient.getInstance().sendMsgToServer(description3); tv_rtk_source
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
tv_rtk_source.setText(String.valueOf(referenceStationSource));
}