59 lines
1.7 KiB
Java
59 lines
1.7 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 dji.sdk.keyvalue.key.FlightControllerKey;
|
||
|
|
import dji.v5.manager.KeyManager;
|
||
|
|
|
||
|
|
public class WirelessLinkManager 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;
|
||
|
|
|
||
|
|
sendWireless2Server();
|
||
|
|
|
||
|
|
// 始终基于“实际执行时间”来调度
|
||
|
|
handler.postDelayed(this, INTERVAL);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
private WirelessLinkManager() {
|
||
|
|
}
|
||
|
|
|
||
|
|
public static WirelessLinkManager getInstance() {
|
||
|
|
return WirelessLinkHolder.INSTANCE;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void initWirelessLink() {
|
||
|
|
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
|
||
|
|
if (isConnect != null && isConnect) {
|
||
|
|
handler.postDelayed(runnable, INTERVAL);
|
||
|
|
} else {
|
||
|
|
LogUtil.log(TAG, "初始化sdr/4g失败" + "flight controller is null");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private static class WirelessLinkHolder {
|
||
|
|
private static final WirelessLinkManager INSTANCE = new WirelessLinkManager();
|
||
|
|
}
|
||
|
|
}
|