修改云台偏航向下

This commit is contained in:
cxf 2026-04-28 11:39:16 +08:00
parent 2789674a2d
commit 5fd8e30b97
10 changed files with 146 additions and 41 deletions

View File

@ -23,6 +23,9 @@
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- bugly -->
<!-- 安装APK所需权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.READ_LOGS" />
<!-- 开机启动所需权限 -->
@ -110,6 +113,17 @@
</receiver>
<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true" />
<!-- FileProvider for APK installation on Android 7.0+ -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>

View File

@ -733,6 +733,7 @@ open class MainActivity : BaseActivity() {
startVtxHeartbeat()
SpeakerManager.getInstance().initMegaphoneInfo()
GimbalManager.getInstance().setmode()
//GimbalManager.getInstance().gimsetmode()
@ -799,7 +800,7 @@ open class MainActivity : BaseActivity() {
GeoidManager.getInstance().init(this);
GimbalManager.getInstance().setmode()
//GimbalManager.getInstance().gimsetmode()
//开启雷达监听器
//PerceptionManager.getInstance().isladraopeninti()
@ -821,8 +822,6 @@ open class MainActivity : BaseActivity() {
LogUtil.log(TAG, "推流类型:" + PreferenceUtils.getInstance().customStreamType)
}
} else {
if ((isFlightControllerConnect == null || isFlightControllerConnect != true) && (isCameraConnect == null || isCameraConnect != true)) {
handler.postDelayed({
@ -869,7 +868,7 @@ open class MainActivity : BaseActivity() {
//开启雷达监听器
//PerceptionManager.getInstance().isladraopeninti()
GimbalManager.getInstance().setmode()
LogUtil.log(TAG, "自定义推流方式:" + PreferenceUtils.getInstance().customStreamType)
@ -1261,6 +1260,12 @@ open class MainActivity : BaseActivity() {
FLAG_STOP_ARUCO ->
startArucoType = 0
"REFRESH_VIDEO_SOURCE" -> {
// 起飞后刷新视频源避免FPVWidget因相机状态变化卡死
swapVideoSource()
LogUtil.log(TAG,"刷新视频流")
}
MqttCallBack.FLAG_RESET_CLEAN_MODE ->
setViewVisibilityWithCleanMode()
}

View File

@ -30,6 +30,7 @@ import com.aros.apron.manager.StickManager;
import com.aros.apron.manager.StreamManager;
import com.aros.apron.manager.SystemManager;
import com.aros.apron.manager.TakeOffToPointManager;
import com.aros.apron.manager.UpdateManager;
import com.aros.apron.mix.Aprondown;
import com.aros.apron.mix.Aprongim;
import com.aros.apron.tools.ApronArucoDetect;
@ -600,6 +601,20 @@ public class MqttCallBack extends BaseManager implements MqttCallbackExtended {
}
break;
case Constant.APP_UPDATE:
LogUtil.log(TAG, "收到:远程更新 " + jsonString);
String apkUrl = message.getData() != null ? message.getData().getUrl() : null;
if (apkUrl != null && !apkUrl.isEmpty()) {
UpdateManager.getInstance().startUpdate(
ApronApp.Companion.getApplication(),
apkUrl,
() -> sendMsg2Server(message)
);
} else {
LogUtil.log(TAG, "更新APK链接为空");
sendFailMsg2Server(message, "更新APK链接为空");
}
break;
// //获取控制权
// case 60007:

View File

@ -342,9 +342,12 @@ public class Constant {
//A1云台校准
public static final String DRC_LIGHT_CALIBRATION="drc_light_calibration";
/**
* 远程更新APK
*/
public static final String APP_UPDATE="app_update";
}

View File

@ -173,6 +173,12 @@ public class CameraManager extends BaseManager {
Movement.getInstance().setPhoto_status("fail");
Movement.getInstance().setMode_code(3);
stopReport();
}else if(t1 == PanoramaExitStatus.ABORTED){
Movement.getInstance().setPhoto_current_step(3000);
Movement.getInstance().setPhoto_result(0);
Movement.getInstance().setPhoto_status("fail");
Movement.getInstance().setMode_code(3);
stopReport();
}
}
}

View File

@ -914,9 +914,11 @@ public class FlightManager extends BaseManager {
//降落时将云台朝下
private void gimbalDownwards() {
if (goHomeExecutionState == GoHomeState.LANDING.value()
&& Movement.getInstance().getElevation() > 11 && !isGimbalDownwards) {
MediaDataCenter.getInstance().getCameraStreamManager().setVisionAssistViewDirection(VisionAssistDirection.DOWN, new CommonCallbacks.CompletionCallback() {
@Override
public void onSuccess() {
@ -951,12 +953,18 @@ public class FlightManager extends BaseManager {
DroneHelper.getInstance().setCameraFocusMode();
new android.os.Handler().postDelayed(() -> {
setkuaim();
}, 500);
new android.os.Handler().postDelayed(() -> {
setCameraExposureMode();
}, 500);
new android.os.Handler().postDelayed(() -> {
EventBus.getDefault().post("REFRESH_VIDEO_SOURCE");
}, 2000);
//将镜头设置为自动对焦
// new android.os.Handler().postDelayed(() -> {
// setCameraExposureCompensation();
@ -1342,30 +1350,35 @@ public class FlightManager extends BaseManager {
if (!getGimbalAndCameraEnabled()) {
return;
}
GimbalManager.getInstance().gimbalReset();
new Handler().postDelayed(() -> {
if (Movement.getInstance().isPlaneWing() && Movement.getInstance().getHome_distance() < 20
&& Movement.getInstance().getElevation() < 88
&& Movement.getInstance().getBattery_a_capacity_percent() > 25
&& ((flightMode != null && flightMode == FlightMode.WAYPOINT) ||
(flightMode != null && flightMode == FlightMode.AUTO_TAKE_OFF))) {
WayLineExecutingInterruptManager.getInstance().onExecutingInterruptToDo();
} else {
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
KeyManager.getInstance().performAction(createKey(FlightControllerKey.KeyStartGoHome), new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() {
@Override
public void onSuccess(EmptyMsg emptyMsg) {
sendMsg2Server(message);
}
@Override
public void onFailure(@NonNull IDJIError error) {
sendFailMsg2Server(message, "返航执行失败:" + getIDJIErrorMsg(error));
}
});
}
if (Movement.getInstance().isPlaneWing() && Movement.getInstance().getHome_distance() < 20
&& Movement.getInstance().getElevation() < 88
&& Movement.getInstance().getBattery_a_capacity_percent() > 25
&& ((flightMode != null && flightMode == FlightMode.WAYPOINT) ||
(flightMode != null && flightMode == FlightMode.AUTO_TAKE_OFF))) {
WayLineExecutingInterruptManager.getInstance().onExecutingInterruptToDo();
} else {
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
KeyManager.getInstance().performAction(createKey(FlightControllerKey.KeyStartGoHome), new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() {
@Override
public void onSuccess(EmptyMsg emptyMsg) {
sendMsg2Server(message);
}
@Override
public void onFailure(@NonNull IDJIError error) {
sendFailMsg2Server(message, "返航执行失败:" + getIDJIErrorMsg(error));
}
});
}
},1000);
}

View File

@ -32,7 +32,7 @@ public class FlightTaskProgressManager extends BaseManager {
//如果是一键起飞航线或之后的指点飞行这个就不用发除此之外航线以及指点飞行都要发
if (PreferenceUtils.getInstance().getMissionType()==0&& (Movement.getInstance().isPlaneWing()
|| Movement.getInstance().isMotorsOn()) && Movement.getInstance().isWaylineinterpter() ) {
|| Movement.getInstance().isMotorsOn()) && Movement.getInstance().isWaylineinterpter()) {
sendFlightTaskProgress2Server();
}

View File

@ -169,6 +169,22 @@ public class GimbalManager extends BaseManager {
VirtualStickManager.getInstance().sendVirtualStickAdvancedParam(virtualStickFlightControlParam);
}
public void setmode() {
KeyManager.getInstance().setValue(KeyTools.createKey(GimbalKey.KeyGimbalMode, ComponentIndexType.PORT_1), GimbalMode.YAW_FOLLOW, new CommonCallbacks.CompletionCallback() {
@Override
public void onSuccess() {
LogUtil.log(TAG, "云台跟随");
}
@Override
public void onFailure(@NonNull IDJIError idjiError) {
LogUtil.log(TAG, "云台跟随失败");
}
});
}
//云台重置
public void gimbalReset() {
@ -255,6 +271,10 @@ public class GimbalManager extends BaseManager {
case 3:
GimbalAngleRotation rotation1 = new GimbalAngleRotation();
rotation1.setMode(GimbalAngleRotationMode.ABSOLUTE_ANGLE);
if (!TextUtils.isEmpty(Movement.getInstance().getGimbal_yaw() + "")) {
rotation1.setYaw(Movement.getInstance().getGimbal_yaw());
LogUtil.log(TAG,"俯仰向下"+Movement.getInstance().getGimbal_yaw());
}
rotation1.setPitch(-90.0);
KeyManager.getInstance().performAction(KeyTools.createKey(GimbalKey.KeyRotateByAngle, ComponentIndexType.PORT_1), rotation1, new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() {
@Override
@ -268,6 +288,22 @@ public class GimbalManager extends BaseManager {
}
}
);
// GimbalAngleRotation rotation1 = new GimbalAngleRotation();
// rotation1.setMode(GimbalAngleRotationMode.ABSOLUTE_ANGLE);
// rotation1.setPitch(-90.0);
// KeyManager.getInstance().performAction(KeyTools.createKey(GimbalKey.KeyRotateByAngle, ComponentIndexType.PORT_1), rotation1, new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() {
// @Override
// public void onSuccess(EmptyMsg emptyMsg) {
// sendMsg2Server(message);
// }
//
// @Override
// public void onFailure(@NonNull IDJIError error) {
// sendFailMsg2Server(message, "偏航向下失败:" + getIDJIErrorMsg(error));
// }
// }
// );
break;
}

View File

@ -26,6 +26,8 @@ import com.dji.wpmzsdk.common.data.KMZInfo;
import com.dji.wpmzsdk.manager.WPMZManager;
import com.google.gson.Gson;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@ -270,8 +272,9 @@ public class MissionV3Manager extends BaseManager {
Movement.getInstance().setVirtualStickQuitMission(false);
sendEvent2Server("任务状态:航线任务执行中断", 1);
Movement.getInstance().setTask_status("paused");
if(PreferenceUtils.getInstance().getMissionType()==0){
Movement.getInstance().setTask_status("paused");
sendFlightTaskProgress2Server();
}
@ -805,14 +808,10 @@ public class MissionV3Manager extends BaseManager {
sendEvent2Server("任务开始执行", 1);
Movement.getInstance().setTask_current_step(23);
// Movement.getInstance().setMode_code(5);
// // 自动起飞
// Movement.getInstance().setMode_code(4);
//
// new android.os.Handler(android.os.Looper.getMainLooper()).postDelayed(() -> {
// Movement.getInstance().setMode_code(5);
// }, 2000);
// 起飞后相机状态变化可能导致FPVWidget卡死延迟刷新视频源
mainHandler.postDelayed(() -> {
EventBus.getDefault().post("REFRESH_VIDEO_SOURCE");
}, 2000);
}
@ -878,7 +877,13 @@ public class MissionV3Manager extends BaseManager {
@Override
public void onSuccess() {
sendMsg2Server(message);
Movement.getInstance().setTask_status("paused");
if( PreferenceUtils.getInstance().getMissionType()==0){
Movement.getInstance().setTask_status("paused");
sendFlightTaskProgress2Server();
}
//暂停成功就是手动飞行

View File

@ -33,6 +33,8 @@ import com.dji.wpmzsdk.common.data.KMZInfo;
import com.dji.wpmzsdk.manager.WPMZManager;
import com.google.gson.Gson;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@ -392,6 +394,12 @@ public class TakeOffToPointManager extends BaseManager {
sendEvent2Server("任务开始执行", 1);
Movement.getInstance().setTask_current_step(23);
Movement.getInstance().setTakeoff_result(0);
// 起飞后相机状态变化可能导致FPVWidget卡死延迟刷新视频源
mainHandler.postDelayed(() -> {
EventBus.getDefault().post("REFRESH_VIDEO_SOURCE");
}, 2000);
}
@Override