diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
index 7ef2752..5cec695 100644
--- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
@@ -763,7 +763,7 @@
}
/**
- * 视频抓取,抓取15s的视频
+ * TODO 视频抓取,抓取10s的视频。带宽不够,暂时注掉
* */
private fun recordVideo() {
if (!isRecordingVideo) {
@@ -877,7 +877,7 @@
if (dataModel!!.methane >= gasAlarmRule) {
isAlarm = "1"
- recordVideo()
+// recordVideo()
captureImage(true)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
index 7ef2752..5cec695 100644
--- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
@@ -763,7 +763,7 @@
}
/**
- * 视频抓取,抓取15s的视频
+ * TODO 视频抓取,抓取10s的视频。带宽不够,暂时注掉
* */
private fun recordVideo() {
if (!isRecordingVideo) {
@@ -877,7 +877,7 @@
if (dataModel!!.methane >= gasAlarmRule) {
isAlarm = "1"
- recordVideo()
+// recordVideo()
captureImage(true)
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index b4506a5..02645dd 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -63,8 +63,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -77,8 +77,8 @@
taskId,
deviceId,
alarmContent,
- alarmLongitude,
alarmLatitude,
+ alarmLongitude,
alarmTime,
alarmThresh,
alarmPicture,
@@ -130,8 +130,8 @@
dataModel.alarmPicture = ""
dataModel.alarmThresh = SaveKeyValues.getValue(
LocaleConstant.ALARM_RULE, 1000
- ) as Int
- dataModel.alarmValue = 0
+ ) as String
+ dataModel.alarmValue = "0"
dataModel.alarmVideo = ""
detailModel.data = dataModel
} else {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
index 7ef2752..5cec695 100644
--- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
@@ -763,7 +763,7 @@
}
/**
- * 视频抓取,抓取15s的视频
+ * TODO 视频抓取,抓取10s的视频。带宽不够,暂时注掉
* */
private fun recordVideo() {
if (!isRecordingVideo) {
@@ -877,7 +877,7 @@
if (dataModel!!.methane >= gasAlarmRule) {
isAlarm = "1"
- recordVideo()
+// recordVideo()
captureImage(true)
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index b4506a5..02645dd 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -63,8 +63,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -77,8 +77,8 @@
taskId,
deviceId,
alarmContent,
- alarmLongitude,
alarmLatitude,
+ alarmLongitude,
alarmTime,
alarmThresh,
alarmPicture,
@@ -130,8 +130,8 @@
dataModel.alarmPicture = ""
dataModel.alarmThresh = SaveKeyValues.getValue(
LocaleConstant.ALARM_RULE, 1000
- ) as Int
- dataModel.alarmValue = 0
+ ) as String
+ dataModel.alarmValue = "0"
dataModel.alarmVideo = ""
detailModel.data = dataModel
} else {
diff --git a/app/src/main/res/layout/activity_ai_alarm_detail.xml b/app/src/main/res/layout/activity_ai_alarm_detail.xml
new file mode 100644
index 0000000..5a3b318
--- /dev/null
+++ b/app/src/main/res/layout/activity_ai_alarm_detail.xml
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
index 7ef2752..5cec695 100644
--- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
@@ -763,7 +763,7 @@
}
/**
- * 视频抓取,抓取15s的视频
+ * TODO 视频抓取,抓取10s的视频。带宽不够,暂时注掉
* */
private fun recordVideo() {
if (!isRecordingVideo) {
@@ -877,7 +877,7 @@
if (dataModel!!.methane >= gasAlarmRule) {
isAlarm = "1"
- recordVideo()
+// recordVideo()
captureImage(true)
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index b4506a5..02645dd 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -63,8 +63,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -77,8 +77,8 @@
taskId,
deviceId,
alarmContent,
- alarmLongitude,
alarmLatitude,
+ alarmLongitude,
alarmTime,
alarmThresh,
alarmPicture,
@@ -130,8 +130,8 @@
dataModel.alarmPicture = ""
dataModel.alarmThresh = SaveKeyValues.getValue(
LocaleConstant.ALARM_RULE, 1000
- ) as Int
- dataModel.alarmValue = 0
+ ) as String
+ dataModel.alarmValue = "0"
dataModel.alarmVideo = ""
detailModel.data = dataModel
} else {
diff --git a/app/src/main/res/layout/activity_ai_alarm_detail.xml b/app/src/main/res/layout/activity_ai_alarm_detail.xml
new file mode 100644
index 0000000..5a3b318
--- /dev/null
+++ b/app/src/main/res/layout/activity_ai_alarm_detail.xml
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index d707aca..48e151a 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -9,7 +9,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_10"
android:layout_weight="1"
app:cardCornerRadius="@dimen/dp_10"
@@ -200,7 +200,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_10"
android:layout_weight="1"
android:orientation="vertical">
@@ -246,55 +246,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6ea5faa..93f7fd3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,12 @@
android:theme="@style/ActivityNoTitleBar"
android:screenOrientation="landscape" />
+
+
diff --git a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
index f5fcd37..2b59bef 100644
--- a/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/br/ktd/extensions/LineChart.kt
@@ -83,7 +83,7 @@
//设置x轴
val xAxis: XAxis = this.xAxis
xAxis.textSize = 10f
- xAxis.labelCount = labelCount //x轴标签数量
+ xAxis.labelCount = labelCount / 4 //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
xAxis.setDrawAxisLine(true) //是否绘制轴线
xAxis.setDrawGridLines(true) //设置x轴上每个点对应的线
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
index 1986aa8..7fd3b72 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt
@@ -176,6 +176,11 @@
alarmAdapter.setOnItemCheckedListener(object :
AlarmAdapter.OnItemClickedListener {
override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) {
+// if (item.alarmType == "1") {
+// requireContext().navigatePageTo(item.id)
+// } else {
+// requireContext().navigatePageTo(item.id)
+// }
requireContext().navigatePageTo(item.id)
}
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
index 9a226a9..1bf78f9 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt
@@ -95,7 +95,7 @@
}
/***任务趋势*************************************************************************/
- taskViewModel.getTaskTrend("", "", "")
+ taskViewModel.getTaskTrend("", "", "month")
taskViewModel.taskTrendModel.observe(this) {
if (it.code == 200) {
val xAxisLabels: MutableList = ArrayList()
diff --git a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
index 02dde76..870d1e1 100644
--- a/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
+++ b/app/src/main/java/com/casic/br/ktd/model/AlarmDetailModel.java
@@ -37,10 +37,10 @@
private String alarmLongitude;
private String alarmPicture;
private String alarmStatus;
- private Integer alarmThresh;
+ private String alarmThresh;
private String alarmTime;
private String alarmType;
- private Integer alarmValue;
+ private String alarmValue;
private String alarmVideo;
private String cancelReason;
private String cancelResult;
@@ -102,11 +102,11 @@
this.alarmStatus = alarmStatus;
}
- public Integer getAlarmThresh() {
+ public String getAlarmThresh() {
return alarmThresh;
}
- public void setAlarmThresh(Integer alarmThresh) {
+ public void setAlarmThresh(String alarmThresh) {
this.alarmThresh = alarmThresh;
}
@@ -126,11 +126,11 @@
this.alarmType = alarmType;
}
- public Integer getAlarmValue() {
+ public String getAlarmValue() {
return alarmValue;
}
- public void setAlarmValue(Integer alarmValue) {
+ public void setAlarmValue(String alarmValue) {
this.alarmValue = alarmValue;
}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index 4dcfbd0..66d25b6 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -304,8 +304,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -318,8 +318,8 @@
param.addProperty("taskId", taskId)
param.addProperty("deviceId", deviceId)
param.addProperty("alarmContent", alarmContent)
- param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmLatitude", alarmLatitude)
+ param.addProperty("alarmLongitude", alarmLongitude)
param.addProperty("alarmTime", alarmTime)
param.addProperty("alarmThresh", alarmThresh)
param.addProperty("alarmPicture", alarmPicture)
diff --git a/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
new file mode 100644
index 0000000..1f402ce
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/AiAlarmDetailActivity.kt
@@ -0,0 +1,181 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityAiAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class AiAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this).load(R.mipmap.empty).into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true).setRotateViewAuto(false).setLockLand(false)
+ .setAutoFullWithSize(true).setShowFullAnimation(false).setNeedLockFull(true)
+ .setUrl(videoPath).setCacheWithPlay(false).setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityAiAlarmDetailBinding {
+ return ActivityAiAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this, newConfig, orientationUtils, true, true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
index 85dae02..9d49d2a 100644
--- a/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/AlarmDetailActivity.kt
@@ -1,9 +1,6 @@
package com.casic.br.ktd.view
-import android.content.res.Configuration
import android.os.Bundle
-import android.util.Log
-import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
@@ -21,18 +18,14 @@
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.vm.LoadState
-import com.shuyu.gsyvideoplayer.GSYVideoManager
-import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
-import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+/**
+ * 不区分AI、Gas的报警详情
+ * */
class AlarmDetailActivity : KotlinBaseActivity() {
private val kTag = "AlarmDetailActivity"
private lateinit var alarmViewModel: AlarmViewModel
- private lateinit var orientationUtils: OrientationUtils
- private var isPlay = false
- private var isPause = false
override fun initEvent() {
binding.returnButton.setOnClickListener { finish() }
@@ -42,10 +35,6 @@
PageNavigationManager.addActivity(this)
val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- orientationUtils = OrientationUtils(this, binding.videoPlayerView)
- //初始化不打开外部的旋转
- orientationUtils.isEnable = false
-
alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
alarmViewModel.getAlarmDetail(alarmId)
alarmViewModel.alarmDetail.observe(this) {
@@ -92,51 +81,6 @@
.load(model.alarmPicture.combineImagePath())
.into(binding.alarmImageView)
}
-
- //视频
- if (model.alarmVideo.isNullOrEmpty()) {
- binding.emptyImageView.visibility = View.VISIBLE
- binding.videoPlayerView.visibility = View.GONE
- Glide.with(this)
- .load(R.mipmap.empty)
- .into(binding.emptyImageView)
- } else {
- binding.emptyImageView.visibility = View.GONE
- binding.videoPlayerView.visibility = View.VISIBLE
-
- val videoPath = model.alarmVideo.combineImagePath()
- Log.d(kTag, "initOnCreate => $videoPath")
- val videoOption = GSYVideoOptionBuilder()
- videoOption.setIsTouchWiget(true)
- .setRotateViewAuto(false)
- .setLockLand(false)
- .setAutoFullWithSize(true)
- .setShowFullAnimation(false)
- .setNeedLockFull(true)
- .setUrl(videoPath)
- .setCacheWithPlay(false)
- .setVideoTitle(model.taskName)
- .setVideoAllCallBack(object : GSYSampleCallBack() {
- override fun onPrepared(url: String, vararg objects: Any) {
- super.onPrepared(url, *objects)
- //开始播放了才能旋转和全屏
- orientationUtils.isEnable = true
- isPlay = true
- }
-
- override fun onQuitFullscreen(url: String, vararg objects: Any) {
- super.onQuitFullscreen(url, *objects)
- orientationUtils.backToProtVideo()
- }
- }).setLockClickListener { _, lock ->
- orientationUtils.isEnable = !lock
- }.build(binding.videoPlayerView)
- binding.videoPlayerView.fullscreenButton.setOnClickListener {
- //直接横屏
- orientationUtils.resolveByClick()
- binding.videoPlayerView.startWindowFullscreen(this, true, true)
- }
- }
}
}
}
@@ -161,46 +105,4 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
}
-
- override fun onBackPressed() {
- orientationUtils.backToProtVideo()
- if (GSYVideoManager.backFromWindowFull(this)) {
- return
- }
- super.onBackPressed()
- }
-
- override fun onPause() {
- binding.videoPlayerView.currentPlayer.onVideoPause()
- super.onPause()
- isPause = true
- }
-
- override fun onResume() {
- binding.videoPlayerView.currentPlayer.onVideoResume(false)
- super.onResume()
- isPause = false
- }
-
- override fun onDestroy() {
- if (isPlay) {
- binding.videoPlayerView.currentPlayer.release()
- }
- orientationUtils.releaseListener()
- super.onDestroy()
- }
-
- override fun onConfigurationChanged(newConfig: Configuration) {
- super.onConfigurationChanged(newConfig)
- //如果旋转了就全屏
- if (isPlay && !isPause) {
- binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
- )
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
new file mode 100644
index 0000000..832ccf6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/GasAlarmDetailActivity.kt
@@ -0,0 +1,206 @@
+package com.casic.br.ktd.view
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.CoordinateConverter
+import com.amap.api.maps.model.LatLng
+import com.bumptech.glide.Glide
+import com.casic.br.ktd.R
+import com.casic.br.ktd.databinding.ActivityGasAlarmDetailBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.extensions.toChineseAddress
+import com.casic.br.ktd.listener.OnGeocodeSearchListener
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.PageNavigationManager
+import com.pengxh.kt.lite.vm.LoadState
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils
+
+class GasAlarmDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "AlarmDetailActivity"
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var orientationUtils: OrientationUtils
+ private var isPlay = false
+ private var isPause = false
+
+ override fun initEvent() {
+ binding.returnButton.setOnClickListener { finish() }
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ PageNavigationManager.addActivity(this)
+ val alarmId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ orientationUtils = OrientationUtils(this, binding.videoPlayerView)
+ //初始化不打开外部的旋转
+ orientationUtils.isEnable = false
+
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ alarmViewModel.getAlarmDetail(alarmId)
+ alarmViewModel.alarmDetail.observe(this) {
+ if (it.code == 200) {
+ val model = it.data
+
+ binding.alarmCodeView.text = model.alarmCode
+ binding.alarmTimeView.text = model.alarmTime
+ binding.concentrationView.text = "${model.alarmValue}ppm·m"
+ binding.caseThresholdView.text = "${model.alarmThresh}ppm·m"
+ val longitude = model.alarmLongitude
+ val latitude = model.alarmLatitude
+ if (!longitude.isNullOrBlank() && !latitude.isNullOrBlank()) {
+ binding.latLngView.text = "$longitude,$latitude"
+ if (CoordinateConverter.isAMapDataAvailable(
+ latitude.toDouble(), longitude.toDouble()
+ )
+ ) {
+ LatLng(latitude.toDouble(), longitude.toDouble()).toChineseAddress(object :
+ OnGeocodeSearchListener {
+ override fun onRegionCodeSearched(address: String) {
+ binding.locationView.text = address
+ }
+ })
+ } else {
+ binding.locationView.text = "未知"
+ }
+ }
+ binding.taskCodeView.text = model.taskCode
+ binding.taskNameView.text = model.taskName
+ binding.carNumberView.text = model.carPlate
+ binding.deviceModelView.text = model.deviceModel
+ binding.alarmStateView.text = model.alarmStatus
+ binding.handleTimeView.text = model.cancelTime
+ binding.reasonView.text = model.cancelReason
+
+ //图片
+ if (model.alarmPicture.isNullOrEmpty()) {
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.alarmImageView)
+ } else {
+ Glide.with(this)
+ .load(model.alarmPicture.combineImagePath())
+ .into(binding.alarmImageView)
+ }
+
+ //视频
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.emptyImageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+ Glide.with(this)
+ .load(R.mipmap.empty)
+ .into(binding.emptyImageView)
+ } else {
+ binding.emptyImageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.taskName)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityGasAlarmDetailBinding {
+ return ActivityGasAlarmDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ override fun onBackPressed() {
+ orientationUtils.backToProtVideo()
+ if (GSYVideoManager.backFromWindowFull(this)) {
+ return
+ }
+ super.onBackPressed()
+ }
+
+ override fun onPause() {
+ binding.videoPlayerView.currentPlayer.onVideoPause()
+ super.onPause()
+ isPause = true
+ }
+
+ override fun onResume() {
+ binding.videoPlayerView.currentPlayer.onVideoResume(false)
+ super.onResume()
+ isPause = false
+ }
+
+ override fun onDestroy() {
+ if (isPlay) {
+ binding.videoPlayerView.currentPlayer.release()
+ }
+ orientationUtils.releaseListener()
+ super.onDestroy()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ //如果旋转了就全屏
+ if (isPlay && !isPause) {
+ binding.videoPlayerView.onConfigurationChanged(
+ this,
+ newConfig,
+ orientationUtils,
+ true,
+ true
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
index 7ef2752..5cec695 100644
--- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt
@@ -763,7 +763,7 @@
}
/**
- * 视频抓取,抓取15s的视频
+ * TODO 视频抓取,抓取10s的视频。带宽不够,暂时注掉
* */
private fun recordVideo() {
if (!isRecordingVideo) {
@@ -877,7 +877,7 @@
if (dataModel!!.methane >= gasAlarmRule) {
isAlarm = "1"
- recordVideo()
+// recordVideo()
captureImage(true)
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index b4506a5..02645dd 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -63,8 +63,8 @@
taskId: String,
deviceId: String,
alarmContent: String,
- alarmLongitude: String,
alarmLatitude: String,
+ alarmLongitude: String,
alarmTime: String,
alarmThresh: String,
alarmPicture: String,
@@ -77,8 +77,8 @@
taskId,
deviceId,
alarmContent,
- alarmLongitude,
alarmLatitude,
+ alarmLongitude,
alarmTime,
alarmThresh,
alarmPicture,
@@ -130,8 +130,8 @@
dataModel.alarmPicture = ""
dataModel.alarmThresh = SaveKeyValues.getValue(
LocaleConstant.ALARM_RULE, 1000
- ) as Int
- dataModel.alarmValue = 0
+ ) as String
+ dataModel.alarmValue = "0"
dataModel.alarmVideo = ""
detailModel.data = dataModel
} else {
diff --git a/app/src/main/res/layout/activity_ai_alarm_detail.xml b/app/src/main/res/layout/activity_ai_alarm_detail.xml
new file mode 100644
index 0000000..5a3b318
--- /dev/null
+++ b/app/src/main/res/layout/activity_ai_alarm_detail.xml
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index d707aca..48e151a 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -9,7 +9,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_10"
android:layout_weight="1"
app:cardCornerRadius="@dimen/dp_10"
@@ -200,7 +200,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/dp_10"
- android:layout_marginTop="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_10"
android:layout_weight="1"
android:orientation="vertical">
@@ -246,55 +246,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_gas_alarm_detail.xml b/app/src/main/res/layout/activity_gas_alarm_detail.xml
new file mode 100644
index 0000000..d707aca
--- /dev/null
+++ b/app/src/main/res/layout/activity_gas_alarm_detail.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file