makcar/app/src/main/java/com/aros/apron/manager/LTEManager.java

201 lines
9.1 KiB
Java
Raw Normal View History

2026-01-30 11:47:32 +08:00
package com.aros.apron.manager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.aros.apron.base.BaseManager;
import com.aros.apron.entity.Movement;
import com.aros.apron.tools.LogUtil;
import java.util.List;
import dji.sdk.keyvalue.key.AirLinkKey;
import dji.sdk.keyvalue.key.FlightControllerKey;
import dji.sdk.keyvalue.key.KeyTools;
import dji.sdk.keyvalue.value.airlink.FrequencyBand;
import dji.sdk.keyvalue.value.airlink.WlmDongleInfo;
import dji.sdk.keyvalue.value.airlink.WlmDongleWorkState;
import dji.sdk.keyvalue.value.airlink.WlmLinkFrequenceBand;
import dji.sdk.keyvalue.value.airlink.WlmLinkQualityLevelInfo;
import dji.sdk.keyvalue.value.airlink.WlmLinkStatus;
import dji.v5.common.callback.CommonCallbacks;
2026-05-25 10:46:57 +08:00
import dji.v5.common.error.IDJIError;
2026-01-30 11:47:32 +08:00
import dji.v5.manager.KeyManager;
import dji.v5.manager.aircraft.lte.LTEDongleInfoListener;
import dji.v5.manager.aircraft.lte.LTELinkInfo;
import dji.v5.manager.aircraft.lte.LTELinkInfoListener;
public class LTEManager extends BaseManager {
private LTEManager() {
}
private static class LTEHolder {
private static final LTEManager INSTANCE = new LTEManager();
}
public static LTEManager getInstance() {
return LTEHolder.INSTANCE;
}
public void initLTEInfo() {
//初始化了initLTEInfo
LogUtil.log(TAG,"initLTEInfo");
Boolean isConnect = KeyManager.getInstance().getValue(KeyTools.createKey(FlightControllerKey.KeyConnection));
if (isConnect != null && isConnect) {
LogUtil.log(TAG,"initLTEInfo连接成功");
KeyManager.getInstance().listen(KeyTools.createKey(AirLinkKey.KeyWlmLinkStatus), this, new CommonCallbacks.KeyListener<WlmLinkStatus>() {
@Override
public void onValueChange(@Nullable WlmLinkStatus wlmLinkStatus, @Nullable WlmLinkStatus t1) {
if (t1 != null) {
Movement.getInstance().setLink_state_4g(t1.getIsLteLinkConnected() ? "1" : "0");
Movement.getInstance().setSdr_link_state(t1.getSdrFrequenceBand() == WlmLinkFrequenceBand.UNKNOWN ? "1" : "0");
}
}
});
KeyManager.getInstance().listen(KeyTools.createKey(AirLinkKey.KeyWlmLinkQualityLevel), this, new CommonCallbacks.KeyListener<WlmLinkQualityLevelInfo>() {
@Override
public void onValueChange(@Nullable WlmLinkQualityLevelInfo wlmLinkQualityLevelInfo, @Nullable WlmLinkQualityLevelInfo t1) {
if (t1 != null) {
Movement.getInstance().setQuality_4g(t1.getLteLinkQualityLevel() + "");
Movement.getInstance().setGnd_quality_4g(t1.getLteLinkQualityLevel() + "");
Movement.getInstance().setUav_quality_4g(t1.getLteLinkQualityLevel() + "");
}
}
});
KeyManager.getInstance().listen(KeyTools.createKey(AirLinkKey.KeyDownLinkQualityRaw), this, new CommonCallbacks.KeyListener<Integer>() {
@Override
public void onValueChange(@Nullable Integer integer, @Nullable Integer value) {
if (value != null) {
if (value >= 1 && value <= 20) {
Movement.getInstance().setSdr_quality("1");
} else if (value >= 21 && value <= 40) {
Movement.getInstance().setSdr_quality("2");
} else if (value >= 41 && value <= 60) {
Movement.getInstance().setSdr_quality("3");
} else if (value >= 61 && value <= 80) {
Movement.getInstance().setSdr_quality("4");
} else if (value >= 81 && value <= 100) {
Movement.getInstance().setSdr_quality("5");
} else {
Movement.getInstance().setSdr_quality("5");
}
}
}
});
KeyManager.getInstance().listen(KeyTools.createKey(AirLinkKey.KeyFrequencyBand), this, new CommonCallbacks.KeyListener<FrequencyBand>() {
@Override
public void onValueChange(@Nullable FrequencyBand frequencyBand, @Nullable FrequencyBand t1) {
if (t1 != null) {
switch (t1) {
case BAND_2_DOT_4G:
Movement.getInstance().setSdr_freq_band("2.4");
Movement.getInstance().setFreq_band_4g("2.4");
break;
// case BAND_5_DOT_8G:
// Movement.getInstance().setSdr_freq_band("5.8");
// break;
default:
Movement.getInstance().setSdr_freq_band("5.8");
Movement.getInstance().setFreq_band_4g("5.8");
break;
}
}
}
});
dji.v5.manager.aircraft.lte.LTEManager.getInstance().addLTELinkInfoListener(new LTELinkInfoListener() {
@Override
public void onLTELinkInfoUpdate(LTELinkInfo info) {
if (info != null) {
Movement.getInstance().setLink_workmode(info.getLTELinkType() + "");
}
}
});
dji.v5.manager.aircraft.lte.LTEManager.getInstance().addLTEDongleInfoListener(new LTEDongleInfoListener() {
@Override
public void onLTEAircraftDongleInfoUpdate(@NonNull List<WlmDongleInfo> aircraftDongleInfos) {
if (aircraftDongleInfos != null&&aircraftDongleInfos.size()>0) {
Movement.getInstance().setDongle_number(aircraftDongleInfos.size() + "");
Movement.getInstance().setSdr_link_state(
aircraftDongleInfos.get(0).getWorkState() == WlmDongleWorkState.REGISTER_ROAMING ? "1" : "0");
} else {
Movement.getInstance().setDongle_number("0");
Movement.getInstance().setSdr_link_state("0");
}
}
@Override
public void onLTERemoteControllerDongleInfoUpdate(@NonNull List<WlmDongleInfo> remoteControllerDongleInfos) {
}
});
} else {
LogUtil.log(TAG, "初始化LTE失败");
}
}
2026-05-25 10:46:57 +08:00
// /**
// * 启动LTE认证认证通过后可调用setLTEEnhancedTransmissionType开启LTE增强图传
// * 调用前需先通过getLTEAuthenticationVerificationCode获取验证码
// *
// * @param phoneNumber LTE认证手机号码
// * @param verificationCode LTE认证验证码
// * @param callback 执行结果回调
// */
// public void startLTEAuthentication(String phoneNumber, String verificationCode, CommonCallbacks.CompletionCallback callback) {
// LogUtil.log(TAG, "startLTEAuthentication phone:" + phoneNumber);
// dji.v5.manager.interfaces.ILTEManager.getInstance().startLTEAuthentication(
// "86",
// phoneNumber,
// verificationCode,
// new CommonCallbacks.CompletionCallback() {
// @Override
// public void onResult(Object o, IDJIError iDJIError) {
// if (iDJIError == null) {
// LogUtil.log(TAG, "LTE认证成功");
// } else {
// LogUtil.log(TAG, "LTE认证失败: " + iDJIError.getDescription());
// }
// if (callback != null) {
// callback.onResult(o, iDJIError);
// }
// }
// }
// );
// }
//
// /**
// * 获取LTE认证验证码
// *
// * @param phoneNumber LTE认证手机号码
// * @param callback 执行结果回调
// */
// public void getLTEAuthenticationVerificationCode(String phoneNumber, CommonCallbacks.CompletionCallback callback) {
// LogUtil.log(TAG, "getLTEAuthenticationVerificationCode phone:" + phoneNumber);
// dji.v5.manager.interfaces.ILTEManager.getInstance().getLTEAuthenticationVerificationCode(
// "86",
// phoneNumber,
// new CommonCallbacks.CompletionCallback() {
// @Override
// public void onResult(Object o, IDJIError iDJIError) {
// if (iDJIError == null) {
// LogUtil.log(TAG, "获取验证码成功");
// } else {
// LogUtil.log(TAG, "获取验证码失败: " + iDJIError.getDescription());
// }
// if (callback != null) {
// callback.onResult(o, iDJIError);
// }
// }
// }
// );
// }
2026-01-30 11:47:32 +08:00
}