【背景】
随着无人机越来越普遍,世界各国政府制定了规则,鼓励无人机安全高效飞行,同时保护空中的飞机和直升机以及地面上的人员和财产。现在,无人机监管新时代的一大组成部分即将在美国生效,即远程ID。美国联邦航空局要求在联邦航空局注册的新制造无人机的第一个远程ID合规期限为2022年9月16日,尽管联邦航空局宣布将其延长至2022年12月16日。已经拥有DJI无人机的用户无需立即采取任何行动,因为现有无人机在2023年9月16日之前不需要遵守FAA远程身份证规定。DJI将在该日期之前提供固件更新,以使大多数现代DJI无人机符合要求。用户可以在2023年9月16日之前随时自行决定安装这些更新。FAA远程身份识别规则要求在美国空域运行的大多数无人机具备远程识别能力。可以将远程身份识别(Remote ID)作为无人机的电子车牌系统,允许当局识别驾驶无人机的人。物理牌照在小型机载无人机上用处不大,因此远程ID通过无线电信号向地面接收器发送牌照信息。远程ID将提供飞行中无人机的信息,例如无人机及其控制者的身份、位置和高度。
【SDK接口】
目前MSDK v5提供了IUASRemoteIDManager类来满足Remote ID的需求。Remote ID的广播已经在M300RTK的最新固件上实行,开发者无需调用任何接口开启/关闭Remote ID广播功能。我们提供的IUASRemoteIDManager类的作用是将我们正在广播的Remote ID信息回传,您将可以把他们显示在app上。
public interface IUASRemoteIDManager {
/**
* 所有国家在使用IUASRemoteIDManager接口之前,必须显示声明使用哪个国家的策略。飞行器在哪个国家飞行,就传入哪个国家对应的AreaCode即可。
* 比如飞行器在美国飞行,则传入AreaCode.UNITED_STATES_OF_AMERICA
* 比如飞行器在日本飞行,则传入AreaCode.JAPAN
*/
@Nullable
IDJIError setAreaCode(AreaCode areaCode);
/**
* 一、法国相关接口
*/
// 开启与关闭 EID功能
void setElectronicIDEnabled(boolean isEnabled, @NonNull CommonCallbacks.CompletionCallback callback);
// 获取EID开启状态
void getElectronicIDEnabled(@NonNull CommonCallbacks.CompletionCallbackWithParam<Boolean> callback);
// 添加EID监听器
void addElectronicIDStatusListener(ElectronicIDStatusListener listener);
// 移除EID监听器
void removeElectronicIDStatusListener(ElectronicIDStatusListener listener);
// 移除添加的所有EID监听器
void clearAllElectronicIDStatusListener();
/**
* 二、日本相关接口
*/
// 设置民航局给的无人机相关信息,包括注册码、共享密钥、nonce info等,json编码的字符串数据
void setUARegistrationNumber(String number, @NonNull CommonCallbacks.CompletionCallback callback);
// 设置和获取无人机注册码。设置的时候需要有格式校验。csdk接口有删除功能,msdk不开放。
void getUARegistrationNumber(@NonNull CommonCallbacks.CompletionCallbackWithParam<String> callback);
// 添加无人机注册码状态,与{@link IUASRemoteIDManager#addUASRemoteIDStatusListener}作用一致,实现一起一个即可
void addUARegistrationNumberStatusListener(UARegistrationNumberStatusListener listener);
// 移除特定无人机注册码状态
void removeUARegistrationNumberStatusListener(UARegistrationNumberStatusListener listener);
// 删除所有无人机机注册码状态
void clearAllUARegistrationNumberStatusListener();
UASRemoteIDStatus getUASRemoteIDStatus();
/**
*
* 三、所有国家共有接口(除了法国),添加无人机远程识别统一状态监听。美国和日本推荐使用该接口。
*/
void addUASRemoteIDStatusListener(UASRemoteIDStatusListener listener);
void removeUASRemoteIDStatusListener(UASRemoteIDStatusListener listener);
void clearUASRemoteIDStatusListener();
}
【示例代码】
if (AreaCodeManager.getInstance().areaCode.areaCodeEnum == AreaCode.UNITED_STATES_OF_AMERICA) {
UASRemoteIDManager.getInstance().setAreaCode(AreaCode.UNITED_STATES_OF_AMERICA)
UASRemoteIDManager.getInstance().addUASRemoteIDStatusListener { }
} else if (AreaCodeManager.getInstance().areaCode.areaCodeEnum == AreaCode.JAPAN) {
UASRemoteIDManager.getInstance().setAreaCode(AreaCode.JAPAN)
UASRemoteIDManager.getInstance().setUARegistrationNumber()
UASRemoteIDManager.getInstance().addUASRemoteIDStatusListener { }
} else if (AreaCodeManager.getInstance().areaCode.areaCodeEnum == AreaCode.FRANCE) {
UASRemoteIDManager.getInstance().setAreaCode(AreaCode.FRANCE)
UASRemoteIDManager.getInstance().setElectronicIDEnabled()
UASRemoteIDManager.getInstance().addElectronicIDStatusListener()
}
评论
0 条评论
请登录写评论。