74 lines
2.6 KiB
Java
74 lines
2.6 KiB
Java
package com.aros.apron.manager;
|
|
|
|
import static dji.sdk.keyvalue.key.KeyTools.createKey;
|
|
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.os.SystemClock;
|
|
import com.aros.apron.base.BaseManager;
|
|
import com.aros.apron.entity.Movement;
|
|
import com.aros.apron.tools.LogUtil;
|
|
import com.aros.apron.tools.PreferenceUtils;
|
|
|
|
import dji.sdk.keyvalue.key.FlightControllerKey;
|
|
import dji.v5.manager.KeyManager;
|
|
|
|
public class FlightTaskProgressManager extends BaseManager {
|
|
|
|
|
|
private static final long INTERVAL = 5000L;
|
|
private final Handler handler = new Handler(Looper.getMainLooper());
|
|
|
|
private long lastExecuteTime = 0L;
|
|
private final Runnable runnable = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
long now = SystemClock.elapsedRealtime();
|
|
if (now - lastExecuteTime < INTERVAL) {
|
|
handler.postDelayed(this, INTERVAL - (now - lastExecuteTime));
|
|
return;
|
|
}
|
|
lastExecuteTime = now;
|
|
|
|
//如果是一键起飞航线或之后的指点飞行,这个就不用发,除此之外航线以及指点飞行都要发
|
|
// if (PreferenceUtils.getInstance().getMissionType()==0 &&(Movement.getInstance().isPlaneWing()
|
|
// || Movement.getInstance().isMotorsOn()
|
|
// || Movement.getInstance().isMissionFinish1())) {
|
|
//
|
|
// sendFlightTaskProgress2Server();
|
|
//
|
|
// }
|
|
//只要一个满足就上报
|
|
if (Movement.getInstance().isPlaneWing() || Movement.getInstance().isMotorsOn()) {
|
|
sendFlightTaskProgress2Server();
|
|
}
|
|
if (Movement.getInstance().isMissionFinish1()) {
|
|
sendFlightTaskProgress2Server();
|
|
handler.removeCallbacks(this);
|
|
return;
|
|
}
|
|
// 始终基于“实际执行时间”来调度
|
|
handler.postDelayed(this, INTERVAL);
|
|
}
|
|
};
|
|
|
|
private FlightTaskProgressManager() {
|
|
}
|
|
|
|
public static FlightTaskProgressManager getInstance() {
|
|
return FlightTaskHolder.INSTANCE;
|
|
}
|
|
|
|
public void initFlightTaskProgress() {
|
|
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
|
|
if (isConnect != null && isConnect) {
|
|
handler.postDelayed(runnable, INTERVAL);
|
|
} else {
|
|
LogUtil.log(TAG, "初始化航线任务进度失败" + "flight controller is null");
|
|
}
|
|
}
|
|
|
|
private static class FlightTaskHolder {
|
|
private static final FlightTaskProgressManager INSTANCE = new FlightTaskProgressManager();
|
|
}
|
|
} |