diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 42dc662..e896199 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,9 +66,6 @@
-
-
uploadEvent()
4 -> completionMarker()
5 -> showRtkConfigDialog()
- 6 -> navigatePageTo()
+ 6 -> SatelliteStatusDialog(context).show()
}
}
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 42dc662..e896199 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,9 +66,6 @@
-
uploadEvent()
4 -> completionMarker()
5 -> showRtkConfigDialog()
- 6 -> navigatePageTo()
+ 6 -> SatelliteStatusDialog(context).show()
}
}
})
diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
deleted file mode 100644
index 4703b1d..0000000
--- a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.casic.common.detector.gd.view
-
-import android.Manifest
-import android.content.pm.PackageManager
-import android.graphics.Color
-import android.location.GnssStatus
-import android.location.Location
-import android.location.LocationListener
-import android.location.LocationManager
-import android.os.Bundle
-import android.util.Log
-import androidx.core.app.ActivityCompat
-import com.amap.api.location.AMapLocation
-import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
-import com.casic.common.detector.gd.callback.OnGetLocationListener
-import com.casic.common.detector.gd.databinding.ActivitySatelliteStatusBinding
-import com.casic.common.detector.gd.extensions.toDegree
-import com.casic.common.detector.gd.model.Satellite
-import com.casic.common.detector.gd.utils.LocationKit
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
-import com.pengxh.kt.lite.extensions.getScreenHeight
-import com.pengxh.kt.lite.extensions.getScreenWidth
-import com.pengxh.kt.lite.extensions.getSystemService
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
-import com.pengxh.kt.lite.widget.TitleBarView
-import kotlin.math.roundToInt
-
-class SatelliteStatusActivity : KotlinBaseActivity(),
- LocationListener {
-
- private val kTag = "SatelliteActivity"
- private val context = this
- private val locationManager by lazy { getSystemService()!! }
- private val satelliteTypeMap = mapOf(
- 0 to "UNKNOWN",
- 1 to "GPS",
- 3 to "GLONASS",
- 4 to "QZSS",
- 5 to "BDS",
- 6 to "GALILEO",
- 7 to "IRNSS",
- )
- private val satelliteCollection = ArrayList()
- private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
- private val locationKit by lazy { LocationKit(this) }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- val params = window.attributes
- params.width = (getScreenWidth() * 0.97).roundToInt()
- params.height = (getScreenHeight() * 0.75).roundToInt()
- window.attributes = params
-
- if (ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_FINE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_COARSE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- "缺少定位权限".show(this)
- return
- }
- locationManager.requestLocationUpdates(
- LocationManager.GPS_PROVIDER, 3000, 0f, this
- )
- locationManager.registerGnssStatusCallback(gnssStatusListener, null)
- satelliteAdapter = SatelliteRecyclerAdapter(this, satelliteCollection)
- binding.recyclerView.adapter = satelliteAdapter
- binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
-
- //高德定位
- locationKit.getCurrentLocation(false, object : OnGetLocationListener {
- override fun onSuccess(location: AMapLocation) {
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- override fun onError() {
- "当前位置信号差,无法获取定位".show(context)
- }
- })
- }
-
- override fun onLocationChanged(location: Location) {
- //转为度分秒
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- private val gnssStatusListener = object : GnssStatus.Callback() {
- override fun onSatelliteStatusChanged(status: GnssStatus) {
- satelliteCollection.clear()
- for (i in 0 until status.satelliteCount) {
- //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
- val constellationType = status.getConstellationType(i)
- val satellite = Satellite().apply {
- svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
- signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
- elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
- azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
- type = constellationType // 获取卫星的类型
- isUsedInFix = status.usedInFix(i)
- }
- if (satellite.signal != 0) {
- satelliteCollection.add(satellite)
- }
- }
- Log.d(kTag, satelliteCollection.toJson())
- satelliteAdapter.notifyDataSetChanged()
- }
- }
-
- override fun initViewBinding(): ActivitySatelliteStatusBinding {
- return ActivitySatelliteStatusBinding.inflate(layoutInflater)
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun setupTopBarLayout() {
- binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
- override fun onLeftClick() {
-
- }
-
- override fun onRightClick() {
- finish()
- }
- })
- }
-
- override fun initEvent() {
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- locationManager.unregisterGnssStatusCallback(gnssStatusListener)
- locationManager.removeUpdates(this)
- Log.d(kTag, "onDestroy: 停止卫星信号监听")
- locationKit.stopLocation()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 42dc662..e896199 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,9 +66,6 @@
-
uploadEvent()
4 -> completionMarker()
5 -> showRtkConfigDialog()
- 6 -> navigatePageTo()
+ 6 -> SatelliteStatusDialog(context).show()
}
}
})
diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
deleted file mode 100644
index 4703b1d..0000000
--- a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.casic.common.detector.gd.view
-
-import android.Manifest
-import android.content.pm.PackageManager
-import android.graphics.Color
-import android.location.GnssStatus
-import android.location.Location
-import android.location.LocationListener
-import android.location.LocationManager
-import android.os.Bundle
-import android.util.Log
-import androidx.core.app.ActivityCompat
-import com.amap.api.location.AMapLocation
-import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
-import com.casic.common.detector.gd.callback.OnGetLocationListener
-import com.casic.common.detector.gd.databinding.ActivitySatelliteStatusBinding
-import com.casic.common.detector.gd.extensions.toDegree
-import com.casic.common.detector.gd.model.Satellite
-import com.casic.common.detector.gd.utils.LocationKit
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
-import com.pengxh.kt.lite.extensions.getScreenHeight
-import com.pengxh.kt.lite.extensions.getScreenWidth
-import com.pengxh.kt.lite.extensions.getSystemService
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
-import com.pengxh.kt.lite.widget.TitleBarView
-import kotlin.math.roundToInt
-
-class SatelliteStatusActivity : KotlinBaseActivity(),
- LocationListener {
-
- private val kTag = "SatelliteActivity"
- private val context = this
- private val locationManager by lazy { getSystemService()!! }
- private val satelliteTypeMap = mapOf(
- 0 to "UNKNOWN",
- 1 to "GPS",
- 3 to "GLONASS",
- 4 to "QZSS",
- 5 to "BDS",
- 6 to "GALILEO",
- 7 to "IRNSS",
- )
- private val satelliteCollection = ArrayList()
- private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
- private val locationKit by lazy { LocationKit(this) }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- val params = window.attributes
- params.width = (getScreenWidth() * 0.97).roundToInt()
- params.height = (getScreenHeight() * 0.75).roundToInt()
- window.attributes = params
-
- if (ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_FINE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_COARSE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- "缺少定位权限".show(this)
- return
- }
- locationManager.requestLocationUpdates(
- LocationManager.GPS_PROVIDER, 3000, 0f, this
- )
- locationManager.registerGnssStatusCallback(gnssStatusListener, null)
- satelliteAdapter = SatelliteRecyclerAdapter(this, satelliteCollection)
- binding.recyclerView.adapter = satelliteAdapter
- binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
-
- //高德定位
- locationKit.getCurrentLocation(false, object : OnGetLocationListener {
- override fun onSuccess(location: AMapLocation) {
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- override fun onError() {
- "当前位置信号差,无法获取定位".show(context)
- }
- })
- }
-
- override fun onLocationChanged(location: Location) {
- //转为度分秒
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- private val gnssStatusListener = object : GnssStatus.Callback() {
- override fun onSatelliteStatusChanged(status: GnssStatus) {
- satelliteCollection.clear()
- for (i in 0 until status.satelliteCount) {
- //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
- val constellationType = status.getConstellationType(i)
- val satellite = Satellite().apply {
- svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
- signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
- elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
- azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
- type = constellationType // 获取卫星的类型
- isUsedInFix = status.usedInFix(i)
- }
- if (satellite.signal != 0) {
- satelliteCollection.add(satellite)
- }
- }
- Log.d(kTag, satelliteCollection.toJson())
- satelliteAdapter.notifyDataSetChanged()
- }
- }
-
- override fun initViewBinding(): ActivitySatelliteStatusBinding {
- return ActivitySatelliteStatusBinding.inflate(layoutInflater)
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun setupTopBarLayout() {
- binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
- override fun onLeftClick() {
-
- }
-
- override fun onRightClick() {
- finish()
- }
- })
- }
-
- override fun initEvent() {
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- locationManager.unregisterGnssStatusCallback(gnssStatusListener)
- locationManager.removeUpdates(this)
- Log.d(kTag, "onDestroy: 停止卫星信号监听")
- locationKit.stopLocation()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
new file mode 100644
index 0000000..e25694f
--- /dev/null
+++ b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
@@ -0,0 +1,141 @@
+package com.casic.common.detector.gd.widgets
+
+import android.Manifest
+import android.app.Dialog
+import android.content.Context
+import android.content.pm.PackageManager
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.location.GnssStatus
+import android.location.Location
+import android.location.LocationListener
+import android.location.LocationManager
+import android.os.Bundle
+import android.util.Log
+import androidx.core.app.ActivityCompat
+import com.amap.api.location.AMapLocation
+import com.casic.common.detector.gd.R
+import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
+import com.casic.common.detector.gd.callback.OnGetLocationListener
+import com.casic.common.detector.gd.databinding.DialogSatelliteStatusBinding
+import com.casic.common.detector.gd.extensions.toDegree
+import com.casic.common.detector.gd.model.Satellite
+import com.casic.common.detector.gd.utils.LocationKit
+import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
+import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.getScreenHeight
+import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.getSystemService
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.widget.TitleBarView
+import kotlin.math.roundToInt
+
+class SatelliteStatusDialog(private val context: Context) :
+ Dialog(context, R.style.UserDefinedDialogStyle), LocationListener {
+
+ private val kTag = "SatelliteStatusDialog"
+ private val locationManager by lazy { context.getSystemService()!! }
+ private val locationKit by lazy { LocationKit(context) }
+ private val satelliteTypeMap = mapOf(
+ 0 to "UNKNOWN",
+ 1 to "GPS",
+ 3 to "GLONASS",
+ 4 to "QZSS",
+ 5 to "BDS",
+ 6 to "GALILEO",
+ 7 to "IRNSS",
+ )
+ private val satelliteCollection = ArrayList()
+ private val binding: DialogSatelliteStatusBinding by binding()
+ private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val window = this.window ?: return
+ window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window.decorView.setBackgroundColor(Color.TRANSPARENT)
+ val params = window.attributes
+ params.width = (context.getScreenWidth() * 0.97).roundToInt()
+ params.height = (context.getScreenHeight() * 0.80).roundToInt()
+ window.attributes = params
+
+ if (ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_FINE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_COARSE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ ) {
+ "缺少定位权限".show(context)
+ return
+ }
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER, 3000, 0f, this
+ )
+ locationManager.registerGnssStatusCallback(gnssStatusListener, null)
+ satelliteAdapter = SatelliteRecyclerAdapter(context, satelliteCollection)
+ binding.recyclerView.adapter = satelliteAdapter
+ binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
+
+ //高德定位
+ locationKit.getCurrentLocation(false, object : OnGetLocationListener {
+ override fun onSuccess(location: AMapLocation) {
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ override fun onError() {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ })
+
+ binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
+ override fun onLeftClick() {
+
+ }
+
+ override fun onRightClick() {
+ locationManager.unregisterGnssStatusCallback(gnssStatusListener)
+ locationManager.removeUpdates(this@SatelliteStatusDialog)
+ Log.d(kTag, "onRightClick: 停止卫星信号监听")
+ locationKit.stopLocation()
+ dismiss()
+ }
+ })
+ }
+
+ override fun onLocationChanged(location: Location) {
+ //转为度分秒
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ private val gnssStatusListener = object : GnssStatus.Callback() {
+ override fun onSatelliteStatusChanged(status: GnssStatus) {
+ satelliteCollection.clear()
+ for (i in 0 until status.satelliteCount) {
+ //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
+ val constellationType = status.getConstellationType(i)
+ val satellite = Satellite().apply {
+ svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
+ signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
+ elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
+ azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
+ type = constellationType // 获取卫星的类型
+ isUsedInFix = status.usedInFix(i)
+ }
+ if (satellite.signal != 0) {
+ satelliteCollection.add(satellite)
+ }
+ }
+ satelliteAdapter.notifyDataSetChanged()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 42dc662..e896199 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,9 +66,6 @@
-
uploadEvent()
4 -> completionMarker()
5 -> showRtkConfigDialog()
- 6 -> navigatePageTo()
+ 6 -> SatelliteStatusDialog(context).show()
}
}
})
diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
deleted file mode 100644
index 4703b1d..0000000
--- a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.casic.common.detector.gd.view
-
-import android.Manifest
-import android.content.pm.PackageManager
-import android.graphics.Color
-import android.location.GnssStatus
-import android.location.Location
-import android.location.LocationListener
-import android.location.LocationManager
-import android.os.Bundle
-import android.util.Log
-import androidx.core.app.ActivityCompat
-import com.amap.api.location.AMapLocation
-import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
-import com.casic.common.detector.gd.callback.OnGetLocationListener
-import com.casic.common.detector.gd.databinding.ActivitySatelliteStatusBinding
-import com.casic.common.detector.gd.extensions.toDegree
-import com.casic.common.detector.gd.model.Satellite
-import com.casic.common.detector.gd.utils.LocationKit
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
-import com.pengxh.kt.lite.extensions.getScreenHeight
-import com.pengxh.kt.lite.extensions.getScreenWidth
-import com.pengxh.kt.lite.extensions.getSystemService
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
-import com.pengxh.kt.lite.widget.TitleBarView
-import kotlin.math.roundToInt
-
-class SatelliteStatusActivity : KotlinBaseActivity(),
- LocationListener {
-
- private val kTag = "SatelliteActivity"
- private val context = this
- private val locationManager by lazy { getSystemService()!! }
- private val satelliteTypeMap = mapOf(
- 0 to "UNKNOWN",
- 1 to "GPS",
- 3 to "GLONASS",
- 4 to "QZSS",
- 5 to "BDS",
- 6 to "GALILEO",
- 7 to "IRNSS",
- )
- private val satelliteCollection = ArrayList()
- private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
- private val locationKit by lazy { LocationKit(this) }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- val params = window.attributes
- params.width = (getScreenWidth() * 0.97).roundToInt()
- params.height = (getScreenHeight() * 0.75).roundToInt()
- window.attributes = params
-
- if (ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_FINE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_COARSE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- "缺少定位权限".show(this)
- return
- }
- locationManager.requestLocationUpdates(
- LocationManager.GPS_PROVIDER, 3000, 0f, this
- )
- locationManager.registerGnssStatusCallback(gnssStatusListener, null)
- satelliteAdapter = SatelliteRecyclerAdapter(this, satelliteCollection)
- binding.recyclerView.adapter = satelliteAdapter
- binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
-
- //高德定位
- locationKit.getCurrentLocation(false, object : OnGetLocationListener {
- override fun onSuccess(location: AMapLocation) {
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- override fun onError() {
- "当前位置信号差,无法获取定位".show(context)
- }
- })
- }
-
- override fun onLocationChanged(location: Location) {
- //转为度分秒
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- private val gnssStatusListener = object : GnssStatus.Callback() {
- override fun onSatelliteStatusChanged(status: GnssStatus) {
- satelliteCollection.clear()
- for (i in 0 until status.satelliteCount) {
- //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
- val constellationType = status.getConstellationType(i)
- val satellite = Satellite().apply {
- svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
- signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
- elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
- azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
- type = constellationType // 获取卫星的类型
- isUsedInFix = status.usedInFix(i)
- }
- if (satellite.signal != 0) {
- satelliteCollection.add(satellite)
- }
- }
- Log.d(kTag, satelliteCollection.toJson())
- satelliteAdapter.notifyDataSetChanged()
- }
- }
-
- override fun initViewBinding(): ActivitySatelliteStatusBinding {
- return ActivitySatelliteStatusBinding.inflate(layoutInflater)
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun setupTopBarLayout() {
- binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
- override fun onLeftClick() {
-
- }
-
- override fun onRightClick() {
- finish()
- }
- })
- }
-
- override fun initEvent() {
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- locationManager.unregisterGnssStatusCallback(gnssStatusListener)
- locationManager.removeUpdates(this)
- Log.d(kTag, "onDestroy: 停止卫星信号监听")
- locationKit.stopLocation()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
new file mode 100644
index 0000000..e25694f
--- /dev/null
+++ b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
@@ -0,0 +1,141 @@
+package com.casic.common.detector.gd.widgets
+
+import android.Manifest
+import android.app.Dialog
+import android.content.Context
+import android.content.pm.PackageManager
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.location.GnssStatus
+import android.location.Location
+import android.location.LocationListener
+import android.location.LocationManager
+import android.os.Bundle
+import android.util.Log
+import androidx.core.app.ActivityCompat
+import com.amap.api.location.AMapLocation
+import com.casic.common.detector.gd.R
+import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
+import com.casic.common.detector.gd.callback.OnGetLocationListener
+import com.casic.common.detector.gd.databinding.DialogSatelliteStatusBinding
+import com.casic.common.detector.gd.extensions.toDegree
+import com.casic.common.detector.gd.model.Satellite
+import com.casic.common.detector.gd.utils.LocationKit
+import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
+import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.getScreenHeight
+import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.getSystemService
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.widget.TitleBarView
+import kotlin.math.roundToInt
+
+class SatelliteStatusDialog(private val context: Context) :
+ Dialog(context, R.style.UserDefinedDialogStyle), LocationListener {
+
+ private val kTag = "SatelliteStatusDialog"
+ private val locationManager by lazy { context.getSystemService()!! }
+ private val locationKit by lazy { LocationKit(context) }
+ private val satelliteTypeMap = mapOf(
+ 0 to "UNKNOWN",
+ 1 to "GPS",
+ 3 to "GLONASS",
+ 4 to "QZSS",
+ 5 to "BDS",
+ 6 to "GALILEO",
+ 7 to "IRNSS",
+ )
+ private val satelliteCollection = ArrayList()
+ private val binding: DialogSatelliteStatusBinding by binding()
+ private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val window = this.window ?: return
+ window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window.decorView.setBackgroundColor(Color.TRANSPARENT)
+ val params = window.attributes
+ params.width = (context.getScreenWidth() * 0.97).roundToInt()
+ params.height = (context.getScreenHeight() * 0.80).roundToInt()
+ window.attributes = params
+
+ if (ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_FINE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_COARSE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ ) {
+ "缺少定位权限".show(context)
+ return
+ }
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER, 3000, 0f, this
+ )
+ locationManager.registerGnssStatusCallback(gnssStatusListener, null)
+ satelliteAdapter = SatelliteRecyclerAdapter(context, satelliteCollection)
+ binding.recyclerView.adapter = satelliteAdapter
+ binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
+
+ //高德定位
+ locationKit.getCurrentLocation(false, object : OnGetLocationListener {
+ override fun onSuccess(location: AMapLocation) {
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ override fun onError() {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ })
+
+ binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
+ override fun onLeftClick() {
+
+ }
+
+ override fun onRightClick() {
+ locationManager.unregisterGnssStatusCallback(gnssStatusListener)
+ locationManager.removeUpdates(this@SatelliteStatusDialog)
+ Log.d(kTag, "onRightClick: 停止卫星信号监听")
+ locationKit.stopLocation()
+ dismiss()
+ }
+ })
+ }
+
+ override fun onLocationChanged(location: Location) {
+ //转为度分秒
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ private val gnssStatusListener = object : GnssStatus.Callback() {
+ override fun onSatelliteStatusChanged(status: GnssStatus) {
+ satelliteCollection.clear()
+ for (i in 0 until status.satelliteCount) {
+ //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
+ val constellationType = status.getConstellationType(i)
+ val satellite = Satellite().apply {
+ svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
+ signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
+ elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
+ azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
+ type = constellationType // 获取卫星的类型
+ isUsedInFix = status.usedInFix(i)
+ }
+ if (satellite.signal != 0) {
+ satelliteCollection.add(satellite)
+ }
+ }
+ satelliteAdapter.notifyDataSetChanged()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_satellite_status.xml b/app/src/main/res/layout/activity_satellite_status.xml
deleted file mode 100644
index 6b98b2e..0000000
--- a/app/src/main/res/layout/activity_satellite_status.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 42dc662..e896199 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,9 +66,6 @@
-
uploadEvent()
4 -> completionMarker()
5 -> showRtkConfigDialog()
- 6 -> navigatePageTo()
+ 6 -> SatelliteStatusDialog(context).show()
}
}
})
diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
deleted file mode 100644
index 4703b1d..0000000
--- a/app/src/main/java/com/casic/common/detector/gd/view/SatelliteStatusActivity.kt
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.casic.common.detector.gd.view
-
-import android.Manifest
-import android.content.pm.PackageManager
-import android.graphics.Color
-import android.location.GnssStatus
-import android.location.Location
-import android.location.LocationListener
-import android.location.LocationManager
-import android.os.Bundle
-import android.util.Log
-import androidx.core.app.ActivityCompat
-import com.amap.api.location.AMapLocation
-import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
-import com.casic.common.detector.gd.callback.OnGetLocationListener
-import com.casic.common.detector.gd.databinding.ActivitySatelliteStatusBinding
-import com.casic.common.detector.gd.extensions.toDegree
-import com.casic.common.detector.gd.model.Satellite
-import com.casic.common.detector.gd.utils.LocationKit
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
-import com.pengxh.kt.lite.extensions.getScreenHeight
-import com.pengxh.kt.lite.extensions.getScreenWidth
-import com.pengxh.kt.lite.extensions.getSystemService
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
-import com.pengxh.kt.lite.widget.TitleBarView
-import kotlin.math.roundToInt
-
-class SatelliteStatusActivity : KotlinBaseActivity(),
- LocationListener {
-
- private val kTag = "SatelliteActivity"
- private val context = this
- private val locationManager by lazy { getSystemService()!! }
- private val satelliteTypeMap = mapOf(
- 0 to "UNKNOWN",
- 1 to "GPS",
- 3 to "GLONASS",
- 4 to "QZSS",
- 5 to "BDS",
- 6 to "GALILEO",
- 7 to "IRNSS",
- )
- private val satelliteCollection = ArrayList()
- private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
- private val locationKit by lazy { LocationKit(this) }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- val params = window.attributes
- params.width = (getScreenWidth() * 0.97).roundToInt()
- params.height = (getScreenHeight() * 0.75).roundToInt()
- window.attributes = params
-
- if (ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_FINE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- && ActivityCompat.checkSelfPermission(
- this, Manifest.permission.ACCESS_COARSE_LOCATION
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- "缺少定位权限".show(this)
- return
- }
- locationManager.requestLocationUpdates(
- LocationManager.GPS_PROVIDER, 3000, 0f, this
- )
- locationManager.registerGnssStatusCallback(gnssStatusListener, null)
- satelliteAdapter = SatelliteRecyclerAdapter(this, satelliteCollection)
- binding.recyclerView.adapter = satelliteAdapter
- binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
-
- //高德定位
- locationKit.getCurrentLocation(false, object : OnGetLocationListener {
- override fun onSuccess(location: AMapLocation) {
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- override fun onError() {
- "当前位置信号差,无法获取定位".show(context)
- }
- })
- }
-
- override fun onLocationChanged(location: Location) {
- //转为度分秒
- val lng = location.longitude.toDegree()
- val lat = location.latitude.toDegree()
-
- binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
- }
-
- private val gnssStatusListener = object : GnssStatus.Callback() {
- override fun onSatelliteStatusChanged(status: GnssStatus) {
- satelliteCollection.clear()
- for (i in 0 until status.satelliteCount) {
- //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
- val constellationType = status.getConstellationType(i)
- val satellite = Satellite().apply {
- svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
- signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
- elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
- azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
- type = constellationType // 获取卫星的类型
- isUsedInFix = status.usedInFix(i)
- }
- if (satellite.signal != 0) {
- satelliteCollection.add(satellite)
- }
- }
- Log.d(kTag, satelliteCollection.toJson())
- satelliteAdapter.notifyDataSetChanged()
- }
- }
-
- override fun initViewBinding(): ActivitySatelliteStatusBinding {
- return ActivitySatelliteStatusBinding.inflate(layoutInflater)
- }
-
- override fun observeRequestState() {
-
- }
-
- override fun setupTopBarLayout() {
- binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
- override fun onLeftClick() {
-
- }
-
- override fun onRightClick() {
- finish()
- }
- })
- }
-
- override fun initEvent() {
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- locationManager.unregisterGnssStatusCallback(gnssStatusListener)
- locationManager.removeUpdates(this)
- Log.d(kTag, "onDestroy: 停止卫星信号监听")
- locationKit.stopLocation()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
new file mode 100644
index 0000000..e25694f
--- /dev/null
+++ b/app/src/main/java/com/casic/common/detector/gd/widgets/SatelliteStatusDialog.kt
@@ -0,0 +1,141 @@
+package com.casic.common.detector.gd.widgets
+
+import android.Manifest
+import android.app.Dialog
+import android.content.Context
+import android.content.pm.PackageManager
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.location.GnssStatus
+import android.location.Location
+import android.location.LocationListener
+import android.location.LocationManager
+import android.os.Bundle
+import android.util.Log
+import androidx.core.app.ActivityCompat
+import com.amap.api.location.AMapLocation
+import com.casic.common.detector.gd.R
+import com.casic.common.detector.gd.adapter.SatelliteRecyclerAdapter
+import com.casic.common.detector.gd.callback.OnGetLocationListener
+import com.casic.common.detector.gd.databinding.DialogSatelliteStatusBinding
+import com.casic.common.detector.gd.extensions.toDegree
+import com.casic.common.detector.gd.model.Satellite
+import com.casic.common.detector.gd.utils.LocationKit
+import com.pengxh.kt.lite.divider.RecyclerViewItemDivider
+import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.getScreenHeight
+import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.getSystemService
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.widget.TitleBarView
+import kotlin.math.roundToInt
+
+class SatelliteStatusDialog(private val context: Context) :
+ Dialog(context, R.style.UserDefinedDialogStyle), LocationListener {
+
+ private val kTag = "SatelliteStatusDialog"
+ private val locationManager by lazy { context.getSystemService()!! }
+ private val locationKit by lazy { LocationKit(context) }
+ private val satelliteTypeMap = mapOf(
+ 0 to "UNKNOWN",
+ 1 to "GPS",
+ 3 to "GLONASS",
+ 4 to "QZSS",
+ 5 to "BDS",
+ 6 to "GALILEO",
+ 7 to "IRNSS",
+ )
+ private val satelliteCollection = ArrayList()
+ private val binding: DialogSatelliteStatusBinding by binding()
+ private lateinit var satelliteAdapter: SatelliteRecyclerAdapter
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val window = this.window ?: return
+ window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+ window.decorView.setBackgroundColor(Color.TRANSPARENT)
+ val params = window.attributes
+ params.width = (context.getScreenWidth() * 0.97).roundToInt()
+ params.height = (context.getScreenHeight() * 0.80).roundToInt()
+ window.attributes = params
+
+ if (ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_FINE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ && ActivityCompat.checkSelfPermission(
+ context, Manifest.permission.ACCESS_COARSE_LOCATION
+ ) != PackageManager.PERMISSION_GRANTED
+ ) {
+ "缺少定位权限".show(context)
+ return
+ }
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER, 3000, 0f, this
+ )
+ locationManager.registerGnssStatusCallback(gnssStatusListener, null)
+ satelliteAdapter = SatelliteRecyclerAdapter(context, satelliteCollection)
+ binding.recyclerView.adapter = satelliteAdapter
+ binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(0f, 0f, Color.WHITE))
+
+ //高德定位
+ locationKit.getCurrentLocation(false, object : OnGetLocationListener {
+ override fun onSuccess(location: AMapLocation) {
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.gdGpsView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ override fun onError() {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ })
+
+ binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener {
+ override fun onLeftClick() {
+
+ }
+
+ override fun onRightClick() {
+ locationManager.unregisterGnssStatusCallback(gnssStatusListener)
+ locationManager.removeUpdates(this@SatelliteStatusDialog)
+ Log.d(kTag, "onRightClick: 停止卫星信号监听")
+ locationKit.stopLocation()
+ dismiss()
+ }
+ })
+ }
+
+ override fun onLocationChanged(location: Location) {
+ //转为度分秒
+ val lng = location.longitude.toDegree()
+ val lat = location.latitude.toDegree()
+
+ binding.locationView.text = "经度:${lng} 纬度:${lat}\n精度:${location.accuracy}m"
+ }
+
+ private val gnssStatusListener = object : GnssStatus.Callback() {
+ override fun onSatelliteStatusChanged(status: GnssStatus) {
+ satelliteCollection.clear()
+ for (i in 0 until status.satelliteCount) {
+ //在同一个导航系统内,svid是唯一的,不会重复,但是,不同的导航系统可能会使用相同的svid数值
+ val constellationType = status.getConstellationType(i)
+ val satellite = Satellite().apply {
+ svid = "${satelliteTypeMap[constellationType]}_${status.getSvid(i)}"
+ signal = status.getCn0DbHz(i).toInt() //获取卫星的信号
+ elevation = status.getElevationDegrees(i).toInt()// 获取卫星的仰角
+ azimuth = status.getAzimuthDegrees(i).toInt()// 获取卫星的方位角
+ type = constellationType // 获取卫星的类型
+ isUsedInFix = status.usedInFix(i)
+ }
+ if (satellite.signal != 0) {
+ satelliteCollection.add(satellite)
+ }
+ }
+ satelliteAdapter.notifyDataSetChanged()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_satellite_status.xml b/app/src/main/res/layout/activity_satellite_status.xml
deleted file mode 100644
index 6b98b2e..0000000
--- a/app/src/main/res/layout/activity_satellite_status.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_satellite_status.xml b/app/src/main/res/layout/dialog_satellite_status.xml
new file mode 100644
index 0000000..7d571bd
--- /dev/null
+++ b/app/src/main/res/layout/dialog_satellite_status.xml
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file