diff --git a/.gitignore b/.gitignore index 1c1a7b7..7430070 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /.idea/libraries /.idea/misc.xml /.idea/modules.xml +/.idea/modules +/.idea/shelf /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml diff --git a/.gitignore b/.gitignore index 1c1a7b7..7430070 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /.idea/libraries /.idea/misc.xml /.idea/modules.xml +/.idea/modules +/.idea/shelf /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index c2114ce..0f81928 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -14,6 +14,7 @@ const val PERMISSIONS_CODE = 999 const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val MAX_DISTANCE = 5.5f //表盘最大显示距离 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/.gitignore b/.gitignore index 1c1a7b7..7430070 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /.idea/libraries /.idea/misc.xml /.idea/modules.xml +/.idea/modules +/.idea/shelf /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index c2114ce..0f81928 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -14,6 +14,7 @@ const val PERMISSIONS_CODE = 999 const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val MAX_DISTANCE = 5.5f //表盘最大显示距离 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 7d63f41..b4f3eb9 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1729,6 +1729,7 @@ } } else { "标识器未安装,安装成功后才可读取埋深!".show(context) + initTimer() } } @@ -1746,45 +1747,56 @@ locationHub.getCurrentLocation(false, object : OnGetLocationListener { override fun onAMapLocationGet(location: AMapLocation?) { location?.apply { - val dataPoints = ArrayList() - DataBaseManager.get.loadTaskLabels().forEach { - val angle = calculateAngle( - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - //单位:米 - val distance = AMapUtils.calculateLineDistance( - LatLng(latitude, longitude), - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - if (distance <= 5.5) { - dataPoints.add(RadarScanView.DataPoint(angle, distance.toInt())) - } - } - binding.radarScanView.renderPointData(dataPoints, - object : RadarScanView.OnGetNearestPointCallback { - override fun getNearestPoint(point: RadarScanView.DataPoint?) { - if (point == null) { - binding.distanceValueView.text = "大于5500cm" - binding.distancePgBar.progress = 100 - } else { - binding.distanceValueView.text = "${point.distance * 100}cm" - val progress = if (point.distance > 5.5f) { - 100 - } else { - (point.distance / 5.5f) * 100 - } - - binding.distancePgBar.progress = progress.toInt() - } - } - }) + renderDataPoint(this) } } }) } + /** + * 计算并渲染数据点 + * */ + private fun renderDataPoint(location: AMapLocation) { + lifecycleScope.launch(Dispatchers.IO) { + val dataPoints = ArrayList() + DataBaseManager.get.loadTaskLabels().forEach { + val angle = location.calculateAngle( + LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + //单位:米 + val distance = AMapUtils.calculateLineDistance( + LatLng(latitude, longitude), LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + if (distance <= LocaleConstant.MAX_DISTANCE) { + dataPoints.add(RadarScanView.DataPoint(angle, distance)) + } + } + withContext(Dispatchers.Main) { + binding.radarScanView.renderPointData(dataPoints, + object : RadarScanView.OnGetNearestPointCallback { + override fun getNearestPoint(point: RadarScanView.DataPoint?) { + if (point == null) { + binding.distanceValueView.text = "大于5500cm" + binding.distancePgBar.progress = 100 + } else { + binding.distanceValueView.text = "${point.distance * 100}cm" + val progress = + if (point.distance > LocaleConstant.MAX_DISTANCE) { + 100 + } else { + (point.distance / LocaleConstant.MAX_DISTANCE) * 100 + } + binding.distancePgBar.progress = progress.toInt() + } + } + } + ) + } + } + } + override fun onStart() { super.onStart() //调高串口电位 diff --git a/.gitignore b/.gitignore index 1c1a7b7..7430070 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /.idea/libraries /.idea/misc.xml /.idea/modules.xml +/.idea/modules +/.idea/shelf /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index c2114ce..0f81928 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -14,6 +14,7 @@ const val PERMISSIONS_CODE = 999 const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val MAX_DISTANCE = 5.5f //表盘最大显示距离 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 7d63f41..b4f3eb9 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1729,6 +1729,7 @@ } } else { "标识器未安装,安装成功后才可读取埋深!".show(context) + initTimer() } } @@ -1746,45 +1747,56 @@ locationHub.getCurrentLocation(false, object : OnGetLocationListener { override fun onAMapLocationGet(location: AMapLocation?) { location?.apply { - val dataPoints = ArrayList() - DataBaseManager.get.loadTaskLabels().forEach { - val angle = calculateAngle( - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - //单位:米 - val distance = AMapUtils.calculateLineDistance( - LatLng(latitude, longitude), - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - if (distance <= 5.5) { - dataPoints.add(RadarScanView.DataPoint(angle, distance.toInt())) - } - } - binding.radarScanView.renderPointData(dataPoints, - object : RadarScanView.OnGetNearestPointCallback { - override fun getNearestPoint(point: RadarScanView.DataPoint?) { - if (point == null) { - binding.distanceValueView.text = "大于5500cm" - binding.distancePgBar.progress = 100 - } else { - binding.distanceValueView.text = "${point.distance * 100}cm" - val progress = if (point.distance > 5.5f) { - 100 - } else { - (point.distance / 5.5f) * 100 - } - - binding.distancePgBar.progress = progress.toInt() - } - } - }) + renderDataPoint(this) } } }) } + /** + * 计算并渲染数据点 + * */ + private fun renderDataPoint(location: AMapLocation) { + lifecycleScope.launch(Dispatchers.IO) { + val dataPoints = ArrayList() + DataBaseManager.get.loadTaskLabels().forEach { + val angle = location.calculateAngle( + LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + //单位:米 + val distance = AMapUtils.calculateLineDistance( + LatLng(latitude, longitude), LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + if (distance <= LocaleConstant.MAX_DISTANCE) { + dataPoints.add(RadarScanView.DataPoint(angle, distance)) + } + } + withContext(Dispatchers.Main) { + binding.radarScanView.renderPointData(dataPoints, + object : RadarScanView.OnGetNearestPointCallback { + override fun getNearestPoint(point: RadarScanView.DataPoint?) { + if (point == null) { + binding.distanceValueView.text = "大于5500cm" + binding.distancePgBar.progress = 100 + } else { + binding.distanceValueView.text = "${point.distance * 100}cm" + val progress = + if (point.distance > LocaleConstant.MAX_DISTANCE) { + 100 + } else { + (point.distance / LocaleConstant.MAX_DISTANCE) * 100 + } + binding.distancePgBar.progress = progress.toInt() + } + } + } + ) + } + } + } + override fun onStart() { super.onStart() //调高串口电位 diff --git a/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt b/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt index 6bc23d7..fe35d42 100644 --- a/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt +++ b/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt @@ -17,6 +17,7 @@ import android.util.AttributeSet import android.view.View import com.casic.detector.R +import com.casic.detector.utils.LocaleConstant import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.sp2px import kotlin.math.cos @@ -392,9 +393,11 @@ * */ private fun DataPoint.convertPointF(): PointF { val dataAngle = (this.angle * Math.PI / 180).toFloat() - //距离最大3米,表盘最大125dp,需要转换 - //TODO 距离转换有点问题 - val dataDistance = this.distance * (30 / 125f) + + /** + * 距离最大5.5米,表盘四个环,一个环距离1.5米,半径124dp(248px) + * */ + val dataDistance = (this.distance / LocaleConstant.MAX_DISTANCE) * radius val x = dataDistance * cos(dataAngle) val y = dataDistance * sin(dataAngle) return PointF(x, y) @@ -405,5 +408,5 @@ * @param angle 数据点和圆心的方位角 * @param distance 数据点和圆心的相对距离 * */ - data class DataPoint(var angle: Int, var distance: Int) + data class DataPoint(var angle: Int, var distance: Float) } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1c1a7b7..7430070 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /.idea/libraries /.idea/misc.xml /.idea/modules.xml +/.idea/modules +/.idea/shelf /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index c2114ce..0f81928 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -14,6 +14,7 @@ const val PERMISSIONS_CODE = 999 const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val MAX_DISTANCE = 5.5f //表盘最大显示距离 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 7d63f41..b4f3eb9 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1729,6 +1729,7 @@ } } else { "标识器未安装,安装成功后才可读取埋深!".show(context) + initTimer() } } @@ -1746,45 +1747,56 @@ locationHub.getCurrentLocation(false, object : OnGetLocationListener { override fun onAMapLocationGet(location: AMapLocation?) { location?.apply { - val dataPoints = ArrayList() - DataBaseManager.get.loadTaskLabels().forEach { - val angle = calculateAngle( - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - //单位:米 - val distance = AMapUtils.calculateLineDistance( - LatLng(latitude, longitude), - LatLng(it.lat.toDouble(), it.lng.toDouble()) - ) - - if (distance <= 5.5) { - dataPoints.add(RadarScanView.DataPoint(angle, distance.toInt())) - } - } - binding.radarScanView.renderPointData(dataPoints, - object : RadarScanView.OnGetNearestPointCallback { - override fun getNearestPoint(point: RadarScanView.DataPoint?) { - if (point == null) { - binding.distanceValueView.text = "大于5500cm" - binding.distancePgBar.progress = 100 - } else { - binding.distanceValueView.text = "${point.distance * 100}cm" - val progress = if (point.distance > 5.5f) { - 100 - } else { - (point.distance / 5.5f) * 100 - } - - binding.distancePgBar.progress = progress.toInt() - } - } - }) + renderDataPoint(this) } } }) } + /** + * 计算并渲染数据点 + * */ + private fun renderDataPoint(location: AMapLocation) { + lifecycleScope.launch(Dispatchers.IO) { + val dataPoints = ArrayList() + DataBaseManager.get.loadTaskLabels().forEach { + val angle = location.calculateAngle( + LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + //单位:米 + val distance = AMapUtils.calculateLineDistance( + LatLng(latitude, longitude), LatLng(it.lat.toDouble(), it.lng.toDouble()) + ) + + if (distance <= LocaleConstant.MAX_DISTANCE) { + dataPoints.add(RadarScanView.DataPoint(angle, distance)) + } + } + withContext(Dispatchers.Main) { + binding.radarScanView.renderPointData(dataPoints, + object : RadarScanView.OnGetNearestPointCallback { + override fun getNearestPoint(point: RadarScanView.DataPoint?) { + if (point == null) { + binding.distanceValueView.text = "大于5500cm" + binding.distancePgBar.progress = 100 + } else { + binding.distanceValueView.text = "${point.distance * 100}cm" + val progress = + if (point.distance > LocaleConstant.MAX_DISTANCE) { + 100 + } else { + (point.distance / LocaleConstant.MAX_DISTANCE) * 100 + } + binding.distancePgBar.progress = progress.toInt() + } + } + } + ) + } + } + } + override fun onStart() { super.onStart() //调高串口电位 diff --git a/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt b/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt index 6bc23d7..fe35d42 100644 --- a/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt +++ b/app/src/main/java/com/casic/detector/widgets/RadarScanView.kt @@ -17,6 +17,7 @@ import android.util.AttributeSet import android.view.View import com.casic.detector.R +import com.casic.detector.utils.LocaleConstant import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.sp2px import kotlin.math.cos @@ -392,9 +393,11 @@ * */ private fun DataPoint.convertPointF(): PointF { val dataAngle = (this.angle * Math.PI / 180).toFloat() - //距离最大3米,表盘最大125dp,需要转换 - //TODO 距离转换有点问题 - val dataDistance = this.distance * (30 / 125f) + + /** + * 距离最大5.5米,表盘四个环,一个环距离1.5米,半径124dp(248px) + * */ + val dataDistance = (this.distance / LocaleConstant.MAX_DISTANCE) * radius val x = dataDistance * cos(dataAngle) val y = dataDistance * sin(dataAngle) return PointF(x, y) @@ -405,5 +408,5 @@ * @param angle 数据点和圆心的方位角 * @param distance 数据点和圆心的相对距离 * */ - data class DataPoint(var angle: Int, var distance: Int) + data class DataPoint(var angle: Int, var distance: Float) } \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_search_marker_new.xml b/app/src/main/res/layout/dialog_search_marker_new.xml index ca6feaa..9c048ef 100644 --- a/app/src/main/res/layout/dialog_search_marker_new.xml +++ b/app/src/main/res/layout/dialog_search_marker_new.xml @@ -51,7 +51,7 @@ app:radar_border="@dimen/dp_1" app:radar_borderColor="#8000FFF0" app:radar_circleCount="4" - app:radar_radius="@dimen/dp_125" /> + app:radar_radius="124dp" />