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

201 lines
9.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
import dji.v5.common.error.IDJIError;
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失败");
}
}
// /**
// * 启动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);
// }
// }
// }
// );
// }
}