Bladeren bron

1、增加无人机轨迹上传及轨迹拉取接口

不会爬树的猴 1 jaar geleden
bovenliggende
commit
c36933f9a2

+ 5 - 0
app/src/main/java/com/cr/common/CrFlightControlInfo.kt

@@ -62,6 +62,9 @@ data class CrFlightControlInfo(var isConnection: Boolean = false) :CrDataCommon(
     var yaw:Double = 0.0
     var roll:Double = 0.0
 
+    // define: 2023/9/26 飞行器电调
+    var motorsIsOn = false
+
 
 
     /**
@@ -104,5 +107,7 @@ data class CrFlightControlInfo(var isConnection: Boolean = false) :CrDataCommon(
         pitch = 0.0
         yaw = 0.0
         roll = 0.0
+        // todo: 2023/9/26 电调
+        motorsIsOn = false
     }
 }

+ 2 - 2
app/src/main/java/com/cr/pages/FragmentAirLineManager.kt

@@ -104,7 +104,7 @@ class FragmentAirLineManager : CrNavigationFragment() ,View.OnClickListener{
                 showConfirm("确定上传所有待上传航点吗?", arrayOf("上传","取消"),object:ICompletion<String>{
                     // todo: 2023/9/19 回调
                     override fun onCompletion(completion: CompletionModel<String>) {
-                        if(completion.isSuccess == true){
+                        if(completion.isSuccess){
                             CrInterfaceManager.getInstance().uploadAirlineWaypoint(waitWaypointList,object:ICompletion<List<AircraftWaypointModel>>{
                                 // todo: 2023/9/20 执行成功回调
                                 override fun onCompletion(completion: CompletionModel<List<AircraftWaypointModel>>) {
@@ -127,7 +127,7 @@ class FragmentAirLineManager : CrNavigationFragment() ,View.OnClickListener{
                 showConfirm("删除后无法恢复,确定要删除吗?", arrayOf("删除","取消"),object:ICompletion<String>{
                     // todo: 2023/9/19 回调
                     override fun onCompletion(completion: CompletionModel<String>) {
-                        if(completion.isSuccess == true){
+                        if(completion.isSuccess){
                             deleteAllWaypoint()
                         }
                     }

+ 4 - 2
app/src/main/java/com/cr/pages/FragmentInformationBar.kt

@@ -34,7 +34,7 @@ class FragmentInformationBar :CrFragment(){
     // todo: 2023/9/19 变量定义
     private var oldLongitude:Double = 0.0  // define: 2023/9/19 前一经度
     private var oldLatitude:Double = 0.0  // define: 2023/9/19 前一纬度
-    private val IMPOSE_DIS:Double = 100.0  // define: 2023/9/19 限制距离
+    private val IMPOSE_DIS:Double = 50.0  // define: 2023/9/19 限制距离
     private var countSave:Long = 0  // define: 2023/9/19 存储计数
     private var countUpdate:Long = 0  // define: 2023/9/19 上传计数
 
@@ -82,7 +82,7 @@ class FragmentInformationBar :CrFragment(){
         mainHandler.post {
             flightControlVm.flightControlInfo.observe(requireActivity()){
                 it?.let {
-                    calculateAndSave(it.longitude,it.latitude,it.altitude,it.yaw)
+                    calculateAndSave(it.longitude,it.latitude,it.altitude + it.takeoffAltitude,it.yaw)
                 }
             }
         }
@@ -98,6 +98,8 @@ class FragmentInformationBar :CrFragment(){
      * @param angle Double 角度
      */
     private fun calculateAndSave(longitude:Double,latitude:Double,altitude:Double,angle:Double){
+        // todo: 2023/9/26 0 不存储
+        if(longitude < 10 || latitude < 10) return
         // todo: 2023/9/19 计算距离
         var dis = CrJTMManager.calculateDistance(longitude,latitude,oldLongitude,oldLatitude)
         if(dis>= IMPOSE_DIS){

+ 1 - 2
app/src/main/java/com/cr/pages/FragmentMap.kt

@@ -1933,8 +1933,7 @@ class FragmentMap : CrAnimationFragment() {
      */
     private fun updateAirplaneHomeLocation(obj: CrFlightControlInfo) {
         if (obj.isUpdateHomeLocation) {
-            CrUtil.print("返航点已刷新,请留意返航位置!")
-            CrAudioUtil.getInstance().play("返航点已刷新,请留意返航位置!")
+            CrAudioUtil.getInstance().play(CrUnitManager.getStringFromResource(R.string.audio_go_home_reset))
             builderAirplaneHomeLocation?.setXY(obj.homeLongitude, obj.homeLatitude)
             graAirplaneHomeLocation?.geometry = builderAirplaneHomeLocation!!.toGeometry()
             // todo: 2023/8/17 如果返航点已刷新 则认为是更换了起飞位置 则重新初始化航线

+ 6 - 6
app/src/main/java/com/cr/pages/FragmentSimulator.kt

@@ -154,7 +154,7 @@ class FragmentSimulator:CrNavigationFragment(), View.OnClickListener {
             R.id.btn_start->{
                 // todo: 2023/8/15 启动模拟器
                 if(SimulatorManager.getInstance().isSimulatorEnabled){
-                    showInformation("模拟器已开启")
+                    showToast("模拟飞行已启动")
                 }else{
                     var longitude = txtLongitude?.getContent()?.toDouble()?:0.0
                     var latitude = txtLatitude?.getContent()?.toDouble()?:0.0
@@ -163,13 +163,13 @@ class FragmentSimulator:CrNavigationFragment(), View.OnClickListener {
                     SimulatorManager.getInstance().enableSimulator(settings,object:CommonCallbacks.CompletionCallback{
                         // todo: 2023/8/15 成功
                         override fun onSuccess() {
-                            showInformation("模拟器已开启")
+                            showToast("模拟飞行启动")
                         }
 
                         // todo: 2023/8/15 失败
                         override fun onFailure(error: IDJIError) {
                             CrUtil.print(error.toString())
-                            showError("模拟器开启失败:${error.description()}")
+                            showError("模拟飞行启动失败:${error.description()}")
                         }
                     })
                 }
@@ -177,18 +177,18 @@ class FragmentSimulator:CrNavigationFragment(), View.OnClickListener {
             R.id.btn_end->{
                 // todo: 2023/8/15 关闭模拟器
                 if(!SimulatorManager.getInstance().isSimulatorEnabled){
-                    showWarning("模拟尚未开启")
+                    showWarning("模拟飞行尚未开启")
                 }else{
                     SimulatorManager.getInstance().disableSimulator(object:CommonCallbacks.CompletionCallback{
                         // todo: 2023/8/15 成功
                         override fun onSuccess() {
-                            showInformation("模拟器已停止")
+                            showToast("模拟飞行停止")
                             updateInfo(null)
                         }
 
                         // todo: 2023/8/15 失败
                         override fun onFailure(error: IDJIError) {
-                            showError("模拟停止失败:${error.description()}")
+                            showError("模拟飞行停止失败:${error.description()}")
                         }
                     })
                 }

+ 6 - 4
app/src/main/java/com/cr/pages/FragmentTopInfo.kt

@@ -7,17 +7,15 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
-import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.LifecycleOwner
-import com.cr.cruav.CrApplication
+import com.cr.common.CrAudioUtil
+import com.cr.common.CrUnitManager
 import com.cr.cruav.R
 import com.cr.data.CrUtil
 import com.cr.data.DEFAULT_STR
 import com.cr.data.Level
 import com.cr.viewmodel.*
 import dji.v5.utils.common.ContextUtil
-import kotlinx.android.synthetic.main.frag_top_info.*
 
 /**
  * 操作系统:MAC系统
@@ -214,6 +212,10 @@ open class FragmentTopInfo : CrFragment() {
                     if(!it.isConnection){
                         linkVm.reset()
                     }
+                    // todo: 2023/9/26 如果点机启动 播放语音
+                    if(it.motorsIsOn){
+                        //CrAudioUtil.getInstance().play(CrUnitManager.getStringFromResource(R.string.audio_motors_on))
+                    }
                 }
             }
         }

+ 13 - 2
app/src/main/java/com/cr/viewmodel/CrFlightControlVM.kt

@@ -1,6 +1,7 @@
 package com.cr.viewmodel
 
 import androidx.lifecycle.MutableLiveData
+import com.cr.common.CrAudioUtil
 import com.cr.common.CrFlightControlInfo
 import com.cr.common.CrJTMManager
 import com.cr.common.CrUnitManager
@@ -214,8 +215,10 @@ class CrFlightControlVM : CrViewModel() {
         // todo: 2023/8/15 起飞海拔高度
         FlightControllerKey.KeyTakeoffLocationAltitude.create().listen(this) {
             it?.let {
-                flightControlInfo.value?.takeoffAltitude = it
-                flightControlInfo.value?.takeoffAltitudeStr = String.format("%.1f米", it)
+                var altitude = 95.0
+                if (it > 3) altitude = it
+                flightControlInfo.value?.takeoffAltitude = altitude
+                flightControlInfo.value?.takeoffAltitudeStr = String.format("%.1f米", altitude)
                 refresh(flightControlInfo)
             }
         }
@@ -233,6 +236,14 @@ class CrFlightControlVM : CrViewModel() {
                 flightControlInfo.value?.yaw = it.yaw
                 flightControlInfo.value?.roll = it.roll
                 flightControlInfo.value?.pitch = it.pitch
+                refresh(flightControlInfo)
+            }
+        }
+        // todo: 2023/9/26 飞行器电调
+        FlightControllerKey.KeyAreMotorsOn.create().listen(this){
+            it?.let {
+                flightControlInfo.value?.motorsIsOn = it
+                refresh(flightControlInfo)
             }
         }
     }

+ 4 - 0
app/src/main/res/values/strings.xml

@@ -261,4 +261,8 @@
     <string name="ico_add">&#xeb8c;</string>
     <string name="ico_set">&#xeb90;</string>
 
+    <!--语音-->
+    <string name="audio_go_home_reset">返航点已刷新,请留意返航位置</string>
+    <string name="audio_motors_on">飞机已启动</string>
+
 </resources>