diff --git a/Opencv/.cxx/Debug/p1g6s634/arm64-v8a/configure_fingerprint.bin b/Opencv/.cxx/Debug/p1g6s634/arm64-v8a/configure_fingerprint.bin
index 5f7721d1..386866a1 100644
--- a/Opencv/.cxx/Debug/p1g6s634/arm64-v8a/configure_fingerprint.bin
+++ b/Opencv/.cxx/Debug/p1g6s634/arm64-v8a/configure_fingerprint.bin
@@ -2,28 +2,28 @@ C/C++ Structured Logx
 v
 tC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\additional_project_files.txtC
 A
-?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	ϻ���3 ����3u
+?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	��ƶ�3 ����3u
 s
-qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\android_gradle_build.json	ϻ���3�
+qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\android_gradle_build.json	��ƶ�3�
  ����3z
 x
-vC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\android_gradle_build_mini.json	л���3� ����3g
+vC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\android_gradle_build_mini.json	��ƶ�3� ����3g
 e
-cC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build.ninja	л���3�� ����3k
+cC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build.ninja	��ƶ�3�� ����3k
 i
-gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build.ninja.txt	л���3p
+gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build.ninja.txt	��ƶ�3p
 n
-lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build_file_index.txt	л���3
V ����3q
+lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\build_file_index.txt	��ƶ�3
V ����3q
 o
-mC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\compile_commands.json	л���3� ����3u
+mC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\compile_commands.json	��ƶ�3� ����3u
 s
-qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\compile_commands.json.bin	л���3	� ����3{
+qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\compile_commands.json.bin	��ƶ�3	� ����3{
 y
-wC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\metadata_generation_command.txt	л���3
+wC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\metadata_generation_command.txt	��ƶ�3
 � ����3n
 l
-jC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\prefab_config.json	л���3
( ����3s
+jC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\prefab_config.json	��ƶ�3
( ����3s
 q
-oC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\symbol_folder_index.txt	л���3
n ����3Z
+oC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\arm64-v8a\symbol_folder_index.txt	��ƶ�3
n ����3Z
 X
-VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	л���3
� �֝��3
\ No newline at end of file
+VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	��ƶ�3
� �֝��3
\ No newline at end of file
diff --git a/Opencv/.cxx/Debug/p1g6s634/armeabi-v7a/configure_fingerprint.bin b/Opencv/.cxx/Debug/p1g6s634/armeabi-v7a/configure_fingerprint.bin
index 072bc4b1..fac0a6b4 100644
--- a/Opencv/.cxx/Debug/p1g6s634/armeabi-v7a/configure_fingerprint.bin
+++ b/Opencv/.cxx/Debug/p1g6s634/armeabi-v7a/configure_fingerprint.bin
@@ -2,28 +2,28 @@ C/C++ Structured Logz
 x
 vC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\additional_project_files.txtC
 A
-?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	�Ђ��3 �ש��3w
+?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	��ƶ�3 �ש��3w
 u
-sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\android_gradle_build.json	�Ђ��3�
+sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\android_gradle_build.json	��ƶ�3�
  �ש��3|
 z
-xC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\android_gradle_build_mini.json	�Ђ��3� �ש��3i
+xC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\android_gradle_build_mini.json	��ƶ�3� �ש��3i
 g
-eC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build.ninja	�Ђ��3�� �֩��3m
+eC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build.ninja	��ƶ�3�� �֩��3m
 k
-iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build.ninja.txt	�Ђ��3r
+iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build.ninja.txt	��ƶ�3r
 p
-nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build_file_index.txt	�Ђ��3
V �ש��3s
+nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\build_file_index.txt	��ƶ�3
V �ש��3s
 q
-oC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\compile_commands.json	�Ђ��3� �֩��3w
+oC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\compile_commands.json	��ƶ�3� �֩��3w
 u
-sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\compile_commands.json.bin	�Ђ��3	� �֩��3}
+sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\compile_commands.json.bin	��ƶ�3	� �֩��3}
 {
-yC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\metadata_generation_command.txt	�Ђ��3
+yC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\metadata_generation_command.txt	��ƶ�3
 � �ש��3p
 n
-lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\prefab_config.json	�Ђ��3
( �ש��3u
+lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\prefab_config.json	��ƶ�3
( �ש��3u
 s
-qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\symbol_folder_index.txt	�Ђ��3
p �ש��3Z
+qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\armeabi-v7a\symbol_folder_index.txt	��ƶ�3
p �ש��3Z
 X
-VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	�Ђ��3
� �֝��3
\ No newline at end of file
+VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	��ƶ�3
� �֝��3
\ No newline at end of file
diff --git a/Opencv/.cxx/Debug/p1g6s634/x86/configure_fingerprint.bin b/Opencv/.cxx/Debug/p1g6s634/x86/configure_fingerprint.bin
index 8827ff81..adb8f059 100644
--- a/Opencv/.cxx/Debug/p1g6s634/x86/configure_fingerprint.bin
+++ b/Opencv/.cxx/Debug/p1g6s634/x86/configure_fingerprint.bin
@@ -2,28 +2,28 @@ C/C++ Structured Logr
 p
 nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\additional_project_files.txtC
 A
-?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	�҂��3 ��ʛ�3o
+?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	��ƶ�3 ��ʛ�3o
 m
-kC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\android_gradle_build.json	�҂��3�
+kC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\android_gradle_build.json	��ƶ�3�
  ��ʛ�3t
 r
-pC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\android_gradle_build_mini.json	�҂��3� ��ʛ�3a
+pC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\android_gradle_build_mini.json	��ƶ�3� ��ʛ�3a
 _
-]C:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build.ninja	�҂��3�� ��ʛ�3e
+]C:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build.ninja	��ƶ�3�� ��ʛ�3e
 c
-aC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build.ninja.txt	�҂��3j
+aC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build.ninja.txt	��ƶ�3j
 h
-fC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build_file_index.txt	�҂��3
V ��ʛ�3k
+fC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\build_file_index.txt	��ƶ�3
V ��ʛ�3k
 i
-gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\compile_commands.json	�҂��3� ��ʛ�3o
+gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\compile_commands.json	��ƶ�3� ��ʛ�3o
 m
-kC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\compile_commands.json.bin	�҂��3	� ��ʛ�3u
+kC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\compile_commands.json.bin	��ƶ�3	� ��ʛ�3u
 s
-qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\metadata_generation_command.txt	�҂��3
+qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\metadata_generation_command.txt	��ƶ�3
 � ��ʛ�3h
 f
-dC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\prefab_config.json	�҂��3
( ��ʛ�3m
+dC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\prefab_config.json	��ƶ�3
( ��ʛ�3m
 k
-iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\symbol_folder_index.txt	�҂��3
h ��ʛ�3Z
+iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86\symbol_folder_index.txt	��ƶ�3
h ��ʛ�3Z
 X
-VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	�҂��3
� �֝��3
\ No newline at end of file
+VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	��ƶ�3
� �֝��3
\ No newline at end of file
diff --git a/Opencv/.cxx/Debug/p1g6s634/x86_64/configure_fingerprint.bin b/Opencv/.cxx/Debug/p1g6s634/x86_64/configure_fingerprint.bin
index 7a4563b5..6526e76c 100644
--- a/Opencv/.cxx/Debug/p1g6s634/x86_64/configure_fingerprint.bin
+++ b/Opencv/.cxx/Debug/p1g6s634/x86_64/configure_fingerprint.bin
@@ -2,28 +2,28 @@ C/C++ Structured Logu
 s
 qC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\additional_project_files.txtC
 A
-?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	�ӂ��3 �婜�3r
+?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	��ƶ�3 �婜�3r
 p
-nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\android_gradle_build.json	�ӂ��3�
+nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\android_gradle_build.json	��ƶ�3�
  �婜�3w
 u
-sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\android_gradle_build_mini.json	�ӂ��3� �婜�3d
+sC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\android_gradle_build_mini.json	��ƶ�3� �婜�3d
 b
-`C:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build.ninja	�ӂ��3�� �䩜�3h
+`C:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build.ninja	��ƶ�3�� �䩜�3h
 f
-dC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build.ninja.txt	�ӂ��3m
+dC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build.ninja.txt	��ƶ�3m
 k
-iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build_file_index.txt	�ӂ��3
V �婜�3n
+iC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\build_file_index.txt	��ƶ�3
V �婜�3n
 l
-jC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\compile_commands.json	�ӂ��3� �䩜�3r
+jC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\compile_commands.json	��ƶ�3� �䩜�3r
 p
-nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\compile_commands.json.bin	�ӂ��3	� �䩜�3x
+nC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\compile_commands.json.bin	��ƶ�3	� �䩜�3x
 v
-tC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\metadata_generation_command.txt	�ӂ��3
+tC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\metadata_generation_command.txt	��ƶ�3
 � �婜�3k
 i
-gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\prefab_config.json	�ӂ��3
( �婜�3p
+gC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\prefab_config.json	��ƶ�3
( �婜�3p
 n
-lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\symbol_folder_index.txt	�ӂ��3
k �婜�3Z
+lC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\.cxx\Debug\p1g6s634\x86_64\symbol_folder_index.txt	��ƶ�3
k �婜�3Z
 X
-VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	�ӂ��3
� �֝��3
\ No newline at end of file
+VC:\Users\24171\OneDrive\Desktop\msdk\400apiqwq\ams\Opencv\libcxx_helper\CMakeLists.txt	��ƶ�3
� �֝��3
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/build_model.json b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/build_model.json
index bf8de94d..5c5feac2 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/build_model.json
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/build_model.json
@@ -25,7 +25,10 @@
     "variantName": "debug",
     "isDebuggableEnabled": true,
     "validAbiList": [
-      "ARM64_V8A"
+      "ARMEABI_V7A",
+      "ARM64_V8A",
+      "X86",
+      "X86_64"
     ],
     "buildTargetSet": [
       "opencv_jni_shared"
@@ -132,7 +135,6 @@
         "rootBuildGradleFolder": "C:\\Users\\24171\\OneDrive\\Desktop\\msdk\\400apiqwq\\ams",
         "sdkFolder": "D:\\androidstudio\\sdk",
         "isBuildOnlyTargetAbiEnabled": true,
-        "ideBuildTargetAbi": "arm64-v8a,armeabi-v7a,armeabi",
         "isCmakeBuildCohabitationEnabled": false,
         "isPrefabEnabled": false
       },
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_1195_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_1195_timing.txt
index 6786d949..d9607cf2 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_1195_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_1195_timing.txt
@@ -4,3 +4,6 @@ generate_cxx_metadata
   [gap of 15ms]
 generate_cxx_metadata completed in 29ms
 
+# C/C++ build system timings
+generate_cxx_metadata 14ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_220_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_220_timing.txt
index dc08d549..4ecf4c2c 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_220_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_220_timing.txt
@@ -19,3 +19,10 @@ generate_cxx_metadata
   [gap of 37ms]
 generate_cxx_metadata completed in 118ms
 
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 19ms]
+  create-invalidation-state 47ms
+  [gap of 36ms]
+generate_cxx_metadata completed in 102ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_226_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_226_timing.txt
index d2d8097c..b66f90e4 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_226_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_226_timing.txt
@@ -12,3 +12,17 @@ generate_cxx_metadata
   [gap of 27ms]
 generate_cxx_metadata completed in 89ms
 
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 17ms]
+  create-invalidation-state 43ms
+  [gap of 26ms]
+generate_cxx_metadata completed in 86ms
+
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 13ms]
+  create-invalidation-state 42ms
+  [gap of 27ms]
+generate_cxx_metadata completed in 82ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_420_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_420_timing.txt
index 56bdd3e5..f007905e 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_420_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/generate_cxx_metadata_420_timing.txt
@@ -11,3 +11,6 @@ generate_cxx_metadata
   [gap of 33ms]
 generate_cxx_metadata completed in 112ms
 
+# C/C++ build system timings
+generate_cxx_metadata 19ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/metadata_generation_record.json b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/metadata_generation_record.json
index e2352f16..406a7f61 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/metadata_generation_record.json
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/arm64-v8a/metadata_generation_record.json
@@ -11,7 +11,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 1164482061
+    "memoizedHashCode": 967786548
   },
   {
     "level_": 0,
@@ -25,7 +25,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 596000089
+    "memoizedHashCode": 399304576
   },
   {
     "level_": 0,
@@ -39,6 +39,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -788628757
+    "memoizedHashCode": -985324270
   }
 ]
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/generate_cxx_metadata_221_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/generate_cxx_metadata_221_timing.txt
index 53c136b4..11ba681f 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/generate_cxx_metadata_221_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/generate_cxx_metadata_221_timing.txt
@@ -4,3 +4,9 @@ generate_cxx_metadata
   [gap of 14ms]
 generate_cxx_metadata completed in 29ms
 
+# C/C++ build system timings
+generate_cxx_metadata
+  create-invalidation-state 13ms
+  [gap of 13ms]
+generate_cxx_metadata completed in 28ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/metadata_generation_record.json b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/metadata_generation_record.json
index 2d51e092..cec9f007 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/metadata_generation_record.json
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/armeabi-v7a/metadata_generation_record.json
@@ -11,7 +11,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 1226785352
+    "memoizedHashCode": -1485904816
   },
   {
     "level_": 0,
@@ -25,7 +25,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -100804716
+    "memoizedHashCode": 1481472412
   },
   {
     "level_": 0,
@@ -39,6 +39,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -1454981464
+    "memoizedHashCode": 127295664
   }
 ]
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_1621_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_1621_timing.txt
index edd333d6..cd5ace1f 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_1621_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_1621_timing.txt
@@ -1,3 +1,6 @@
 # C/C++ build system timings
 generate_cxx_metadata 16ms
 
+# C/C++ build system timings
+generate_cxx_metadata 18ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_219_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_219_timing.txt
index e7c91575..6fc42dc6 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_219_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_219_timing.txt
@@ -1,3 +1,9 @@
 # C/C++ build system timings
 generate_cxx_metadata 24ms
 
+# C/C++ build system timings
+generate_cxx_metadata 17ms
+
+# C/C++ build system timings
+generate_cxx_metadata 13ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_32_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_32_timing.txt
index fc82673e..a0ad098a 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_32_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/generate_cxx_metadata_32_timing.txt
@@ -14,3 +14,35 @@ generate_cxx_metadata
   write-metadata-json-to-file 13ms
 generate_cxx_metadata completed in 146ms
 
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 35ms]
+  create-invalidation-state 86ms
+  [gap of 44ms]
+  write-metadata-json-to-file 13ms
+generate_cxx_metadata completed in 178ms
+
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 29ms]
+  create-invalidation-state 81ms
+  [gap of 37ms]
+  write-metadata-json-to-file 17ms
+generate_cxx_metadata completed in 165ms
+
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 72ms]
+  create-invalidation-state 116ms
+  [gap of 53ms]
+  write-metadata-json-to-file 16ms
+generate_cxx_metadata completed in 260ms
+
+# C/C++ build system timings
+generate_cxx_metadata
+  [gap of 35ms]
+  create-invalidation-state 122ms
+  [gap of 45ms]
+  write-metadata-json-to-file 17ms
+generate_cxx_metadata completed in 221ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/metadata_generation_record.json b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/metadata_generation_record.json
index 19e48979..1b16e4b9 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/metadata_generation_record.json
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86/metadata_generation_record.json
@@ -11,7 +11,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 120348848
+    "memoizedHashCode": 1702625976
   },
   {
     "level_": 0,
@@ -25,7 +25,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -349159684
+    "memoizedHashCode": 1233117444
   },
   {
     "level_": 0,
@@ -39,6 +39,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -1759975876
+    "memoizedHashCode": -177698748
   }
 ]
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/generate_cxx_metadata_226_timing.txt b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/generate_cxx_metadata_226_timing.txt
index b0d0561b..4f4a399e 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/generate_cxx_metadata_226_timing.txt
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/generate_cxx_metadata_226_timing.txt
@@ -7,3 +7,9 @@ generate_cxx_metadata
   [gap of 14ms]
 generate_cxx_metadata completed in 28ms
 
+# C/C++ build system timings
+generate_cxx_metadata 15ms
+
+# C/C++ build system timings
+generate_cxx_metadata 14ms
+
diff --git a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/metadata_generation_record.json b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/metadata_generation_record.json
index 85374c2c..bbe01ee0 100644
--- a/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/metadata_generation_record.json
+++ b/Opencv/build/intermediates/cxx/Debug/p1g6s634/logs/x86_64/metadata_generation_record.json
@@ -11,7 +11,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -1438516690
+    "memoizedHashCode": 143760438
   },
   {
     "level_": 0,
@@ -25,7 +25,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 958909078
+    "memoizedHashCode": -1753781090
   },
   {
     "level_": 0,
@@ -39,6 +39,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -611600693
+    "memoizedHashCode": 970676435
   }
 ]
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/abi_configuration_4s4k1647.log b/Opencv/build/intermediates/cxx/abi_configuration_4s4k1647.log
index a65f99c1..b3a8e383 100644
--- a/Opencv/build/intermediates/cxx/abi_configuration_4s4k1647.log
+++ b/Opencv/build/intermediates/cxx/abi_configuration_4s4k1647.log
@@ -11,6 +11,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -735102328
+    "memoizedHashCode": -931797841
   }
 ]
\ No newline at end of file
diff --git a/Opencv/build/intermediates/cxx/create_cxx_tasks_1032_timing.txt b/Opencv/build/intermediates/cxx/create_cxx_tasks_1032_timing.txt
index 45356e75..3371a8f9 100644
--- a/Opencv/build/intermediates/cxx/create_cxx_tasks_1032_timing.txt
+++ b/Opencv/build/intermediates/cxx/create_cxx_tasks_1032_timing.txt
@@ -13,3 +13,8 @@ create_cxx_tasks
   [gap of 14ms]
 create_cxx_tasks completed in 148ms
 
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model 44ms
+create_cxx_tasks completed in 48ms
+
diff --git a/Opencv/build/intermediates/cxx/create_cxx_tasks_303_timing.txt b/Opencv/build/intermediates/cxx/create_cxx_tasks_303_timing.txt
index a86ea5b7..ed112261 100644
--- a/Opencv/build/intermediates/cxx/create_cxx_tasks_303_timing.txt
+++ b/Opencv/build/intermediates/cxx/create_cxx_tasks_303_timing.txt
@@ -27,3 +27,17 @@ create_cxx_tasks
   [gap of 12ms]
 create_cxx_tasks completed in 126ms
 
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 12ms
+    create-ARMEABI_V7A-model 10ms
+    [gap of 26ms]
+    create-module-model 14ms
+    [gap of 16ms]
+    create-ARM64_V8A-model 12ms
+    [gap of 17ms]
+  create-initial-cxx-model completed in 116ms
+  [gap of 16ms]
+create_cxx_tasks completed in 132ms
+
diff --git a/Opencv/build/intermediates/cxx/create_cxx_tasks_32_timing.txt b/Opencv/build/intermediates/cxx/create_cxx_tasks_32_timing.txt
index 5d4b5854..086c04ac 100644
--- a/Opencv/build/intermediates/cxx/create_cxx_tasks_32_timing.txt
+++ b/Opencv/build/intermediates/cxx/create_cxx_tasks_32_timing.txt
@@ -1050,3 +1050,310 @@ create_cxx_tasks
   [gap of 60ms]
 create_cxx_tasks completed in 196ms
 
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 14ms
+    [gap of 16ms]
+    create-ARMEABI_V7A-model 10ms
+    create-X86-model 10ms
+    create-X86_64-model 10ms
+    create-module-model 17ms
+    create-ARMEABI_V7A-model 10ms
+    create-X86-model 10ms
+    create-X86_64-model 15ms
+  create-initial-cxx-model completed in 140ms
+  [gap of 60ms]
+create_cxx_tasks completed in 200ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 18ms
+    [gap of 10ms]
+    create-ARMEABI_V7A-model 13ms
+    create-ARM64_V8A-model 11ms
+    [gap of 11ms]
+    create-X86_64-model 10ms
+    create-module-model 14ms
+    [gap of 17ms]
+    create-ARM64_V8A-model 10ms
+    create-X86-model 11ms
+    create-X86_64-model 10ms
+  create-initial-cxx-model completed in 142ms
+  [gap of 15ms]
+create_cxx_tasks completed in 157ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 12ms
+    [gap of 41ms]
+    create-module-model 10ms
+    [gap of 38ms]
+  create-initial-cxx-model completed in 101ms
+  [gap of 41ms]
+create_cxx_tasks completed in 142ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 13ms
+    [gap of 49ms]
+    create-module-model 13ms
+    create-variant-model 10ms
+    [gap of 10ms]
+    create-ARM64_V8A-model 10ms
+    create-X86-model 11ms
+    create-X86_64-model 12ms
+  create-initial-cxx-model completed in 131ms
+  [gap of 49ms]
+create_cxx_tasks completed in 180ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 14ms
+    create-variant-model 10ms
+    [gap of 24ms]
+    create-X86_64-model 10ms
+    create-module-model 14ms
+    [gap of 42ms]
+  create-initial-cxx-model completed in 117ms
+create_cxx_tasks completed in 126ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 17ms
+    [gap of 16ms]
+    create-ARMEABI_V7A-model 12ms
+    create-ARM64_V8A-model 11ms
+    create-X86-model 14ms
+    create-X86_64-model 11ms
+    create-module-model 13ms
+    create-variant-model 10ms
+    create-ARMEABI_V7A-model 10ms
+    [gap of 10ms]
+    create-X86-model 13ms
+    create-X86_64-model 10ms
+  create-initial-cxx-model completed in 154ms
+  [gap of 76ms]
+create_cxx_tasks completed in 231ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 23ms
+    [gap of 10ms]
+    create-ARMEABI_V7A-model 12ms
+    create-ARM64_V8A-model 12ms
+    create-X86_64-model 10ms
+    create-module-model 17ms
+    create-ARMEABI_V7A-model 10ms
+    create-ARM64_V8A-model 11ms
+    create-X86_64-model 11ms
+  create-initial-cxx-model completed in 146ms
+  [gap of 10ms]
+create_cxx_tasks completed in 156ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 24ms
+    [gap of 11ms]
+    create-variant-model 25ms
+    create-ARMEABI_V7A-model 14ms
+    create-ARM64_V8A-model 13ms
+    create-X86-model 27ms
+    create-X86_64-model 13ms
+    create-module-model 19ms
+    create-variant-model 45ms
+    create-ARMEABI_V7A-model 18ms
+    create-ARM64_V8A-model 17ms
+    create-X86-model 35ms
+    create-X86_64-model 53ms
+  create-initial-cxx-model completed in 340ms
+  [gap of 91ms]
+create_cxx_tasks completed in 433ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 16ms
+    [gap of 12ms]
+    create-ARMEABI_V7A-model 10ms
+    [gap of 19ms]
+    create-X86_64-model 11ms
+    create-module-model 10ms
+    [gap of 34ms]
+  create-initial-cxx-model completed in 114ms
+  [gap of 37ms]
+create_cxx_tasks completed in 152ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model 70ms
+  [gap of 33ms]
+create_cxx_tasks completed in 103ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 10ms
+    [gap of 42ms]
+    create-module-model 10ms
+    [gap of 34ms]
+  create-initial-cxx-model completed in 96ms
+  [gap of 10ms]
+create_cxx_tasks completed in 106ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 22ms
+    create-variant-model 16ms
+    create-ARMEABI_V7A-model 13ms
+    create-ARM64_V8A-model 32ms
+    create-X86-model 10ms
+    create-X86_64-model 11ms
+    create-module-model 18ms
+    create-variant-model 36ms
+    create-ARMEABI_V7A-model 20ms
+    create-ARM64_V8A-model 20ms
+    create-X86-model 30ms
+    create-X86_64-model 13ms
+  create-initial-cxx-model completed in 264ms
+  [gap of 66ms]
+create_cxx_tasks completed in 332ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model
+      [gap of 32ms]
+      create-cmake-model 10ms
+      [gap of 29ms]
+    create-module-model completed in 71ms
+    create-variant-model 49ms
+    create-ARMEABI_V7A-model 40ms
+    create-ARM64_V8A-model 40ms
+    create-X86-model 13ms
+    create-X86_64-model 12ms
+    create-module-model 18ms
+    create-variant-model 17ms
+    create-ARMEABI_V7A-model 35ms
+    create-ARM64_V8A-model 32ms
+    create-X86-model 45ms
+    create-X86_64-model 54ms
+  create-initial-cxx-model completed in 449ms
+  [gap of 129ms]
+create_cxx_tasks completed in 579ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 17ms
+    [gap of 14ms]
+    create-ARMEABI_V7A-model 12ms
+    [gap of 21ms]
+    create-X86_64-model 12ms
+    create-module-model 13ms
+    create-ARMEABI_V7A-model 12ms
+    [gap of 16ms]
+    create-X86_64-model 11ms
+  create-initial-cxx-model completed in 138ms
+  [gap of 96ms]
+create_cxx_tasks completed in 236ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 11ms
+    [gap of 10ms]
+    create-ARMEABI_V7A-model 10ms
+    create-ARM64_V8A-model 10ms
+    [gap of 14ms]
+    create-module-model 16ms
+    [gap of 25ms]
+    create-X86-model 11ms
+  create-initial-cxx-model completed in 116ms
+create_cxx_tasks completed in 124ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    [gap of 43ms]
+    create-module-model 11ms
+    [gap of 42ms]
+  create-initial-cxx-model completed in 96ms
+  [gap of 35ms]
+create_cxx_tasks completed in 131ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 17ms
+    create-variant-model 12ms
+    create-ARMEABI_V7A-model 11ms
+    create-ARM64_V8A-model 12ms
+    create-X86-model 21ms
+    create-X86_64-model 10ms
+    create-module-model 24ms
+    [gap of 11ms]
+    create-ARMEABI_V7A-model 12ms
+    create-ARM64_V8A-model 14ms
+    create-X86-model 15ms
+  create-initial-cxx-model completed in 183ms
+  [gap of 11ms]
+create_cxx_tasks completed in 194ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 14ms
+    create-variant-model 10ms
+    create-ARMEABI_V7A-model 10ms
+    [gap of 26ms]
+    create-module-model 17ms
+    [gap of 18ms]
+    create-ARM64_V8A-model 10ms
+    create-X86-model 11ms
+    create-X86_64-model 12ms
+  create-initial-cxx-model completed in 137ms
+  [gap of 121ms]
+create_cxx_tasks completed in 258ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 16ms
+    create-variant-model 10ms
+    create-ARMEABI_V7A-model 10ms
+    create-ARM64_V8A-model 10ms
+    create-X86-model 11ms
+    create-X86_64-model 11ms
+    create-module-model 18ms
+    create-variant-model 10ms
+    create-ARMEABI_V7A-model 14ms
+    [gap of 10ms]
+    create-X86-model 11ms
+    create-X86_64-model 10ms
+  create-initial-cxx-model completed in 154ms
+  [gap of 14ms]
+create_cxx_tasks completed in 168ms
+
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 14ms
+    [gap of 30ms]
+    create-X86-model 10ms
+    create-module-model 14ms
+    create-variant-model 10ms
+    [gap of 24ms]
+    create-X86_64-model 11ms
+  create-initial-cxx-model completed in 123ms
+  [gap of 48ms]
+create_cxx_tasks completed in 172ms
+
diff --git a/Opencv/build/intermediates/cxx/create_cxx_tasks_442_timing.txt b/Opencv/build/intermediates/cxx/create_cxx_tasks_442_timing.txt
index 2d6cfc50..b53cdb59 100644
--- a/Opencv/build/intermediates/cxx/create_cxx_tasks_442_timing.txt
+++ b/Opencv/build/intermediates/cxx/create_cxx_tasks_442_timing.txt
@@ -8,3 +8,13 @@ create_cxx_tasks
   create-initial-cxx-model completed in 91ms
 create_cxx_tasks completed in 97ms
 
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model
+    create-module-model 17ms
+    [gap of 36ms]
+    create-module-model 11ms
+    [gap of 39ms]
+  create-initial-cxx-model completed in 103ms
+create_cxx_tasks completed in 112ms
+
diff --git a/Opencv/build/intermediates/cxx/create_cxx_tasks_776_timing.txt b/Opencv/build/intermediates/cxx/create_cxx_tasks_776_timing.txt
index b7e6f2b5..9fc473c6 100644
--- a/Opencv/build/intermediates/cxx/create_cxx_tasks_776_timing.txt
+++ b/Opencv/build/intermediates/cxx/create_cxx_tasks_776_timing.txt
@@ -15,3 +15,8 @@ create_cxx_tasks
   [gap of 17ms]
 create_cxx_tasks completed in 188ms
 
+# C/C++ build system timings
+create_cxx_tasks
+  create-initial-cxx-model 57ms
+create_cxx_tasks completed in 64ms
+
diff --git a/Opencv/build/intermediates/cxx/ndk_locator_record_463t1h4l.log b/Opencv/build/intermediates/cxx/ndk_locator_record_463t1h4l.log
index 854d323a..718f81c6 100644
--- a/Opencv/build/intermediates/cxx/ndk_locator_record_463t1h4l.log
+++ b/Opencv/build/intermediates/cxx/ndk_locator_record_463t1h4l.log
@@ -11,7 +11,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 106932290
+    "memoizedHashCode": -89763223
   },
   {
     "level_": 0,
@@ -25,7 +25,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 899120393
+    "memoizedHashCode": 702424880
   },
   {
     "level_": 0,
@@ -39,7 +39,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 439376348
+    "memoizedHashCode": 242680835
   },
   {
     "level_": 0,
@@ -53,7 +53,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -828571640
+    "memoizedHashCode": -1025267153
   },
   {
     "level_": 0,
@@ -67,7 +67,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -259859609
+    "memoizedHashCode": -456555122
   },
   {
     "level_": 0,
@@ -81,7 +81,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 105050649
+    "memoizedHashCode": -91644864
   },
   {
     "level_": 0,
@@ -95,7 +95,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 412191883
+    "memoizedHashCode": 215496370
   },
   {
     "level_": 0,
@@ -109,7 +109,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -145955837
+    "memoizedHashCode": -342651350
   },
   {
     "level_": 0,
@@ -123,7 +123,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 522846916
+    "memoizedHashCode": 326151403
   },
   {
     "level_": 0,
@@ -137,7 +137,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 1227308109
+    "memoizedHashCode": 1030612596
   },
   {
     "level_": 0,
@@ -151,7 +151,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -1204845117
+    "memoizedHashCode": -1401540630
   },
   {
     "level_": 0,
@@ -165,7 +165,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -636133086
+    "memoizedHashCode": -832828599
   },
   {
     "level_": 0,
@@ -179,7 +179,7 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": 269616977
+    "memoizedHashCode": 72921464
   },
   {
     "level_": 2,
@@ -193,6 +193,6 @@
       "fieldsDescending": {}
     },
     "memoizedSize": -1,
-    "memoizedHashCode": -1573934875
+    "memoizedHashCode": -1770630388
   }
 ]
\ No newline at end of file
diff --git a/app/src/main/java/com/aros/apron/activity/ConnectionActivity.kt b/app/src/main/java/com/aros/apron/activity/ConnectionActivity.kt
index ec43b8cf..ee3def7d 100644
--- a/app/src/main/java/com/aros/apron/activity/ConnectionActivity.kt
+++ b/app/src/main/java/com/aros/apron/activity/ConnectionActivity.kt
@@ -90,8 +90,8 @@ open class ConnectionActivity : BaseActivity() {
         }
         if (TextUtils.isEmpty(PreferenceUtils.getInstance().mqttServerUri)){
             PreferenceUtils.getInstance().mqttServerUri =
-               "tcp://192.168.20.90:2883"
-                //"tcp://broker.emqx.io"
+               //"tcp://192.168.20.90:2883"
+                "tcp://broker.emqx.io"
         }
 
         if (TextUtils.isEmpty(PreferenceUtils.getInstance().mqttUserName)){
diff --git a/app/src/main/java/com/aros/apron/activity/MainActivity.kt b/app/src/main/java/com/aros/apron/activity/MainActivity.kt
index 30d9aa71..f72a12d8 100644
--- a/app/src/main/java/com/aros/apron/activity/MainActivity.kt
+++ b/app/src/main/java/com/aros/apron/activity/MainActivity.kt
@@ -1,5 +1,4 @@
 package com.aros.apron.activity
-
 import android.annotation.SuppressLint
 import android.graphics.Color
 import android.graphics.drawable.ColorDrawable
@@ -7,13 +6,11 @@ import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
-import android.util.Log
 import android.view.View
 import android.view.Window
 import android.view.WindowManager
 import android.widget.Button
 import android.widget.TextView
-import android.widget.Toast
 import androidx.annotation.RequiresApi
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.view.GravityCompat
@@ -38,7 +35,6 @@ import com.aros.apron.manager.MediaManager
 import com.aros.apron.manager.MissionV3Manager
 import com.aros.apron.manager.OSDManager
 import com.aros.apron.manager.PayloadWidgetManager
-import com.aros.apron.manager.SpeakerManager
 import com.aros.apron.manager.StickManager
 import com.aros.apron.manager.StreamManager
 import com.aros.apron.manager.WirelessLinkManager
@@ -48,29 +44,21 @@ import com.aros.apron.tools.DroneHelper
 import com.aros.apron.tools.LogUtil
 import com.aros.apron.tools.MqttManager
 import com.aros.apron.tools.PreferenceUtils
-import com.aros.apron.tools.Utils
 import com.dji.wpmzsdk.manager.WPMZManager
 import com.google.gson.Gson
-import com.iflytek.aikit.core.AiHelper
-import com.iflytek.aikit.core.BaseLibrary
-import com.iflytek.aikit.core.CoreListener
-import com.iflytek.aikit.core.ErrType
-import com.iflytek.aikit.core.LogLvl
-import dji.sdk.keyvalue.key.CameraKey
 import dji.sdk.keyvalue.key.DJIKey
 import dji.sdk.keyvalue.key.FlightControllerKey
-import dji.sdk.keyvalue.key.GimbalKey
 import dji.sdk.keyvalue.key.KeyTools
 import dji.sdk.keyvalue.value.common.CameraLensType
 import dji.sdk.keyvalue.value.common.ComponentIndexType
 import dji.sdk.keyvalue.value.common.EmptyMsg
 import dji.sdk.keyvalue.value.flightassistant.VisionAssistDirection
+import dji.sdk.keyvalue.value.flightcontroller.LEDsSettings
 import dji.v5.common.callback.CommonCallbacks
 import dji.v5.common.callback.CommonCallbacks.CompletionCallback
 import dji.v5.common.error.IDJIError
 import dji.v5.common.utils.GeoidManager
 import dji.v5.manager.KeyManager
-import dji.v5.manager.aircraft.virtualstick.VirtualStickManager
 import dji.v5.manager.datacenter.MediaDataCenter
 import dji.v5.manager.interfaces.ICameraStreamManager
 import dji.v5.manager.interfaces.ICameraStreamManager.AvailableCameraUpdatedListener
@@ -116,6 +104,7 @@ import io.reactivex.rxjava3.functions.Consumer
 import org.eclipse.paho.client.mqttv3.MqttException
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import org.opencv.android.OpenCVLoader
 import org.opencv.objdetect.Dictionary
 import org.opencv.objdetect.Objdetect
 import java.util.concurrent.TimeUnit
@@ -153,9 +142,6 @@ open class MainActivity : BaseActivity() {
     private var gimbalAdjustDone: TextView? = null
     private var btn_test: Button? = null
     private var btn_test1: Button? = null
-    private var btn_test2: Button? = null
-    private var btn_test3: Button? = null
-
 
     private var gimbalFineTuneWidget: GimbalFineTuneWidget? = null
     private var lastDevicePosition = ComponentIndexType.UNKNOWN
@@ -188,18 +174,32 @@ open class MainActivity : BaseActivity() {
         }
 
 
-    private var cameraManager: ICameraStreamManager =
-        MediaDataCenter.getInstance().cameraStreamManager
+    private var cameraManager: ICameraStreamManager = MediaDataCenter.getInstance().cameraStreamManager
 
     private var startArucoType = 0  //1执行机库二维码识别  2执行备降点二维码识别
     private var dictionary: Dictionary? = null
     override fun useEventBus(): Boolean {
         return true
     }
-
     override fun onResume() {
         super.onResume()
+
+
+        while (!OpenCVLoader.initLocal()) {
+            LogUtil.log("qwq", "opencv 初始化失败，阻塞等待重试...")
+            try {
+                Thread.sleep(300) // 休眠 300ms 再试，防止 CPU 爆炸
+            } catch (e: InterruptedException) {
+                LogUtil.log("qwq", "初始化被中断，跳出循环")
+                break
+            }
+        }
+
+
+        LogUtil.log("qwq", "opencv 初始化完成，继续执行后续代码")
+
         dictionary = Objdetect.getPredefinedDictionary(Objdetect.DICT_6X6_250)
+
         compositeDisposable = CompositeDisposable()
         compositeDisposable!!.add(
             systemStatusListPanelWidget!!.closeButtonPressed()
@@ -228,15 +228,14 @@ open class MainActivity : BaseActivity() {
                     runOnUiThread { onCameraSourceUpdated(result.devicePosition, result.lensType) }
                 })
         )
-        compositeDisposable!!.add(
-            ObservableInMemoryKeyedStore.getInstance()
-                .addObserver(UXKeys.create(GlobalPreferenceKeys.GIMBAL_ADJUST_CLICKED))
-                .observeOn(ui())
-                .subscribe { broadcastValues: BroadcastValues? ->
-                    isGimableAdjustClicked(
-                        broadcastValues!!
-                    )
-                })
+        compositeDisposable!!.add(ObservableInMemoryKeyedStore.getInstance()
+            .addObserver(UXKeys.create(GlobalPreferenceKeys.GIMBAL_ADJUST_CLICKED))
+            .observeOn(ui())
+            .subscribe { broadcastValues: BroadcastValues? ->
+                isGimableAdjustClicked(
+                    broadcastValues!!
+                )
+            })
         ViewUtil.setKeepScreen(this, true)
     }
 
@@ -250,7 +249,7 @@ open class MainActivity : BaseActivity() {
     }
 
     //endregion
-    private fun hideOtherPanels(widget: View?) {
+    private  fun hideOtherPanels(widget: View?) {
         val panels = arrayOf<View>(
             simulatorControlWidget!!
         )
@@ -363,7 +362,7 @@ open class MainActivity : BaseActivity() {
         }
     }
 
-    private fun updateViewVisibility(
+    private  fun updateViewVisibility(
         devicePosition: ComponentIndexType,
         lensType: CameraLensType
     ) {
@@ -402,7 +401,7 @@ open class MainActivity : BaseActivity() {
     /**
      * Swap the video sources of the FPV and secondary FPV widgets.
      */
-    private fun swapVideoSource() {
+    private  fun swapVideoSource() {
         val primarySource = primaryFpvWidget!!.widgetModel.getCameraIndex()
         val secondarySource = secondaryFPVWidget!!.widgetModel.getCameraIndex()
         //两个source都存在的情况下才进行切换
@@ -422,7 +421,6 @@ open class MainActivity : BaseActivity() {
         val devicePosition: ComponentIndexType,
         val lensType: CameraLensType
     )
-
     override fun onBackPressed() {
         if (mDrawerLayout!!.isDrawerOpen(GravityCompat.END)) {
             mDrawerLayout!!.closeDrawers()
@@ -457,111 +455,44 @@ open class MainActivity : BaseActivity() {
         initDJIManager()
         initCameraStream()
         initView()
-        initSDK()
-    }
-
-    private fun initSDK() {
-        AiHelper.getInst().setLogInfo(LogLvl.VERBOSE, 1, "/sdcard/iflytek/aikit/aeeLog.txt")
-        //设定初始化参数
-        val params = BaseLibrary.Params.builder()
-            .appId("753fd711") //您的应用ID，可从控制台查看
-            .apiKey("35099a7d31abf2259f5ee58cbf8b6791") //您的APIKEY，可从控制台查看
-            .apiSecret("ZTdiMDIwYzEwNTA1NjllYjJlYjdmYWFi") //您的APISECRET，可从控制台查看
-            .workDir(Utils.getSDCardPath() + "/DJIDemo/cache") //SDK的工作目录，需要确保有读写权限。一般用于存放离线能力资源，日志存放目录等使用。
-            .build()
-        //初始化SDK
-        Thread {
-            AiHelper.getInst().initEntry(this@MainActivity.applicationContext, params)
-        }.start()
-        AiHelper.getInst().registerListener(coreListener) // 注册SDK 初始化状态监听
-
-    }
-
-    //授权结果回调
-    private val coreListener = CoreListener { type, code ->
-        Log.i(TAG, "core listener code:$code")
-        runOnUiThread {
-            when (type) {
-                ErrType.AUTH -> {
-                    if (code == 0) {
-                        LogUtil.log(TAG, "SDK授权成功")
-                    } else {
-                        LogUtil.log(TAG, "SDK授权失败，授权码为:$code")
-                    }
-                }
-
-                ErrType.HTTP -> Toast.makeText(
-                    this@MainActivity, "SDK状态：HTTP认证结果$code",
-                    Toast.LENGTH_SHORT
-                ).show()
-
-                else -> Toast.makeText(
-                    this@MainActivity, "SDK状态：其他错误$code",
-                    Toast.LENGTH_SHORT
-                ).show()
-            }
-        }
     }
 
     private fun initView() {
-        fpvParentView = findViewById(R.id.fpv_holder)
-        mDrawerLayout = findViewById(R.id.root_view)
-        topBarPanel = findViewById(R.id.panel_top_bar)
+        fpvParentView = findViewById( R.id.fpv_holder)
+        mDrawerLayout = findViewById( R.id.root_view)
+        topBarPanel = findViewById( R.id.panel_top_bar)
         settingWidget = topBarPanel?.settingWidget
-        primaryFpvWidget = findViewById(R.id.widget_primary_fpv)
-        fpvInteractionWidget = findViewById(R.id.widget_fpv_interaction)
-        secondaryFPVWidget = findViewById(R.id.widget_secondary_fpv)
-        systemStatusListPanelWidget = findViewById(R.id.widget_panel_system_status_list)
-        simulatorControlWidget = findViewById(R.id.widget_simulator_control)
-        lensControlWidget = findViewById<LensControlWidget>(R.id.widget_lens_control)
-        ndviCameraPanel = findViewById(R.id.panel_ndvi_camera)
-        visualCameraPanel = findViewById(R.id.panel_visual_camera)
-        autoExposureLockWidget = findViewById(R.id.widget_auto_exposure_lock)
-        focusModeWidget = findViewById(R.id.widget_focus_mode)
-        focusExposureSwitchWidget = findViewById(R.id.widget_focus_exposure_switch)
-        pfvFlightDisplayWidget = findViewById(R.id.widget_fpv_flight_display_widget)
-        focalZoomWidget = findViewById(R.id.widget_focal_zoom)
-        cameraControlsWidget = findViewById(R.id.widget_camera_controls)
+        primaryFpvWidget = findViewById( R.id.widget_primary_fpv)
+        fpvInteractionWidget = findViewById( R.id.widget_fpv_interaction)
+        secondaryFPVWidget = findViewById( R.id.widget_secondary_fpv)
+        systemStatusListPanelWidget = findViewById( R.id.widget_panel_system_status_list)
+        simulatorControlWidget = findViewById( R.id.widget_simulator_control)
+        lensControlWidget = findViewById<LensControlWidget>( R.id.widget_lens_control)
+        ndviCameraPanel = findViewById( R.id.panel_ndvi_camera)
+        visualCameraPanel = findViewById( R.id.panel_visual_camera)
+        autoExposureLockWidget = findViewById( R.id.widget_auto_exposure_lock)
+        focusModeWidget = findViewById( R.id.widget_focus_mode)
+        focusExposureSwitchWidget = findViewById( R.id.widget_focus_exposure_switch)
+        pfvFlightDisplayWidget = findViewById( R.id.widget_fpv_flight_display_widget)
+        focalZoomWidget = findViewById( R.id.widget_focal_zoom)
+        cameraControlsWidget = findViewById( R.id.widget_camera_controls)
         horizontalSituationIndicatorWidget =
             findViewById(R.id.widget_horizontal_situation_indicator)
 //        gimbalAdjustDone = findViewById<TextView>( R.id.fpv_gimbal_ok_btn)
-        gimbalFineTuneWidget = findViewById(R.id.setting_menu_gimbal_fine_tune)
-        btn_test = findViewById(R.id.btn_test)
-        btn_test1 = findViewById(R.id.btn_test1)
-        btn_test2 = findViewById(R.id.btn_test2)
-        btn_test3 = findViewById(R.id.btn_test3)
+        gimbalFineTuneWidget = findViewById( R.id.setting_menu_gimbal_fine_tune)
+        btn_test = findViewById( R.id.btn_test)
+        btn_test1 = findViewById( R.id.btn_test1)
         btn_test?.setOnClickListener {
-
-
+//            MissionManager.getInstance().test()
+            FlightManager.getInstance().startPropellerRotation(null)
         }
         btn_test1?.setOnClickListener {
-
-
-        }
-        btn_test2?.setOnClickListener {
-
-
-        }
-        btn_test3?.setOnClickListener {
-
-
+            FlightManager.getInstance().stopPropellerRotation(null)
         }
 
 
 
 
-        MediaDataCenter.getInstance().cameraStreamManager.setVisionAssistViewDirection(
-            VisionAssistDirection.DOWN, object : CommonCallbacks.CompletionCallback {
-                override fun onSuccess() {
-                    LogUtil.log(TAG, "开启成功")
-                }
-
-                override fun onFailure(p0: IDJIError) {
-                    LogUtil.log(TAG, "开启失败" + p0)
-                }
-            })
-
-
         initClickListener()
         MediaDataCenter.getInstance().cameraStreamManager.addAvailableCameraUpdatedListener(
             availableCameraUpdatedListener
@@ -588,9 +519,11 @@ open class MainActivity : BaseActivity() {
         DJINetworkManager.getInstance().addNetworkStatusListener(networkStatusListener)
 
 
+
+
     }
 
-    private fun isGimableAdjustClicked(broadcastValues: BroadcastValues) {
+    private  fun isGimableAdjustClicked(broadcastValues: BroadcastValues) {
         if (mDrawerLayout!!.isDrawerOpen(GravityCompat.END)) {
             mDrawerLayout!!.closeDrawers()
         }
@@ -600,7 +533,7 @@ open class MainActivity : BaseActivity() {
         }
     }
 
-    private fun initClickListener() {
+    private  fun initClickListener() {
         secondaryFPVWidget!!.setOnClickListener { v: View? -> swapVideoSource() }
         if (settingWidget != null) {
             settingWidget!!.setOnClickListener { v: View? -> toggleRightDrawer() }
@@ -619,7 +552,7 @@ open class MainActivity : BaseActivity() {
 //        }
     }
 
-    private fun toggleRightDrawer() {
+    private  fun toggleRightDrawer() {
         mDrawerLayout!!.openDrawer(GravityCompat.END)
     }
 
@@ -642,23 +575,17 @@ open class MainActivity : BaseActivity() {
     }
 
     private val handler: Handler = Handler(Looper.getMainLooper())
-    private var initTimes = 0
-
+    private var initTimes=0
 
     private fun initDJIManager() {
         //如果没有云台修改这里
         // 初始化 OpenCV
-
+        
         val isFlightControllerConnect =
             KeyManager.getInstance().getValue(DJIKey.create(FlightControllerKey.KeyConnection))
-        val isCameraConnect =
-            KeyManager.getInstance()
-                .getValue(KeyTools.createKey(CameraKey.KeyConnection, ComponentIndexType.PORT_1))
-        val isGimbal = KeyManager.getInstance()
-            .getValue(KeyTools.createKey(GimbalKey.KeyConnection, ComponentIndexType.PORT_1))
-        // LogUtil.log(TAG,isCameraConnect.toString())
-
-        //全装在初始化
+//        val isCameraConnect =
+//            KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyConnection, ComponentIndexType.PORT_1))
+      //  LogUtil.log(TAG,isCameraConnect.toString())
         if ((isFlightControllerConnect == null || !isFlightControllerConnect)) {
             handler.postDelayed({
                 initDJIManager()
@@ -666,53 +593,72 @@ open class MainActivity : BaseActivity() {
         } else {
             initTimes++
             LogUtil.log(TAG, "初始化$initTimes")
+            MissionV3Manager.getInstance().initMissionManager()
+            FlightManager.getInstance().initFlightInfo()
+            BatteryManager.getInstance().initBatteryInfo()
+            StickManager.getInstance().initStickInfo()
+            GimbalManager.getInstance().initGimbalInfo()
+            AlternateLandingManager.getInstance().initAlterLandingInfo()
+            OSDManager.getInstance().initOsd()
+            FlightTaskProgressManager.getInstance().initFlightTaskProgress()
+            MediaManager.getInstance().init()
+            StreamManager.getInstance().initStreamManager()
+            LEDsSettingsManager.getInstance().initLEDsInfo()
+            //负载
+            PayloadWidgetManager.getInstance().initPayloadInfo()
+            //初始化上报
+            LTEManager.getInstance().initLTEInfo()
+            WirelessLinkManager.getInstance().initWirelessLink()
+            CameraManager.getInstance().initCameraInfo()
 
-            LogUtil.log(TAG, "自定义推流方式:" + PreferenceUtils.getInstance().customStreamType)
+
+            MediaDataCenter.getInstance().cameraStreamManager.setVisionAssistViewDirection(
+                VisionAssistDirection.DOWN,object:CommonCallbacks.CompletionCallback{
+                    override fun onSuccess() {
+                        LogUtil.log(TAG,"开启成功")
+                    }
+
+                    override fun onFailure(p0: IDJIError) {
+                        LogUtil.log(TAG,"开启失败"+p0)
+                    }
+                })
+
+            val leDsSettings = LEDsSettings()
+            leDsSettings.setNavigationLEDsOn(false)
+            KeyManager.getInstance().setValue<LEDsSettings?>(
+                KeyTools.createKey<LEDsSettings?>(FlightControllerKey.KeyLEDsSettings),
+                leDsSettings,
+                object : CompletionCallback {
+                    override fun onSuccess() {
+                        LogUtil.log(TAG, "夜航灯关闭成功")
+                    }
+
+                    override fun onFailure(idjiError: IDJIError) {
+                        LogUtil.log(TAG, "夜航灯关闭失败")
+                    }
+                })
+
+
+            LogUtil.log(TAG,"自定义推流方式:"+PreferenceUtils.getInstance().customStreamType)
             Handler().postDelayed(Runnable {
+                    if (PreferenceUtils.getInstance().customStreamType==1){
+                        StreamManager.getInstance()
+                            .startLiveWithRTSP()
+                    }else if (PreferenceUtils.getInstance().customStreamType==2){
+                        StreamManager.getInstance()
+                            .startLiveWithCustom()
+                    }else {
+                        StreamManager.getInstance()
+                            .startLiveWithCustom()
+                    }
 
-
-                MissionV3Manager.getInstance().initMissionManager()
-                FlightManager.getInstance().initFlightInfo()
-                BatteryManager.getInstance().initBatteryInfo()
-                StickManager.getInstance().initStickInfo()
-                AlternateLandingManager.getInstance().initAlterLandingInfo()
-                OSDManager.getInstance().initOsd()
-                FlightTaskProgressManager.getInstance().initFlightTaskProgress()
-                MediaManager.getInstance().init()
-                StreamManager.getInstance().initStreamManager()
-
-                GimbalManager.getInstance().initGimbalInfo()
-                //负载
-                PayloadWidgetManager.getInstance().initPayloadInfo()
-                //初始化上报
-                LTEManager.getInstance().initLTEInfo()
-                WirelessLinkManager.getInstance().initWirelessLink()
-                CameraManager.getInstance().initCameraInfo()
-                //tts
-                SpeakerManager.getInstance().initMegaphoneInfo()
-                LEDsSettingsManager.getInstance().initLEDsInfo()
-
-
-
-
-                if (PreferenceUtils.getInstance().customStreamType == 1) {
-                    StreamManager.getInstance()
-                        .startLiveWithRTSP()
-
-                } else if (PreferenceUtils.getInstance().customStreamType == 2) {
-                    StreamManager.getInstance()
-                        .startLiveWithCustom()
-                } else {
-                    StreamManager.getInstance()
-                        .startLiveWithCustom()
-                }
-
-            }, 5000)
-            LogUtil.log(TAG, "推流类型:" + PreferenceUtils.getInstance().customStreamType)
+                }, 5000)
+            LogUtil.log(TAG,"推流类型:"+PreferenceUtils.getInstance().customStreamType)
         }
     }
 
 
+
     @SuppressLint("SuspiciousIndentation")
     private fun initCameraStream() {
 
@@ -720,25 +666,25 @@ open class MainActivity : BaseActivity() {
             ComponentIndexType.FPV,
             ICameraStreamManager.FrameFormat.YUV420_888
         ) { frameData, _, _, width, height, _ ->
-            Movement.getInstance().isVtx = true
+            Movement.getInstance().isVtx=true
             //检测到图传
-            streamReceive = true
+            streamReceive=true
 //            if (shouldExecute) {
-            if (startArucoType == 1) {
-                ApronArucoDetect.getInstance()?.detectArucoTags(
-                    height,
-                    width,
-                    frameData,
-                    dictionary
-                )
-            } else if (startArucoType == 2) {
-                AlternateArucoDetect.getInstance()?.detectArucoTags(
-                    height,
-                    width,
-                    frameData,
-                    dictionary
-                )
-            }
+                if (startArucoType == 1) {
+                    ApronArucoDetect.getInstance()?.detectArucoTags(
+                        height,
+                        width,
+                        frameData,
+                        dictionary
+                    )
+                } else if (startArucoType == 2) {
+                    AlternateArucoDetect.getInstance()?.detectArucoTags(
+                        height,
+                        width,
+                        frameData,
+                        dictionary
+                    )
+                }
 //            }
 //            shouldExecute = !shouldExecute
         }
@@ -792,7 +738,7 @@ open class MainActivity : BaseActivity() {
                             ApronArucoDetect.getInstance().setDetectedBigMarkers()
                             DroneHelper.getInstance().setGimbalPitchDegree()
                             //每次触发识别二维码时，为避免获取控制权失败,使多次获取控制权
-                            DroneHelper.getInstance().isVirtualStickEnable = false
+                            DroneHelper.getInstance().isVirtualStickEnable=false
                             DroneHelper.getInstance().setVerticalModeToVelocity()
                         }
                     })
@@ -831,48 +777,24 @@ open class MainActivity : BaseActivity() {
                             )
                             DroneHelper.getInstance().setGimbalPitchDegree()
                             //每次触发识别二维码时，为避免获取控制权失败,使多次获取控制权
-                            DroneHelper.getInstance().isVirtualStickEnable = false
+                            DroneHelper.getInstance().isVirtualStickEnable=false
                             DroneHelper.getInstance().setVerticalModeToVelocity()
                         }
                     })
 
-            FLAG_DOWN_LAND -> {
-                VirtualStickManager.getInstance().setVirtualStickAdvancedModeEnabled(false)
-
-                VirtualStickManager.getInstance().disableVirtualStick(object : CompletionCallback {
-                    override fun onSuccess() {
-                        LogUtil.log(TAG, "控制取消成功")
-                        VirtualStickManager.getInstance().setVirtualStickAdvancedModeEnabled(false)
-
-                        KeyManager.getInstance().performAction<EmptyMsg>(
-                            KeyTools.createKey<EmptyMsg, EmptyMsg>(FlightControllerKey.KeyStartAutoLanding),
-                            object : CommonCallbacks.CompletionCallbackWithParam<EmptyMsg?> {
-                                override fun onSuccess(emptyMsg: EmptyMsg?) {
-                                    startArucoType = 0
-                                    LogUtil.log(TAG, "自动降落调用成功")
-                                }
-                                override fun onFailure(error: IDJIError) {
-                                    LogUtil.log(TAG, "自动降落调用失败${error.description()}")
-                                }
-                            })
-                    }
-                    override fun onFailure(error: IDJIError) {
-                        LogUtil.log(TAG, "拖动控制权取消成功")
-                        KeyManager.getInstance().performAction<EmptyMsg>(
-                            KeyTools.createKey<EmptyMsg, EmptyMsg>(FlightControllerKey.KeyStartAutoLanding),
-                            object : CommonCallbacks.CompletionCallbackWithParam<EmptyMsg?> {
-                                override fun onSuccess(emptyMsg: EmptyMsg?) {
-                                    startArucoType = 0
-                                    LogUtil.log(TAG, "自动降落调用成功")
-                                }
-                                override fun onFailure(error: IDJIError) {
-                                    LogUtil.log(TAG, "自动降落调用失败${error.description()}")
-                                }
-                            })
-                    }
-                })
-            }
+            FLAG_DOWN_LAND ->
+                KeyManager.getInstance().performAction<EmptyMsg>(
+                    KeyTools.createKey<EmptyMsg, EmptyMsg>(FlightControllerKey.KeyStartAutoLanding),
+                    object : CommonCallbacks.CompletionCallbackWithParam<EmptyMsg?> {
+                        override fun onSuccess(emptyMsg: EmptyMsg?) {
+                            startArucoType = 0
+                            LogUtil.log(TAG, "自动降落调用成功")
+                        }
 
+                        override fun onFailure(error: IDJIError) {
+                            LogUtil.log(TAG, "自动降落调用失败${error.description()}")
+                        }
+                    })
 
             FLAG_STOP_ARUCO ->
                 startArucoType = 0
@@ -882,6 +804,9 @@ open class MainActivity : BaseActivity() {
         }
     }
 
+
+
+
     private fun setViewVisibilityWithCleanMode() {
         if (PreferenceUtils.getInstance().isCleanMode) {
             fpvInteractionWidget?.visibility = View.GONE
diff --git a/app/src/main/java/com/aros/apron/base/BaseManager.java b/app/src/main/java/com/aros/apron/base/BaseManager.java
index db2a0ce2..e3ed8ab2 100644
--- a/app/src/main/java/com/aros/apron/base/BaseManager.java
+++ b/app/src/main/java/com/aros/apron/base/BaseManager.java
@@ -43,6 +43,43 @@ public abstract class BaseManager {
     public String TAG = getClass().getSimpleName();
 
 
+    /**
+     * 推送psdkmovement
+     * @param
+     */
+    public void sendpsdkinfo2Server(){
+        try {
+            if (MqttManager.getInstance().mqttAndroidClient.isConnected()) {
+                MessageReply messageReply = new MessageReply();
+                MessageReply.Data data=new MessageReply.Data();
+                data.setResult(0);
+                messageReply.setData(data);
+                MqttMessage mqttMessage = new MqttMessage(new Gson().toJson(messageReply).getBytes("UTF-8"));
+                mqttMessage.setQos(0);
+                MqttManager.getInstance().mqttAndroidClient.publish(AMSConfig.UP_UAV_SERVICES_REPLY, mqttMessage);
+            } else {
+                LogUtil.log(TAG, "回复失败：mqtt 未连接");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            LogUtil.log(TAG, "回复异常：" + e.toString());
+        }
+
+
+
+    }
+    /**
+     * 推送psdkreply
+     * @param
+     */
+    public void sendpsdkreply2server(){
+
+
+
+
+
+    }
+
     /**
      * 响应reply
      * @param entity
diff --git a/app/src/main/java/com/aros/apron/callback/MqttCallBack.java b/app/src/main/java/com/aros/apron/callback/MqttCallBack.java
index 12184b7b..07c358ae 100644
--- a/app/src/main/java/com/aros/apron/callback/MqttCallBack.java
+++ b/app/src/main/java/com/aros/apron/callback/MqttCallBack.java
@@ -5,6 +5,8 @@ import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import com.aros.apron.app.ApronApp;
 import com.aros.apron.base.BaseManager;
 import com.aros.apron.constant.AMSConfig;
@@ -37,6 +39,14 @@ import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
 import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
+import dji.sdk.keyvalue.key.FlightControllerKey;
+import dji.sdk.keyvalue.key.KeyTools;
+import dji.sdk.keyvalue.value.common.ComponentIndexType;
+import dji.sdk.keyvalue.value.flightcontroller.LEDsSettings;
+import dji.v5.common.callback.CommonCallbacks;
+import dji.v5.common.error.IDJIError;
+import dji.v5.manager.KeyManager;
+
 public class MqttCallBack extends BaseManager implements MqttCallbackExtended  {
 
     private String TAG = "MqttCallBack";
@@ -56,15 +66,12 @@ public class MqttCallBack extends BaseManager implements MqttCallbackExtended  {
         }
     }
 
-
-
     // 心跳检测
     private volatile long lastDrControlTime = 0;
     private final Handler vsHandler = new Handler(Looper.getMainLooper());
     private Runnable vsTimeoutCheck;
     private static final long TIMEOUT_MS = 500; // 500ms 无数据触发
 
-
     /** 每次收到控制指令都调 */
     private void resetVirtualStickHeartbeat() {
         lastDrControlTime = System.currentTimeMillis();
@@ -108,257 +115,270 @@ public class MqttCallBack extends BaseManager implements MqttCallbackExtended  {
         }
         MessageDown message = new Gson().fromJson(jsonString, MessageDown.class);
         //LogUtil.log(TAG,message.getMethod());
-        switch (message.getMethod()) {
-            case Constant.PILOT_ON:
+
+        if(topic.equals(AMSConfig.DOWN_UAV_PSDK_EVENT)){
+            //负载设置控件
+
+        }else {
+            switch (message.getMethod()) {
+                case Constant.PILOT_ON:
 //                LogUtil.log(TAG, "收到：遥控器是否开机" + jsonString);
-                SystemManager.getInstance().checkRemoteControlPowerStatus(message);
-                break;
-            case Constant.AIRCRAFT_ON:
+                    SystemManager.getInstance().checkRemoteControlPowerStatus(message);
+                    break;
+                case Constant.AIRCRAFT_ON:
 //                LogUtil.log(TAG, "收到：飞机是否开机" + jsonString);
-                SystemManager.getInstance().checkAircraftPowerStatus(message);
-                break;
-            case Constant.MEDIA_UPLOAD_COMPLETE:
-                LogUtil.log(TAG, "收到：文件上传是否结束" + jsonString);
-                SystemManager.getInstance().aircraftStoredReply(message);
-                break;
-            case Constant.OPEN_SLOW_PROPELLER_ROTATION:
-                LogUtil.log(TAG, "收到：开启低速转浆" + jsonString);
-                FlightManager.getInstance().startPropellerRotation(message);
-                break;
-            case Constant.CLOSE_SLOW_PROPELLER_ROTATION:
-                LogUtil.log(TAG, "收到：停止低速转浆" + jsonString);
-                FlightManager.getInstance().stopPropellerRotation(message);
-                break;
-            case Constant.LIVE_START_PUSH:
-                LogUtil.log(TAG, "收到：开始直播" + jsonString);
-                StreamManager.getInstance().startLive(message);
-                break;
-            case Constant.LIVE_SET_QUALITY:
-                LogUtil.log(TAG, "收到：设置直播清晰度" + jsonString);
-                StreamManager.getInstance().setLiveStreamQuality(message);
-                break;
-            case Constant.LIVE_LENS_CHANGE:
-                LogUtil.log(TAG, "收到：切换直播镜头" + jsonString);
-                CameraManager.getInstance().setCameraVideoStreamSource(message);
-                break;
-            case Constant.FLIGHTTASK_EXECUTE:
-                LogUtil.log(TAG, "收到：航线" + jsonString);
-                //关闭避障
-                PerceptionManager.getInstance().setPerceptionEnable(false);
-                PerceptionManager.getInstance().setObstacleAvoidanceHorizontalEnabled(false);
-                //设置modecode
-                Movement.getInstance().setMode_code(1);
-                sendFlightTaskProgress2Server();
-                //设置标志为
-                Movement.getInstance().setFlightmode(1);
-                MissionV3Manager.getInstance().taskExecute(message);
-                break;
-            case Constant.FLIGHTTASK_PAUSE:
-                LogUtil.log(TAG, "收到：航线暂停" + jsonString);
-                MissionV3Manager.getInstance().pauseMission(message);
-                break;
-            case Constant.FLIGHTTASK_RECOVERY:
-                LogUtil.log(TAG, "收到：航线继续" + jsonString);
-                clearVirtualStickHeartbeat();
-                MissionV3Manager.getInstance().resumeMission(message);
-                break;
-            case Constant.RETURN_HOME:
-                LogUtil.log(TAG, "收到：返航" + jsonString);
-                //自动返航 (如果调用方法失败了 这个设置就有一个问题但是为了方便看懂我就放这里了没放成功的回调里面)
-                Movement.getInstance().setMode_code(9);
-                sendFlightTaskProgress2Server();
-                FlightManager.getInstance().startGoHome(message);
-                break;
-            case Constant.RETURN_HOME_CANCEL:
-                LogUtil.log(TAG, "收到：取消返航" + jsonString);
-                FlightManager.getInstance().stopGoHome(message);
-                break;
-            case Constant.CLOSE_DOOR:
-                LogUtil.log(TAG, "收到：服务端响应关舱门" + jsonString);
+                    SystemManager.getInstance().checkAircraftPowerStatus(message);
+                    break;
+                case Constant.MEDIA_UPLOAD_COMPLETE:
+                    LogUtil.log(TAG, "收到：文件上传是否结束" + jsonString);
+                    SystemManager.getInstance().aircraftStoredReply(message);
+                    break;
+                case Constant.OPEN_SLOW_PROPELLER_ROTATION:
+                    LogUtil.log(TAG, "收到：开启低速转浆" + jsonString);
+                    FlightManager.getInstance().startPropellerRotation(message);
+                    break;
+                case Constant.CLOSE_SLOW_PROPELLER_ROTATION:
+                    LogUtil.log(TAG, "收到：停止低速转浆" + jsonString);
+                    FlightManager.getInstance().stopPropellerRotation(message);
+                    break;
+                case Constant.LIVE_START_PUSH:
+                    LogUtil.log(TAG, "收到：开始直播" + jsonString);
+                    StreamManager.getInstance().startLive(message);
+                    break;
+                case Constant.LIVE_SET_QUALITY:
+                    LogUtil.log(TAG, "收到：设置直播清晰度" + jsonString);
+                    StreamManager.getInstance().setLiveStreamQuality(message);
+                    break;
+                case Constant.LIVE_LENS_CHANGE:
+                    LogUtil.log(TAG, "收到：切换直播镜头" + jsonString);
+                    CameraManager.getInstance().setCameraVideoStreamSource(message);
+                    break;
+                case Constant.FLIGHTTASK_EXECUTE:
+                    LogUtil.log(TAG, "收到：航线" + jsonString);
+                    //关闭避障
+                    PerceptionManager.getInstance().setPerceptionEnable(false);
+                    PerceptionManager.getInstance().setObstacleAvoidanceHorizontalEnabled(false);
+                    //设置modecode
+                    Movement.getInstance().setMode_code(1);
+                    sendFlightTaskProgress2Server();
+                    //设置标志为
+                    Movement.getInstance().setFlightmode(1);
+                    MissionV3Manager.getInstance().taskExecute(message);
+                    break;
+                case Constant.FLIGHTTASK_PAUSE:
+                    LogUtil.log(TAG, "收到：航线暂停" + jsonString);
+                    MissionV3Manager.getInstance().pauseMission(message);
+                    break;
+                case Constant.FLIGHTTASK_RECOVERY:
+                    LogUtil.log(TAG, "收到：航线继续" + jsonString);
+                    clearVirtualStickHeartbeat();
+                    MissionV3Manager.getInstance().resumeMission(message);
+                    break;
+                case Constant.RETURN_HOME:
+                    LogUtil.log(TAG, "收到：返航" + jsonString);
+                    //自动返航 (如果调用方法失败了 这个设置就有一个问题但是为了方便看懂我就放这里了没放成功的回调里面)
+                    Movement.getInstance().setMode_code(9);
+                    sendFlightTaskProgress2Server();
+                    FlightManager.getInstance().startGoHome(message);
+                    break;
+                case Constant.INBOUND:
+                    LogUtil.log(TAG, "收到：服务端响应入库" + jsonString);
+                    ApronExecutionStatus.getInstance().setServerReplyDockIn(true);
+                    break;
+                case Constant.RETURN_HOME_CANCEL:
+                    LogUtil.log(TAG, "收到：取消返航" + jsonString);
+                    FlightManager.getInstance().stopGoHome(message);
+                    break;
+                case Constant.CLOSE_DOOR:
+                    LogUtil.log(TAG, "收到：服务端响应关舱门" + jsonString);
 //                ApronExecutionStatus.getInstance().setServerReplyDockIn(true);
-                break;
-            case Constant.OPEN_DOOR:
-                LogUtil.log(TAG, "收到：服务端响应开舱门" + jsonString);
-                ApronExecutionStatus.getInstance().setServerReplyDockOpen(true);
-                break;
-            case Constant.TASK_FAIL:
-                LogUtil.log(TAG, "收到：服务端响应TaskFail" + jsonString);
-                ApronExecutionStatus.getInstance().setServerReplyTaskFail(true);
-                break;
-            case Constant.INBOUND:
-                LogUtil.log(TAG, "收到：服务端响应入库" + jsonString);
-                ApronExecutionStatus.getInstance().setServerReplyDockIn(true);
-                break;
-            case Constant.TAKEOFF_TO_POINT:
-                LogUtil.log(TAG, "收到：一键起飞" + jsonString);
-                //设置modecode
-                Movement.getInstance().setMode_code(1);
-                sendFlightTaskProgress2Server();
-                //设置标志为指令飞行
-                Movement.getInstance().setFlightmode(2);
-                TakeoffProgressScheduler.getInstance().startReporting();
+                    break;
+                case Constant.OPEN_DOOR:
+                    LogUtil.log(TAG, "收到：服务端响应开舱门" + jsonString);
+                    ApronExecutionStatus.getInstance().setServerReplyDockOpen(true);
+                    break;
+                case Constant.TASK_FAIL:
+                    LogUtil.log(TAG, "收到：服务端响应TaskFail" + jsonString);
+                    ApronExecutionStatus.getInstance().setServerReplyTaskFail(true);
+                    break;
 
-                TakeOffToPointManager.getInstance().taskExecute(message);
-                break;
-            case Constant.FLY_TO_POINT:
-                LogUtil.log(TAG, "收到：飞向目标点" + jsonString);
-                FlyToPointManager.getInstance().taskExecute(message);
-                break;
-            case Constant.FLY_TO_POINT_STOP:
-                LogUtil.log(TAG, "收到：结束 flyto 飞向目标点任务" + jsonString);
-                FlyToPointManager.getInstance().stopMission(message);
-                break;
-            case Constant.FLY_TO_POINT_STOP_UPDATE:
-                LogUtil.log(TAG, "收到：更新 flyto 目标点" + jsonString);
-                break;
-            case Constant.FLIGHT_AUTHORITY_GRAB:
-                LogUtil.log(TAG, "收到：飞行控制权抢夺" + jsonString);
-                StickManager.getInstance().enableVirtualStick(message);
-                break;
-            case Constant.PAYLOAD_AUTHORITY_GRAB:
-                LogUtil.log(TAG, "收到：负载控制权抢夺" + jsonString);
-                GimbalManager.getInstance().payloadAuthorityGrab(message);
-                break;
-            case Constant.DRC_MODE_ENTER:
-                LogUtil.log(TAG, "收到：进入指令飞行控制模式" + jsonString);
-                StickManager.getInstance().setVirtualStickModeEnabled(message);
-                break;
+                case Constant.TAKEOFF_TO_POINT:
+                    LogUtil.log(TAG, "收到：一键起飞" + jsonString);
+                    //设置modecode
+                    Movement.getInstance().setMode_code(1);
+                    sendFlightTaskProgress2Server();
+                    //设置标志为指令飞行
+                    Movement.getInstance().setFlightmode(2);
+                    TakeoffProgressScheduler.getInstance().startReporting();
+
+                    TakeOffToPointManager.getInstance().taskExecute(message);
+                    break;
+                case Constant.FLY_TO_POINT:
+                    LogUtil.log(TAG, "收到：飞向目标点" + jsonString);
+                    FlyToPointManager.getInstance().taskExecute(message);
+                    break;
+                case Constant.FLY_TO_POINT_STOP:
+                    LogUtil.log(TAG, "收到：结束 flyto 飞向目标点任务" + jsonString);
+                    FlyToPointManager.getInstance().stopMission(message);
+                    break;
+                case Constant.FLY_TO_POINT_STOP_UPDATE:
+                    LogUtil.log(TAG, "收到：更新 flyto 目标点" + jsonString);
+                    break;
+                case Constant.FLIGHT_AUTHORITY_GRAB:
+                    LogUtil.log(TAG, "收到：飞行控制权抢夺" + jsonString);
+                    StickManager.getInstance().enableVirtualStick(message);
+                    break;
+                case Constant.PAYLOAD_AUTHORITY_GRAB:
+                    LogUtil.log(TAG, "收到：负载控制权抢夺" + jsonString);
+                    GimbalManager.getInstance().payloadAuthorityGrab(message);
+                    break;
+                case Constant.DRC_MODE_ENTER:
+                    LogUtil.log(TAG, "收到：进入指令飞行控制模式" + jsonString);
+                    StickManager.getInstance().setVirtualStickModeEnabled(message);
+                    break;
                 //退出控制权时，要自动触发续飞航线
-            case Constant.DRC_MODE_EXIT:
-                LogUtil.log(TAG, "收到：退出指令飞行控制模式" + jsonString);
-                //清理这个时间戳循环
-                clearVirtualStickHeartbeat();
-                StickManager.getInstance().disableVirtualStick(message);
-                break;
-            case Constant.DRONE_CONTROL:
-                LogUtil.log(TAG, "收到：DRC-飞行控制" + jsonString);
-                resetVirtualStickHeartbeat();
-                StickManager.getInstance().sendVirtualStickAdvancedParam(message);
-                break;
-            case Constant.DRONE_EMERGENCY_STOP:
-                LogUtil.log(TAG, "收到：DRC-飞行器急停" + jsonString);
-                FlightManager.getInstance().emergencyHover(message);
-                break;
-            case Constant.CAMERA_MODE_SWITCH:
-                LogUtil.log(TAG, "收到：负载控制—切换相机模式" + jsonString);
-                CameraManager.getInstance().setCameraMode(message);
-                break;
-            case Constant.CAMERA_PHOTO_TAKE:
-                LogUtil.log(TAG, "收到：负载控制—开始拍照" + jsonString);
-                CameraManager.getInstance().startShootPhoto(message);
-                break;
-            case Constant.CAMERA_PHOTO_STOP:
-                LogUtil.log(TAG, "收到：负载控制—停止拍照" + jsonString);
-                CameraManager.getInstance().stopShootPhoto(message);
-                break;
-            case Constant.CAMERA_RECORDING_START:
-                LogUtil.log(TAG, "收到：负载控制—开始录像" + jsonString);
-                CameraManager.getInstance().startRecordVideo(message);
-                break;
-            case Constant.CAMERA_RECORDING_STOP:
-                LogUtil.log(TAG, "收到：负载控制—停止录像" + jsonString);
-                CameraManager.getInstance().stopRecordVideo(message);
-                break;
-            case Constant.CAMERA_SCREEN_DRAG:
-                LogUtil.log(TAG, "收到：负载控制—画面拖动控制" + jsonString);
-                GimbalManager.getInstance().camera_screen_drag(message);
-                break;
-            case Constant.CAMERA_AIM:
-                LogUtil.log(TAG, "收到：负载控制—双击成为 AIM" + jsonString);
-                CameraManager.getInstance().tapZoomAtTarget(message);
-                break;
-            case Constant.CAMERA_FOCAL_LENGTH_SET:
-                LogUtil.log(TAG, "收到：负载控制—变焦" + jsonString);
-                CameraManager.getInstance().setCameraZoomRatios(message);
-                break;
-            case Constant.GIMBAL_RESET:
-                LogUtil.log(TAG, "收到：负载控制—重置云台" + jsonString);
-                GimbalManager.getInstance().gimbalReset(message);
-                break;
-            case Constant.CAMERA_LOOK_AT:
-                LogUtil.log(TAG, "收到：负载控制—Look At" + jsonString);
-                GimbalManager.getInstance().gimbalLookAt(message);
-                break;
-            case Constant.CAMERA_SCREEN_SPLIT:
-                LogUtil.log(TAG, "收到：负载控制—分屏" + jsonString);
-                break;
-            case Constant.PHOTO_STORAGE_SET:
-                SystemManager.getInstance().checkRemoteControlPowerStatus(message);
+                case Constant.DRC_MODE_EXIT:
+                    LogUtil.log(TAG, "收到：退出指令飞行控制模式" + jsonString);
+                    //清理这个时间戳循环
+                    clearVirtualStickHeartbeat();
+                    StickManager.getInstance().disableVirtualStick(message);
+                    break;
+                case Constant.DRONE_CONTROL:
+                    LogUtil.log(TAG, "收到：DRC-飞行控制" + jsonString);
+                    resetVirtualStickHeartbeat();
+                    StickManager.getInstance().sendVirtualStickAdvancedParam(message);
+                    break;
+                case Constant.DRONE_EMERGENCY_STOP:
+                    LogUtil.log(TAG, "收到：DRC-飞行器急停" + jsonString);
+                    FlightManager.getInstance().emergencyHover(message);
+                    break;
+                case Constant.CAMERA_MODE_SWITCH:
+                    LogUtil.log(TAG, "收到：负载控制—切换相机模式" + jsonString);
+                    CameraManager.getInstance().setCameraMode(message);
+                    break;
+                case Constant.CAMERA_PHOTO_TAKE:
+                    LogUtil.log(TAG, "收到：负载控制—开始拍照" + jsonString);
+                    CameraManager.getInstance().startShootPhoto(message);
+                    break;
+                case Constant.CAMERA_PHOTO_STOP:
+                    LogUtil.log(TAG, "收到：负载控制—停止拍照" + jsonString);
+                    CameraManager.getInstance().stopShootPhoto(message);
+                    break;
+                case Constant.CAMERA_RECORDING_START:
+                    LogUtil.log(TAG, "收到：负载控制—开始录像" + jsonString);
+                    CameraManager.getInstance().startRecordVideo(message);
+                    break;
+                case Constant.CAMERA_RECORDING_STOP:
+                    LogUtil.log(TAG, "收到：负载控制—停止录像" + jsonString);
+                    CameraManager.getInstance().stopRecordVideo(message);
+                    break;
+                case Constant.CAMERA_SCREEN_DRAG:
+                    LogUtil.log(TAG, "收到：负载控制—画面拖动控制" + jsonString);
+                    GimbalManager.getInstance().camera_screen_drag(message);
+                    break;
+                case Constant.CAMERA_AIM:
+                    LogUtil.log(TAG, "收到：负载控制—双击成为 AIM" + jsonString);
+                    CameraManager.getInstance().tapZoomAtTarget(message);
+                    break;
+                case Constant.CAMERA_FOCAL_LENGTH_SET:
+                    LogUtil.log(TAG, "收到：负载控制—变焦" + jsonString);
+                    CameraManager.getInstance().setCameraZoomRatios(message);
+                    break;
+                case Constant.GIMBAL_RESET:
+                    LogUtil.log(TAG, "收到：负载控制—重置云台" + jsonString);
+                    GimbalManager.getInstance().gimbalReset(message);
+                    break;
+                case Constant.CAMERA_LOOK_AT:
+                    LogUtil.log(TAG, "收到：负载控制—Look At" + jsonString);
+                    GimbalManager.getInstance().gimbalLookAt(message);
+                    break;
+                case Constant.CAMERA_SCREEN_SPLIT:
+                    LogUtil.log(TAG, "收到：负载控制—分屏" + jsonString);
+                    break;
+                case Constant.PHOTO_STORAGE_SET:
+                    SystemManager.getInstance().checkRemoteControlPowerStatus(message);
 //                LogUtil.log(TAG, "收到：负载控制—照片存储设置" + jsonString);
-                break;
-            case Constant.VIDEO_STORAGE_SET:
-                SystemManager.getInstance().checkRemoteControlPowerStatus(message);
+                    break;
+                case Constant.VIDEO_STORAGE_SET:
+                    SystemManager.getInstance().checkRemoteControlPowerStatus(message);
 //                LogUtil.log(TAG, "收到：负载控制—视频存储设置" + jsonString);
-                break;
-            case Constant.CAMERA_EXPOSURE_MODE_SET:
-                LogUtil.log(TAG, "收到：负载控制—相机曝光模式设置" + jsonString);
-                break;
-            case Constant.CAMERA_EXPOSURE_SET:
-                LogUtil.log(TAG, "收到：负载控制—相机曝光值调节" + jsonString);
-                break;
-            case Constant.CAMERA_FOCUS_MODE_SET:
-                LogUtil.log(TAG, "收到：负载控制—相机对焦模式" + jsonString);
-                break;
-            case Constant.CAMERA_FOCUS_MODE_VALUE_SET:
-                LogUtil.log(TAG, "收到：负载控制—相机对焦值设置" + jsonString);
-                break;
-            case Constant.CAMERA_POINT_FOCUS_ACTION:
-                LogUtil.log(TAG, "收到：负载控制—点对焦" + jsonString);
-                break;
-            case Constant.IR_METERING_MODE_SET:
-                LogUtil.log(TAG, "收到：负载控制—红外测温模式设置" + jsonString);
-                break;
-            case Constant.IR_METERING_POINT_SET:
-                LogUtil.log(TAG, "收到：负载控制—红外测温点设置" + jsonString);
-                break;
-            case Constant.IR_METERING_AREA_SET:
-                LogUtil.log(TAG, "收到：负载控制—红外测温区域设置" + jsonString);
-                break;
-            case Constant.POI_MODE_ENTER:
-                LogUtil.log(TAG, "收到：飞行控制—进入 POI 环绕模式" + jsonString);
-                break;
-            case Constant.POI_MODE_EXIT:
-                LogUtil.log(TAG, "收到：飞行控制—退出 POI 环绕模式" + jsonString);
-                break;
-            case Constant.POI_CIRCLE_SPEED_SET:
-                LogUtil.log(TAG, "收到：飞行控制—POI 环绕速度设置" + jsonString);
-                break;
-            case Constant.CAMERA_FRAME_ZOOM:
-                LogUtil.log(TAG, "收到：框选变焦" + jsonString);
-                CameraManager.getInstance().camera_frame_zoom(message);
-                break;
-            case Constant.SPEAKER_AUDIO_PLAY_START:
-                LogUtil.log(TAG, "收到：喊话器-开始播放音频" + jsonString);
-                SpeakerProgressReporter.getInstance().startAudioReport(2);
-                SpeakerManager.getInstance().speakerAudioPlayStart(message);
-                break;
-            case Constant.SPEAKER_TTS_PLAY_START:
-                LogUtil.log(TAG, "收到：喊话器-开始播放TTS文本" + jsonString);
-                SpeakerProgressReporter.getInstance().startTTSReport(2);
-                SpeakerManager.getInstance().speakerTTSPlayStart(message,0);
-                break;
-            case Constant.SPEAKER_REPLAY:
-                LogUtil.log(TAG, "收到：喊话器-重新播放" + jsonString);
-                SpeakerManager.getInstance().speakerReply(message);
-                break;
-            case Constant.SPEAKER_PLAY_STOP:
-                LogUtil.log(TAG, "收到：喊话器-停止播放" + jsonString);
-
-                SpeakerManager.getInstance().speakerStop(message);
-                break;
-            case Constant.SPEAKER_PLAY_MODE_SET:
-                LogUtil.log(TAG, "收到：喊话器-设置播放模式" + jsonString);
-                SpeakerManager.getInstance().speakerPlayModeSet(message);
-                break;
-            case Constant.SPEAKER_PLAY_VOLUME_SET:
-                LogUtil.log(TAG, "收到：喊话器-设置音量" + jsonString);
-                SpeakerManager.getInstance().speakerPlayVolumeSet(message);
-                break;
-            case Constant.DRC_SPEAKER_TTS_SET:
-                LogUtil.log(TAG, "收到：喊话器-TTS喊话设置" + jsonString);
-                SpeakerManager.getInstance().speakerTTSPlayStart(message,1);
-                break;
+                    break;
+                case Constant.CAMERA_EXPOSURE_MODE_SET:
+                    LogUtil.log(TAG, "收到：负载控制—相机曝光模式设置" + jsonString);
+                    break;
+                case Constant.CAMERA_EXPOSURE_SET:
+                    LogUtil.log(TAG, "收到：负载控制—相机曝光值调节" + jsonString);
+                    break;
+                case Constant.CAMERA_FOCUS_MODE_SET:
+                    LogUtil.log(TAG, "收到：负载控制—相机对焦模式" + jsonString);
+                    break;
+                case Constant.CAMERA_FOCUS_MODE_VALUE_SET:
+                    LogUtil.log(TAG, "收到：负载控制—相机对焦值设置" + jsonString);
+                    break;
+                case Constant.CAMERA_POINT_FOCUS_ACTION:
+                    LogUtil.log(TAG, "收到：负载控制—点对焦" + jsonString);
+                    break;
+                case Constant.IR_METERING_MODE_SET:
+                    LogUtil.log(TAG, "收到：负载控制—红外测温模式设置" + jsonString);
+                    break;
+                case Constant.IR_METERING_POINT_SET:
+                    LogUtil.log(TAG, "收到：负载控制—红外测温点设置" + jsonString);
+                    break;
+                case Constant.IR_METERING_AREA_SET:
+                    LogUtil.log(TAG, "收到：负载控制—红外测温区域设置" + jsonString);
+                    break;
+                case Constant.POI_MODE_ENTER:
+                    LogUtil.log(TAG, "收到：飞行控制—进入 POI 环绕模式" + jsonString);
+                    break;
+                case Constant.POI_MODE_EXIT:
+                    LogUtil.log(TAG, "收到：飞行控制—退出 POI 环绕模式" + jsonString);
+                    break;
+                case Constant.POI_CIRCLE_SPEED_SET:
+                    LogUtil.log(TAG, "收到：飞行控制—POI 环绕速度设置" + jsonString);
+                    break;
+                case Constant.CAMERA_FRAME_ZOOM:
+                    LogUtil.log(TAG, "收到：框选变焦" + jsonString);
+                    CameraManager.getInstance().camera_frame_zoom(message);
+                    break;
+                case Constant.SPEAKER_AUDIO_PLAY_START:
+                    LogUtil.log(TAG, "收到：喊话器-开始播放音频" + jsonString);
+                    SpeakerProgressReporter.getInstance().startAudioReport(2);
+                    SpeakerManager.getInstance().speakerAudioPlayStart(message);
+                    break;
+                case Constant.SPEAKER_TTS_PLAY_START:
+                    LogUtil.log(TAG, "收到：喊话器-开始播放TTS文本" + jsonString);
+                    SpeakerProgressReporter.getInstance().startTTSReport(2);
+                    SpeakerManager.getInstance().speakerTTSPlayStart(message, 0);
+                    break;
+                case Constant.SPEAKER_REPLAY:
+                    LogUtil.log(TAG, "收到：喊话器-重新播放" + jsonString);
+                    SpeakerManager.getInstance().speakerReply(message);
+                    break;
+                case Constant.SPEAKER_PLAY_STOP:
+                    LogUtil.log(TAG, "收到：喊话器-停止播放" + jsonString);
 
+                    SpeakerManager.getInstance().speakerStop(message);
+                    break;
+                case Constant.SPEAKER_PLAY_MODE_SET:
+                    LogUtil.log(TAG, "收到：喊话器-设置播放模式" + jsonString);
+                    SpeakerManager.getInstance().speakerPlayModeSet(message);
+                    break;
+                case Constant.SPEAKER_PLAY_VOLUME_SET:
+                    LogUtil.log(TAG, "收到：喊话器-设置音量" + jsonString);
+                    SpeakerManager.getInstance().speakerPlayVolumeSet(message);
+                    break;
+                case Constant.DRC_SPEAKER_TTS_SET:
+                    LogUtil.log(TAG, "收到：喊话器-TTS喊话设置" + jsonString);
+                    SpeakerManager.getInstance().speakerTTSPlayStart(message, 1);
+                    break;
+                case Constant.UAV_LIVE_FPV:
+                    LogUtil.log(TAG, "收到：切换推流fpv" + jsonString);
+                    StreamManager.getInstance().switchptsp(ComponentIndexType.FPV,message);
+                    break;
+                case Constant.UAV_LIVE_CAMERA:
+                    LogUtil.log(TAG, "收到：切换推流camera" + jsonString);
+                    StreamManager.getInstance().switchptsp(ComponentIndexType.PORT_1,message);
+                    break;
 
 //            //获取控制权
 //            case 60007:
@@ -701,6 +721,7 @@ public class MqttCallBack extends BaseManager implements MqttCallbackExtended  {
 //                }
 //                break;
 
+            }
         }
     }
 
diff --git a/app/src/main/java/com/aros/apron/constant/AMSConfig.java b/app/src/main/java/com/aros/apron/constant/AMSConfig.java
index eead1ddf..fd85176a 100644
--- a/app/src/main/java/com/aros/apron/constant/AMSConfig.java
+++ b/app/src/main/java/com/aros/apron/constant/AMSConfig.java
@@ -75,5 +75,21 @@ public class AMSConfig {
      */
     public static String DOWN_UAV_EVENT_REPLY = "nest/uav_event_reply";
 
+    /**
+     * 负载信息发送的topic
+     */
+
+    public static String DOWN_UAV_PSDK_MOVEMENT = "nest/uav_psdk_movement";
+
+    /**
+     * 负载信息操作的topic
+     */
+    public static String DOWN_UAV_PSDK_EVENT = "nest/uav_psdk_event";
+
+    /**
+     * 收到负载的回复
+     */
+
+    public static String DOWN_UAV_PSDK_REPLAY = "nest/uav_psdk_reply";
 
 }
diff --git a/app/src/main/java/com/aros/apron/constant/Constant.java b/app/src/main/java/com/aros/apron/constant/Constant.java
index 7ac770d6..b2be62fc 100644
--- a/app/src/main/java/com/aros/apron/constant/Constant.java
+++ b/app/src/main/java/com/aros/apron/constant/Constant.java
@@ -322,6 +322,12 @@ public class Constant {
      */
     public static final String DRC_SPEAKER_TTS_SET="drc_speaker_tts_set";
 
-
-
+    /**
+     *  推流切换fpv
+     */
+    public static final String UAV_LIVE_FPV="uav_live_fpv";
+    /**
+     *  推流切换camera
+     */
+    public static final String UAV_LIVE_CAMERA="uav_live_camera";
 }
diff --git a/app/src/main/java/com/aros/apron/manager/FlightManager.java b/app/src/main/java/com/aros/apron/manager/FlightManager.java
index ee185b71..7f875c7d 100644
--- a/app/src/main/java/com/aros/apron/manager/FlightManager.java
+++ b/app/src/main/java/com/aros/apron/manager/FlightManager.java
@@ -1015,6 +1015,7 @@ public class FlightManager extends BaseManager {
             if (!isDebugMode) {
                 //这里可能也会触发备降点关舱门的逻辑
                 if (!PreferenceUtils.getInstance().getNeedTriggerAlterArucoLand()) {
+                    LogUtil.log(TAG,"");
                     // 发送无人机入库消息到服务器********************待修改************************
                     ApronExecutionStatus.getInstance().setAircraftWaitShutDown(false);
                     DockStorageManager.getInstance().sendDockStorageMsg2Server();
diff --git a/app/src/main/java/com/aros/apron/manager/FlyToPointManager.java b/app/src/main/java/com/aros/apron/manager/FlyToPointManager.java
index 6d34e364..39fb3f56 100644
--- a/app/src/main/java/com/aros/apron/manager/FlyToPointManager.java
+++ b/app/src/main/java/com/aros/apron/manager/FlyToPointManager.java
@@ -174,6 +174,7 @@ public class FlyToPointManager extends BaseManager {
                 @Override
                 public void onFailure(@NonNull IDJIError error) {
                    sendFailMsg2Server(message,"指点航线上传失败:"+ Utils.getIDJIErrorMsg(error));
+                    sendEvent2Server("指点航线上传失败:"+ Utils.getIDJIErrorMsg(error),2);
                    //待机
                     Movement.getInstance().setMode_code(0);
                    sendFlightTaskProgress2Server();
@@ -210,6 +211,7 @@ public class FlyToPointManager extends BaseManager {
                 @Override
                 public void onFailure(@NonNull IDJIError error) {
                     sendFailMsg2Server(message,"指点航线执行失败:" + new Gson().toJson(error));
+                    sendEvent2Server("指点航线执行失败:" + new Gson().toJson(error),2);
                     //待机
                     Movement.getInstance().setMode_code(0);
                     sendFlightTaskProgress2Server();
diff --git a/app/src/main/java/com/aros/apron/manager/MissionV3Manager.java b/app/src/main/java/com/aros/apron/manager/MissionV3Manager.java
index 39cc5705..369359b3 100644
--- a/app/src/main/java/com/aros/apron/manager/MissionV3Manager.java
+++ b/app/src/main/java/com/aros/apron/manager/MissionV3Manager.java
@@ -342,6 +342,19 @@ public class MissionV3Manager extends BaseManager {
         PreferenceUtils.getInstance().setAlternatePointLat(message.getData().getAlternate_land_point().getLatitude() + "");
         PreferenceUtils.getInstance().setAlternatePointSecurityHeight(message.getData().getAlternate_land_point().getSafe_land_height() + "");
 
+        //设置全局返航高度
+        KeyManager.getInstance().setValue(KeyTools.createKey(FlightControllerKey.KeyGoHomeHeight), message.getData().getRth_altitude(), new CommonCallbacks.CompletionCallback() {
+            @Override
+            public void onSuccess() {
+                LogUtil.log(TAG,"设置全局返航高度成功");
+            }
+
+            @Override
+            public void onFailure(@NonNull IDJIError idjiError) {
+                LogUtil.log(TAG,"设置全局返航高度失败");
+            }
+        });
+
         Movement.getInstance().setTask_current_step(5);
 
 
@@ -357,6 +370,7 @@ public class MissionV3Manager extends BaseManager {
             boolean statusOk = verifyAircraftStatus(message);
             //4.信号收敛(等待GPS搜星)
             if (statusOk) {
+                sendEvent2Server("条件满足进入自建和下发航线",1);
                 verifyGpsAndMissionState(message);
             }
         });
@@ -441,10 +455,11 @@ public class MissionV3Manager extends BaseManager {
         LogUtil.log(TAG,"isMissionStateValid"+isMissionStateValid+"isPlaneMessageValid"+isPlaneMessageValid+"isGpsQualityValid"+isGpsQualityValid);
 //        if (isMissionStateValid && isPlaneMessageValid && isGpsQualityValid) {
 
-        //sendEvent2Server("卫星数量"+GPSSatelliteCount,1);
+        sendEvent2Server("卫星数量"+GPSSatelliteCount+"gps是否ok"+GPSSatelliteCountValid,1);
         if (isGpsQualityValid||GPSSatelliteCountValid) {
             //5.下载航线
             downLoadKMZFile(message);
+            sendEvent2Server("执行下载航线成功",1);
             verifyGpsAndMissionStateSuccess = true;
         } else {
 
@@ -586,7 +601,6 @@ public class MissionV3Manager extends BaseManager {
                 public void onProgressUpdate(Double progress) {
                     sendEvent2Server("航线上传进度:" + progress, 1);
                     Movement.getInstance().setTask_current_step(17);
-
                 }
 
                 @Override
diff --git a/app/src/main/java/com/aros/apron/manager/PayloadWidgetManager.java b/app/src/main/java/com/aros/apron/manager/PayloadWidgetManager.java
index d746a6f1..8903e6c1 100644
--- a/app/src/main/java/com/aros/apron/manager/PayloadWidgetManager.java
+++ b/app/src/main/java/com/aros/apron/manager/PayloadWidgetManager.java
@@ -1,37 +1,16 @@
 package com.aros.apron.manager;
-
-
-import static com.aros.apron.tools.Utils.getIDJIErrorMsg;
-
-import android.os.Handler;
-import android.text.TextUtils;
-import android.util.Log;
-
 import androidx.annotation.NonNull;
 
 import com.aros.apron.base.BaseManager;
-import com.aros.apron.constant.AMSConfig;
-import com.aros.apron.entity.MessageReply;
-import com.aros.apron.entity.Movement;
 import com.aros.apron.entity.PayloadInfo;
 import com.aros.apron.tools.LogUtil;
-import com.aros.apron.tools.MqttManager;
-import com.aros.apron.tools.Utils;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-
-import org.eclipse.paho.android.service.MqttAndroidClient;
-import org.eclipse.paho.client.mqttv3.MqttMessage;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-
 import dji.sdk.keyvalue.key.FlightControllerKey;
 import dji.sdk.keyvalue.key.KeyTools;
-import dji.sdk.keyvalue.value.payload.CustomizeRcButtonConfig;
-import dji.sdk.keyvalue.value.payload.WidgetType;
-import dji.sdk.keyvalue.value.payload.WidgetValue;
 import dji.v5.common.callback.CommonCallbacks;
 import dji.v5.common.error.IDJIError;
 import dji.v5.manager.KeyManager;
@@ -45,7 +24,7 @@ import dji.v5.manager.aircraft.payload.listener.PayloadWidgetInfoListener;
 import dji.v5.manager.interfaces.IPayloadManager;
 
 
-public class PayloadWidgetManager {
+public class PayloadWidgetManager extends BaseManager {
     private String TAG = this.getClass().getSimpleName();
 
     private List<PayloadInfo> payloadInfos = new ArrayList<>();
@@ -61,7 +40,6 @@ public class PayloadWidgetManager {
         return PayloadWidgetHolder.INSTANCE;
     }
 
-
     // 使用GsonBuilder配置Gson实例以允许序列化特殊浮点数值
     Gson gson = new GsonBuilder()
             .serializeSpecialFloatingPointValues() // 这是关键
@@ -75,29 +53,37 @@ public class PayloadWidgetManager {
             if (payloadManager != null) {
                 IPayloadManager iPayloadManager = payloadManager.get(PayloadIndexType.PORT_1);
                 if (iPayloadManager != null) {
-                    //可以把负载设备控件打印
-                    PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).addPayloadWidgetInfoListener(new PayloadWidgetInfoListener() {
+                    PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).pullWidgetInfoFromPayload(new CommonCallbacks.CompletionCallback() {
                         @Override
-                        public void onPayloadWidgetInfoUpdate(PayloadWidgetInfo info) {
-                            LogUtil.log(TAG, "左侧负载控件信息:" + info.toString());
+                        public void onSuccess() {
+                            //可以把负载设备控件打印
+                            PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).addPayloadWidgetInfoListener(new PayloadWidgetInfoListener() {
+                                @Override
+                                public void onPayloadWidgetInfoUpdate(PayloadWidgetInfo info) {
+                                    LogUtil.log(TAG, "左侧负载控件信息:" + info.toString());
+                                    //如果负载为空
+                                    if(info.getConfigInterfaceWidgetList()==null||info.getMainInterfaceWidgetList()==null){
+                                        PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).pullWidgetInfoFromPayload(new CommonCallbacks.CompletionCallback() {
+                                            @Override
+                                            public void onSuccess() {
+                                                LogUtil.log(TAG,"负载重复拉取成功");
+                                            }
+
+                                            @Override
+                                            public void onFailure(@NonNull IDJIError idjiError) {
+                                                LogUtil.log(TAG,"负载重复拉取失败");
+                                            }
+                                        });
+                                    }
+                                }
+                            });
+                        }
+
+                        @Override
+                        public void onFailure(@NonNull IDJIError idjiError) {
+                            LogUtil.log(TAG,"负载第一次拉取失败");
                         }
                     });
-
-                    PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).addPayloadDataListener(new PayloadDataListener() {
-                        @Override
-                        public void onDataFromPayloadUpdate(byte[] data) {
-                            LogUtil.log(TAG, "onDataFromPayloadUpdate:" + data.toString());
-                        }
-                    });
-                    PayloadCenter.getInstance().getPayloadManager().get(PayloadIndexType.PORT_1).addPayloadBasicInfoListener(new PayloadBasicInfoListener() {
-                        @Override
-                        public void onPayloadBasicInfoUpdate(PayloadBasicInfo info) {
-                            LogUtil.log(TAG, "addPayloadBasicInfoListener:" + info.toString());
-                        }
-                    });
-
-
-
                 } else {
                     LogUtil.log(TAG, "监听LEFT_OR_MAIN PSDK数据失败:设备未连接");
                 }
@@ -109,6 +95,21 @@ public class PayloadWidgetManager {
         }
     }
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 //    //设置三方负载控件
 //    public void setWidget(MQMessage message) {
 //        Boolean isConnect = KeyManager.getInstance().getValue(KeyTools.createKey(FlightControllerKey.KeyConnection));
diff --git a/app/src/main/java/com/aros/apron/manager/PerceptionManager.java b/app/src/main/java/com/aros/apron/manager/PerceptionManager.java
index c64fd789..7d5d5a62 100644
--- a/app/src/main/java/com/aros/apron/manager/PerceptionManager.java
+++ b/app/src/main/java/com/aros/apron/manager/PerceptionManager.java
@@ -41,7 +41,7 @@ public class PerceptionManager extends BaseManager {
 
     public void setPerceptionEnable(boolean perceptionEnable) {
         if (PreferenceUtils.getInstance().getCloseObsEnable() && perceptionEnable) {
-            LogUtil.log(TAG, "全局避障关闭,不开启避障");
+            //LogUtil.log(TAG, "全局避障关闭,不开启避障");
             return;
         }
 
@@ -56,7 +56,7 @@ public class PerceptionManager extends BaseManager {
                 @Override
                 public void onSuccess() {
                     if (perceptionEnable) {
-                        LogUtil.log(TAG, "避障开启");
+                        //LogUtil.log(TAG, "避障开启");
                     } else {
                         closePerceptionSuccess = true;
                         //LogUtil.log(TAG, "避障关闭");
@@ -102,7 +102,7 @@ public class PerceptionManager extends BaseManager {
             perceptionManager.setObstacleAvoidanceEnabled(perceptionEnable ? true:false, PerceptionDirection.HORIZONTAL, new CommonCallbacks.CompletionCallback() {
                 @Override
                 public void onSuccess() {
-                    LogUtil.log(TAG, "开启水平避障");
+                    //LogUtil.log(TAG, "开启水平避障");
                 }
 
                 @Override
diff --git a/app/src/main/java/com/aros/apron/manager/StreamManager.java b/app/src/main/java/com/aros/apron/manager/StreamManager.java
index dbd978d7..79a67c15 100644
--- a/app/src/main/java/com/aros/apron/manager/StreamManager.java
+++ b/app/src/main/java/com/aros/apron/manager/StreamManager.java
@@ -55,7 +55,7 @@ public class StreamManager extends BaseManager {
                 public void onLiveStreamStatusUpdate(LiveStreamStatus status) {
                     if (status != null) {
                         Movement.getInstance().setLiveStatus(status.isStreaming() ? 1 : 0);
-                            Log.d(TAG, "推流状态"+status.isStreaming()+"帧率:" + status.getFps() + "--" + "码率:" + status.getVbps()+"---"+"延迟:"+status.getRtt());
+                        Log.d(TAG, "推流状态" + status.isStreaming() + "帧率:" + status.getFps() + "--" + "码率:" + status.getVbps() + "---" + "延迟:" + status.getRtt());
                     }
                 }
 
@@ -68,7 +68,7 @@ public class StreamManager extends BaseManager {
     }
 
     public void startLive(MessageDown message) {
-sendMsg2Server(message);
+        sendMsg2Server(message);
 
     }
 
@@ -80,9 +80,9 @@ sendMsg2Server(message);
         } else {
             ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
             if (liveStreamManager.isStreaming()) {
-                if (message.getData().getVideo_quality()==0||message.getData().getVideo_quality()==4){
+                if (message.getData().getVideo_quality() == 0 || message.getData().getVideo_quality() == 4) {
                     liveStreamManager.setLiveStreamQuality(StreamQuality.ORIGINAL);
-                }else {
+                } else {
                     liveStreamManager.setLiveStreamQuality(StreamQuality.find(message.getData().getVideo_quality()));
                 }
                 sendMsg2Server(message);
@@ -114,7 +114,7 @@ sendMsg2Server(message);
 //            if (value != null && (value == CameraType.ZENMUSE_H20T ||
 //                    value == CameraType.ZENMUSE_H20N || value == CameraType.ZENMUSE_H20)
 //                    || value == CameraType.ZENMUSE_H30 || value == CameraType.ZENMUSE_H30T) {
-                liveStreamManager.setCameraIndex(ComponentIndexType.PORT_1);
+            liveStreamManager.setCameraIndex(ComponentIndexType.PORT_1);
 //            } else {
 //                liveStreamManager.setCameraIndex(ComponentIndexType.FPV);
 //            }
@@ -125,13 +125,13 @@ sendMsg2Server(message);
                     @Override
                     public void onSuccess() {
                         LogUtil.log(TAG, "自定义推流启动成功");
-                        isLiveStreamAlreadyStart=true;
+                        isLiveStreamAlreadyStart = true;
                     }
 
                     @Override
                     public void onFailure(@NonNull IDJIError error) {
-                        LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始推流失败:"+new Gson().toJson(error));
-                        if (!isLiveStreamAlreadyStart){
+                        LogUtil.log(TAG, "第" + startLiveFailTimes + "次开始推流失败:" + new Gson().toJson(error));
+                        if (!isLiveStreamAlreadyStart) {
                             new Handler().postDelayed(new Runnable() {
                                 @Override
                                 public void run() {
@@ -149,18 +149,312 @@ sendMsg2Server(message);
     }
 
 
+    private int isliveindex = 1; //1代表port 2代表fpv
+
+    public void switchptsp(ComponentIndexType ComponentIndex, MessageDown message) {
+        isLiveStreamAlreadyStart = false;
+        sendMsg2Server(message);
+        LogUtil.log(TAG, "收到回复" + message.toString());
+        if (ComponentIndex == ComponentIndexType.PORT_1 && isliveindex == 2) {
+            ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
+            LogUtil.log(TAG, "自定义RTSP推流:" + PreferenceUtils.getInstance().getRtspUserName()
+                    + "--" + PreferenceUtils.getInstance().getRtspPort() + "--" + PreferenceUtils.getInstance().getRtspPassWord());
+
+            LiveStreamSettings.Builder streamSettingBuilder = new LiveStreamSettings.Builder();
+
+            LiveStreamSettings streamSettings = streamSettingBuilder.setLiveStreamType(LiveStreamType.RTSP)
+                    .setRtspSettings(new RtspSettings.Builder().setPassWord(PreferenceUtils.getInstance().getRtspPassWord()).
+                            setPort(Integer.parseInt(PreferenceUtils.getInstance().getRtspPort())).
+                            setUserName(PreferenceUtils.getInstance().getRtspUserName()).build()).build();
+
+            liveStreamManager.setLiveStreamSettings(streamSettings);
+
+
+            CameraType value = KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyCameraType, ComponentIndexType.PORT_1));
+
+            liveStreamManager.setCameraIndex(ComponentIndex);
+
+            liveStreamManager.setLiveStreamQuality(StreamQuality.FULL_HD);
+            liveStreamManager.setLiveVideoBitrateMode(LiveVideoBitrateMode.AUTO);
+            isliveindex = 1;
+
+
+        } else if (ComponentIndex == ComponentIndexType.FPV && isliveindex == 1) {
+            ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
+            LogUtil.log(TAG, "自定义RTSP推流:" + PreferenceUtils.getInstance().getRtspUserName()
+                    + "--" + PreferenceUtils.getInstance().getRtspPort() + "--" + PreferenceUtils.getInstance().getRtspPassWord());
+
+            LiveStreamSettings.Builder streamSettingBuilder = new LiveStreamSettings.Builder();
+
+            LiveStreamSettings streamSettings = streamSettingBuilder.setLiveStreamType(LiveStreamType.RTSP)
+                    .setRtspSettings(new RtspSettings.Builder().setPassWord(PreferenceUtils.getInstance().getRtspPassWord()).
+                            setPort(Integer.parseInt(PreferenceUtils.getInstance().getRtspPort())).
+                            setUserName(PreferenceUtils.getInstance().getRtspUserName()).build()).build();
+
+            liveStreamManager.setLiveStreamSettings(streamSettings);
+
+
+            CameraType value = KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyCameraType, ComponentIndexType.PORT_1));
+
+            liveStreamManager.setCameraIndex(ComponentIndex);
+
+            liveStreamManager.setLiveStreamQuality(StreamQuality.FULL_HD);
+            liveStreamManager.setLiveVideoBitrateMode(LiveVideoBitrateMode.AUTO);
+            isliveindex = 2;
+        }
+
+
+//        if (ComponentIndex==ComponentIndexType.PORT_1&&isliveindex==2){
+//            Boolean isAircraftConnected = KeyManager.getInstance().getValue(DJIKey.create(ProductKey.KeyConnection));
+//            if (isAircraftConnected == null || !isAircraftConnected) {
+//                LogUtil.log(TAG, "飞行器未连接");
+//            } else {
+//                if (PreferenceUtils.getInstance().getRtspUserName()!=null&&
+//                        PreferenceUtils.getInstance().getRtspPort()!=null&&
+//                        PreferenceUtils.getInstance().getRtspPassWord()!=null
+//                ){
+//                    ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
+//                    LogUtil.log(TAG, "自定义RTSP推流:" + PreferenceUtils.getInstance().getRtspUserName()
+//                            +"--"+PreferenceUtils.getInstance().getRtspPort()+"--"+PreferenceUtils.getInstance().getRtspPassWord());
+//
+//                    LiveStreamSettings.Builder streamSettingBuilder = new LiveStreamSettings.Builder();
+//
+//                    LiveStreamSettings streamSettings = streamSettingBuilder.setLiveStreamType(LiveStreamType.RTSP)
+//                            .setRtspSettings(new RtspSettings.Builder().setPassWord(PreferenceUtils.getInstance().getRtspPassWord()).
+//                                    setPort(Integer.parseInt(PreferenceUtils.getInstance().getRtspPort())).
+//                                    setUserName(PreferenceUtils.getInstance().getRtspUserName()).build()).build();
+//
+//                    liveStreamManager.setLiveStreamSettings(streamSettings);
+//
+//
+//                    CameraType value = KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyCameraType, ComponentIndexType.PORT_1));
+//
+//                    liveStreamManager.setCameraIndex(ComponentIndex);
+//
+//                    liveStreamManager.setLiveStreamQuality(StreamQuality.FULL_HD);
+//                    liveStreamManager.setLiveVideoBitrateMode(LiveVideoBitrateMode.AUTO);
+//
+//                    if (!liveStreamManager.isStreaming()) {
+//                        liveStreamManager.startStream(new CommonCallbacks.CompletionCallback() {
+//                            @Override
+//                            public void onSuccess() {
+//                                startLiveFailTimes=0;
+//                                LogUtil.log(TAG, "自定义RTSP推流启动成功");
+//                                isliveindex=1;
+//                                isLiveStreamAlreadyStart=true;
+//                                sendEvent2Server("切换视频流成功",1);
+//                            }
+//
+//                            @Override
+//                            public void onFailure(@NonNull IDJIError error) {
+//                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                if (!isLiveStreamAlreadyStart){
+//                                    new Handler().postDelayed(new Runnable() {
+//                                        @Override
+//                                        public void run() {
+//                                            if (startLiveFailTimes < 10) {
+//                                                startLiveFailTimes++;
+//                                                switchptsp(ComponentIndex, message);
+//                                            }
+//                                        }
+//                                    }, 3000);
+//                                }
+//                            }
+//                        });
+//                    }else{
+//                        liveStreamManager.stopStream(new CommonCallbacks.CompletionCallback() {
+//                            @Override
+//                            public void onSuccess() {
+//                                new Handler().postDelayed(new Runnable() {
+//                                    @Override
+//                                    public void run() {
+//                                        liveStreamManager.startStream(new CommonCallbacks.CompletionCallback() {
+//                                            @Override
+//                                            public void onSuccess() {
+//                                                startLiveFailTimes=0;
+//                                                LogUtil.log(TAG, "自定义RTSP推流启动成功");
+//                                                isliveindex=1;
+//                                                sendEvent2Server("切换视频流成功",1);
+//                                                isLiveStreamAlreadyStart=true;
+//                                            }
+//
+//                                            @Override
+//                                            public void onFailure(@NonNull IDJIError error) {
+//                                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                                if (!isLiveStreamAlreadyStart){
+//                                                    new Handler().postDelayed(new Runnable() {
+//                                                        @Override
+//                                                        public void run() {
+//                                                            if (startLiveFailTimes < 10) {
+//                                                                startLiveFailTimes++;
+//                                                                switchptsp(ComponentIndex, message);
+//                                                            }
+//                                                        }
+//                                                    }, 3000);
+//                                                }
+//                                            }
+//                                        });
+//                                    }
+//                                },2000);
+//                            }
+//
+//                            @Override
+//                            public void onFailure(@NonNull IDJIError error) {
+//                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                if (!isLiveStreamAlreadyStart){
+//                                    new Handler().postDelayed(new Runnable() {
+//                                        @Override
+//                                        public void run() {
+//                                            if (startLiveFailTimes < 10) {
+//                                                startLiveFailTimes++;
+//                                                switchptsp(ComponentIndex, message);
+//                                            }
+//                                        }
+//                                    }, 3000);
+//                                }
+//                            }
+//                        });
+//                    }
+//                }else{
+//                    LogUtil.log(TAG,"RTSP配置参数有误");
+//                }
+//            }
+//
+//
+//        }else if(ComponentIndex==ComponentIndexType.FPV&&isliveindex==1){
+//            Boolean isAircraftConnected = KeyManager.getInstance().getValue(DJIKey.create(ProductKey.KeyConnection));
+//            if (isAircraftConnected == null || !isAircraftConnected) {
+//                LogUtil.log(TAG, "飞行器未连接");
+//            } else {
+//                if (PreferenceUtils.getInstance().getRtspUserName()!=null&&
+//                        PreferenceUtils.getInstance().getRtspPort()!=null&&
+//                        PreferenceUtils.getInstance().getRtspPassWord()!=null
+//                ){
+//                    ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
+//                    LogUtil.log(TAG, "自定义RTSP推流:" + PreferenceUtils.getInstance().getRtspUserName()
+//                            +"--"+PreferenceUtils.getInstance().getRtspPort()+"--"+PreferenceUtils.getInstance().getRtspPassWord());
+//
+//                    LiveStreamSettings.Builder streamSettingBuilder = new LiveStreamSettings.Builder();
+//
+//                    LiveStreamSettings streamSettings = streamSettingBuilder.setLiveStreamType(LiveStreamType.RTSP)
+//                            .setRtspSettings(new RtspSettings.Builder().setPassWord(PreferenceUtils.getInstance().getRtspPassWord()).
+//                                    setPort(Integer.parseInt(PreferenceUtils.getInstance().getRtspPort())).
+//                                    setUserName(PreferenceUtils.getInstance().getRtspUserName()).build()).build();
+//
+//                    liveStreamManager.setLiveStreamSettings(streamSettings);
+//
+//
+//                    CameraType value = KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyCameraType, ComponentIndexType.PORT_1));
+//
+//                    liveStreamManager.setCameraIndex(ComponentIndex);
+//
+//                    liveStreamManager.setLiveStreamQuality(StreamQuality.FULL_HD);
+//                    liveStreamManager.setLiveVideoBitrateMode(LiveVideoBitrateMode.AUTO);
+//
+//                    if (!liveStreamManager.isStreaming()) {
+//                        liveStreamManager.startStream(new CommonCallbacks.CompletionCallback() {
+//                            @Override
+//                            public void onSuccess() {
+//                                startLiveFailTimes=0;
+//                                LogUtil.log(TAG, "自定义RTSP推流启动成功");
+//                                isliveindex=2;
+//                                isLiveStreamAlreadyStart=true;
+//                                sendEvent2Server("切换视频流成功",1);
+//
+//                            }
+//
+//                            @Override
+//                            public void onFailure(@NonNull IDJIError error) {
+//                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                if (!isLiveStreamAlreadyStart){
+//                                    new Handler().postDelayed(new Runnable() {
+//                                        @Override
+//                                        public void run() {
+//                                            if (startLiveFailTimes < 10) {
+//                                                startLiveFailTimes++;
+//                                                switchptsp(ComponentIndex, message);
+//                                            }
+//                                        }
+//                                    }, 3000);
+//                                }
+//                            }
+//                        });
+//                    }else{
+//                        liveStreamManager.stopStream(new CommonCallbacks.CompletionCallback() {
+//                            @Override
+//                            public void onSuccess() {
+//                                new Handler().postDelayed(new Runnable() {
+//                                    @Override
+//                                    public void run() {
+//                                        liveStreamManager.startStream(new CommonCallbacks.CompletionCallback() {
+//                                            @Override
+//                                            public void onSuccess() {
+//                                                startLiveFailTimes=0;
+//                                                LogUtil.log(TAG, "自定义RTSP推流启动成功");
+//                                                isLiveStreamAlreadyStart=true;
+//                                                isliveindex=2;
+//                                                sendEvent2Server("切换视频流成功",1);
+//                                            }
+//
+//                                            @Override
+//                                            public void onFailure(@NonNull IDJIError error) {
+//                                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                                if (!isLiveStreamAlreadyStart){
+//                                                    new Handler().postDelayed(new Runnable() {
+//                                                        @Override
+//                                                        public void run() {
+//                                                            if (startLiveFailTimes < 10) {
+//                                                                startLiveFailTimes++;
+//                                                                switchptsp(ComponentIndex, message);
+//                                                            }
+//                                                        }
+//                                                    }, 3000);
+//                                                }
+//                                            }
+//                                        });
+//                                    }
+//                                },2000);
+//                            }
+//                            @Override
+//                            public void onFailure(@NonNull IDJIError error) {
+//                                LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
+//                                if (!isLiveStreamAlreadyStart){
+//                                    new Handler().postDelayed(new Runnable() {
+//                                        @Override
+//                                        public void run() {
+//                                            if (startLiveFailTimes < 10) {
+//                                                startLiveFailTimes++;
+//                                                switchptsp(ComponentIndex, message);
+//                                            }
+//                                        }
+//                                    }, 3000);
+//                                }
+//                            }
+//                        });
+//                    }
+//                }else{
+//                    LogUtil.log(TAG,"RTSP配置参数有误");
+//                }
+//            }
+//
+//        }
+
+    }
+
+
     public void startLiveWithRTSP() {
         Boolean isAircraftConnected = KeyManager.getInstance().getValue(DJIKey.create(ProductKey.KeyConnection));
         if (isAircraftConnected == null || !isAircraftConnected) {
             LogUtil.log(TAG, "飞行器未连接");
         } else {
-            if (PreferenceUtils.getInstance().getRtspUserName()!=null&&
-                    PreferenceUtils.getInstance().getRtspPort()!=null&&
-            PreferenceUtils.getInstance().getRtspPassWord()!=null
-            ){
+            if (PreferenceUtils.getInstance().getRtspUserName() != null &&
+                    PreferenceUtils.getInstance().getRtspPort() != null &&
+                    PreferenceUtils.getInstance().getRtspPassWord() != null
+            ) {
                 ILiveStreamManager liveStreamManager = MediaDataCenter.getInstance().getLiveStreamManager();
                 LogUtil.log(TAG, "自定义RTSP推流:" + PreferenceUtils.getInstance().getRtspUserName()
-                        +"--"+PreferenceUtils.getInstance().getRtspPort()+"--"+PreferenceUtils.getInstance().getRtspPassWord());
+                        + "--" + PreferenceUtils.getInstance().getRtspPort() + "--" + PreferenceUtils.getInstance().getRtspPassWord());
+
                 LiveStreamSettings.Builder streamSettingBuilder = new LiveStreamSettings.Builder();
 
                 LiveStreamSettings streamSettings = streamSettingBuilder.setLiveStreamType(LiveStreamType.RTSP)
@@ -168,32 +462,34 @@ sendMsg2Server(message);
                                 setPort(Integer.parseInt(PreferenceUtils.getInstance().getRtspPort())).
                                 setUserName(PreferenceUtils.getInstance().getRtspUserName()).build()).build();
 
-
-
-
                 liveStreamManager.setLiveStreamSettings(streamSettings);
+
+
                 CameraType value = KeyManager.getInstance().getValue(KeyTools.createKey(CameraKey.KeyCameraType, ComponentIndexType.PORT_1));
+
 //                if (value != null && (value == CameraType.ZENMUSE_H20T ||
 //                        value == CameraType.ZENMUSE_H20N || value == CameraType.ZENMUSE_H20)
 //                        || value == CameraType.ZENMUSE_H30 || value == CameraType.ZENMUSE_H30T) {
-                    liveStreamManager.setCameraIndex(ComponentIndexType.PORT_1);
+                liveStreamManager.setCameraIndex(ComponentIndexType.PORT_1);
 //                } else {
 //                    liveStreamManager.setCameraIndex(ComponentIndexType.FPV);
 //                }
                 liveStreamManager.setLiveStreamQuality(StreamQuality.FULL_HD);
                 liveStreamManager.setLiveVideoBitrateMode(LiveVideoBitrateMode.AUTO);
+
                 if (!liveStreamManager.isStreaming()) {
                     liveStreamManager.startStream(new CommonCallbacks.CompletionCallback() {
                         @Override
                         public void onSuccess() {
                             LogUtil.log(TAG, "自定义RTSP推流启动成功");
-                            isLiveStreamAlreadyStart=true;
+                            isliveindex = 1;
+                            isLiveStreamAlreadyStart = true;
                         }
 
                         @Override
                         public void onFailure(@NonNull IDJIError error) {
-                            LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
-                            if (!isLiveStreamAlreadyStart){
+                            LogUtil.log(TAG, "第" + startLiveFailTimes + "次开始RTSP推流失败:" + new Gson().toJson(error));
+                            if (!isLiveStreamAlreadyStart) {
                                 new Handler().postDelayed(new Runnable() {
                                     @Override
                                     public void run() {
@@ -206,7 +502,7 @@ sendMsg2Server(message);
                             }
                         }
                     });
-                }else{
+                } else {
                     liveStreamManager.stopStream(new CommonCallbacks.CompletionCallback() {
                         @Override
                         public void onSuccess() {
@@ -217,13 +513,14 @@ sendMsg2Server(message);
                                         @Override
                                         public void onSuccess() {
                                             LogUtil.log(TAG, "自定义RTSP推流启动成功");
-                                            isLiveStreamAlreadyStart=true;
+                                            isliveindex = 1;
+                                            isLiveStreamAlreadyStart = true;
                                         }
 
                                         @Override
                                         public void onFailure(@NonNull IDJIError error) {
-                                            LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
-                                            if (!isLiveStreamAlreadyStart){
+                                            LogUtil.log(TAG, "第" + startLiveFailTimes + "次开始RTSP推流失败:" + new Gson().toJson(error));
+                                            if (!isLiveStreamAlreadyStart) {
                                                 new Handler().postDelayed(new Runnable() {
                                                     @Override
                                                     public void run() {
@@ -237,13 +534,13 @@ sendMsg2Server(message);
                                         }
                                     });
                                 }
-                            },2000);
+                            }, 2000);
                         }
 
                         @Override
                         public void onFailure(@NonNull IDJIError error) {
-                            LogUtil.log(TAG, "第"+startLiveFailTimes+"次开始RTSP推流失败:"+new Gson().toJson(error));
-                            if (!isLiveStreamAlreadyStart){
+                            LogUtil.log(TAG, "第" + startLiveFailTimes + "次开始RTSP推流失败:" + new Gson().toJson(error));
+                            if (!isLiveStreamAlreadyStart) {
                                 new Handler().postDelayed(new Runnable() {
                                     @Override
                                     public void run() {
@@ -257,8 +554,8 @@ sendMsg2Server(message);
                         }
                     });
                 }
-            }else{
-                LogUtil.log(TAG,"RTSP配置参数有误");
+            } else {
+                LogUtil.log(TAG, "RTSP配置参数有误");
             }
         }
     }
diff --git a/app/src/main/java/com/aros/apron/manager/TakeOffToPointManager.java b/app/src/main/java/com/aros/apron/manager/TakeOffToPointManager.java
index 27a43f75..1d4d9faa 100644
--- a/app/src/main/java/com/aros/apron/manager/TakeOffToPointManager.java
+++ b/app/src/main/java/com/aros/apron/manager/TakeOffToPointManager.java
@@ -177,9 +177,7 @@ public class TakeOffToPointManager extends BaseManager {
         boolean isGpsQualityValid = (quality == 4 || quality == 5 || quality == 10);
         boolean GPSSatelliteCountValid=GPSSatelliteCount>15;
 
-
         LogUtil.log(TAG,"isMissionStateValid"+isMissionStateValid+"isPlaneMessageValid"+isPlaneMessageValid+"isGpsQualityValid"+isGpsQualityValid);
-
 //        if (isMissionStateValid && isPlaneMessageValid && isGpsQualityValid) {
         if (GPSSatelliteCountValid||isGpsQualityValid) {
             //5.生成航线
