diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { 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 index 023dd92..a5319bf 100644 --- 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 @@ -9,8 +9,10 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager +import android.os.Build import android.os.Bundle import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import com.amap.api.location.AMapLocation import com.casic.common.detector.gd.R @@ -23,15 +25,15 @@ 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.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.TitleBarView +@RequiresApi(Build.VERSION_CODES.N) 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 locationManager by lazy { context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } private val locationKit by lazy { LocationKit(context) } private val satelliteTypeMap = mapOf( 0 to "UNKNOWN", diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { 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 index 023dd92..a5319bf 100644 --- 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 @@ -9,8 +9,10 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager +import android.os.Build import android.os.Bundle import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import com.amap.api.location.AMapLocation import com.casic.common.detector.gd.R @@ -23,15 +25,15 @@ 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.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.TitleBarView +@RequiresApi(Build.VERSION_CODES.N) 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 locationManager by lazy { context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } private val locationKit by lazy { LocationKit(context) } private val satelliteTypeMap = mapOf( 0 to "UNKNOWN", diff --git a/lite/build.gradle b/lite/build.gradle index 35c5085..fae9da6 100644 --- a/lite/build.gradle +++ b/lite/build.gradle @@ -5,7 +5,7 @@ compileSdkVersion 33 defaultConfig { - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 1 versionName "1.0" diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { 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 index 023dd92..a5319bf 100644 --- 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 @@ -9,8 +9,10 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager +import android.os.Build import android.os.Bundle import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import com.amap.api.location.AMapLocation import com.casic.common.detector.gd.R @@ -23,15 +25,15 @@ 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.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.TitleBarView +@RequiresApi(Build.VERSION_CODES.N) 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 locationManager by lazy { context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } private val locationKit by lazy { LocationKit(context) } private val satelliteTypeMap = mapOf( 0 to "UNKNOWN", diff --git a/lite/build.gradle b/lite/build.gradle index 35c5085..fae9da6 100644 --- a/lite/build.gradle +++ b/lite/build.gradle @@ -5,7 +5,7 @@ compileSdkVersion 33 defaultConfig { - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 1 versionName "1.0" diff --git a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt index 130d29c..202013b 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt @@ -9,6 +9,7 @@ import android.util.DisplayMetrics import android.view.WindowInsets import android.view.WindowManager +import androidx.core.content.getSystemService import com.pengxh.kt.lite.utils.LiteKitConstant import java.io.File import java.io.IOException @@ -21,17 +22,15 @@ * @return */ fun Context.isNetworkConnected(): Boolean { - val manager = this.getSystemService() - val network = manager?.activeNetwork ?: return false - val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false - return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) -} - -/** - * Context内联函数-扩展函数 - * */ -inline fun Context.getSystemService(): T? { - return this.getSystemService(T::class.java) + val manager = this.getSystemService() ?: return false + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val network = manager.activeNetwork ?: return false + val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false + return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } else { + val activeNetworkInfo = manager.activeNetworkInfo + return activeNetworkInfo != null && activeNetworkInfo.isConnected + } } inline fun Context.navigatePageTo() { @@ -137,12 +136,12 @@ * 获取屏幕密度比值 */ fun Context.getScreenDensity(): Float { - val windowManager = this.getSystemService()!! + val manager = this.getSystemService() ?: return 0f val displayMetrics = DisplayMetrics() val display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { this.display } else { - windowManager.defaultDisplay + manager.defaultDisplay } if (display == null) { return 1f diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { 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 index 023dd92..a5319bf 100644 --- 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 @@ -9,8 +9,10 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager +import android.os.Build import android.os.Bundle import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import com.amap.api.location.AMapLocation import com.casic.common.detector.gd.R @@ -23,15 +25,15 @@ 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.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.TitleBarView +@RequiresApi(Build.VERSION_CODES.N) 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 locationManager by lazy { context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } private val locationKit by lazy { LocationKit(context) } private val satelliteTypeMap = mapOf( 0 to "UNKNOWN", diff --git a/lite/build.gradle b/lite/build.gradle index 35c5085..fae9da6 100644 --- a/lite/build.gradle +++ b/lite/build.gradle @@ -5,7 +5,7 @@ compileSdkVersion 33 defaultConfig { - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 1 versionName "1.0" diff --git a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt index 130d29c..202013b 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt @@ -9,6 +9,7 @@ import android.util.DisplayMetrics import android.view.WindowInsets import android.view.WindowManager +import androidx.core.content.getSystemService import com.pengxh.kt.lite.utils.LiteKitConstant import java.io.File import java.io.IOException @@ -21,17 +22,15 @@ * @return */ fun Context.isNetworkConnected(): Boolean { - val manager = this.getSystemService() - val network = manager?.activeNetwork ?: return false - val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false - return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) -} - -/** - * Context内联函数-扩展函数 - * */ -inline fun Context.getSystemService(): T? { - return this.getSystemService(T::class.java) + val manager = this.getSystemService() ?: return false + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val network = manager.activeNetwork ?: return false + val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false + return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } else { + val activeNetworkInfo = manager.activeNetworkInfo + return activeNetworkInfo != null && activeNetworkInfo.isConnected + } } inline fun Context.navigatePageTo() { @@ -137,12 +136,12 @@ * 获取屏幕密度比值 */ fun Context.getScreenDensity(): Float { - val windowManager = this.getSystemService()!! + val manager = this.getSystemService() ?: return 0f val displayMetrics = DisplayMetrics() val display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { this.display } else { - windowManager.defaultDisplay + manager.defaultDisplay } if (display == null) { return 1f diff --git a/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt b/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt index 00d3a3a..da2b7a5 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt @@ -9,6 +9,7 @@ import android.text.style.ImageSpan import android.view.View import android.widget.TextView +import androidx.core.text.HtmlCompat import com.bumptech.glide.Glide import com.pengxh.kt.lite.R import com.pengxh.kt.lite.extensions.convertDrawable @@ -80,7 +81,7 @@ scope.launch(Dispatchers.Main) { textView.movementMethod = LinkMovementMethod.getInstance() //默认不处理图片先这样简单设置 - textView.text = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY) + textView.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY) withContext(Dispatchers.IO) { val imageGetter = Html.ImageGetter { source -> val drawable = try { @@ -102,8 +103,8 @@ drawable } - val htmlText = Html.fromHtml( - html, Html.FROM_HTML_MODE_LEGACY, imageGetter, object : Html.TagHandler { + val htmlText = HtmlCompat.fromHtml( + html, HtmlCompat.FROM_HTML_MODE_LEGACY, imageGetter, object : Html.TagHandler { override fun handleTag( opening: Boolean, tag: String, output: Editable, xmlReader: XMLReader ) { diff --git a/app/build.gradle b/app/build.gradle index f495d34..7a7eb0c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ defaultConfig { applicationId "com.casic.common.detector.gd" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 5092 versionName "5.0.9.2" diff --git a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt index 16a5db8..81a2697 100644 --- a/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt +++ b/app/src/main/java/com/casic/common/detector/gd/utils/RTK.kt @@ -11,14 +11,13 @@ import androidx.core.app.ActivityCompat import androidx.core.location.GnssStatusCompat import androidx.core.location.LocationManagerCompat -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues object RTK { private const val kTag = "RTK" - private val handler = Handler(Looper.getMainLooper()) + private val handler by lazy { Handler(Looper.getMainLooper()) } fun getCurrentLocation(context: Context, rtkLocationListener: LocationListener) { if (ActivityCompat.checkSelfPermission( @@ -34,7 +33,7 @@ "缺少定位权限".show(context) return } - val locationManager = context.getSystemService() ?: return + val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 3000, 0f ) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt index 91fa4f8..fb0b260 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/MainActivity.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool +import android.os.Build import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -238,7 +239,13 @@ 3 -> uploadEvent() 4 -> completionMarker() 5 -> showRtkConfigDialog() - 6 -> SatelliteStatusDialog(context).show() + 6 -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SatelliteStatusDialog(context).show() + } else { + "卫星数据仅支持Android 7.0以上系统".show(context) + } + } } } }) diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt index 061f398..4a92c97 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.content.res.ColorStateList import android.graphics.Color import android.hardware.Sensor @@ -32,7 +33,6 @@ import com.casic.common.detector.gd.widgets.MarkerDetailDialog import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.utils.LoadingDialog @@ -51,7 +51,7 @@ private val locationKit by lazy { LocationKit(this) } private val markerPoints by lazy { ArrayList() } private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -343,17 +343,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt index 5ea7f24..1dc59a7 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/SearchMarkerAuditActivity.kt @@ -1,5 +1,6 @@ package com.casic.common.detector.gd.view +import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener @@ -21,7 +22,6 @@ import com.casic.common.detector.gd.widgets.NewMarkerDetailDialog import com.casic.common.detector.gd.widgets.RadarScanView import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -36,7 +36,7 @@ private val kTag = "SearchMarkerActivity" private val context = this private val locationKit by lazy { LocationKit(this) } - private val sensorManager by lazy { getSystemService() } + private val sensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager } private val attr = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build() private val soundPool = SoundPool.Builder().setMaxStreams(16).setAudioAttributes(attr).build() @@ -143,17 +143,17 @@ override fun onResume() { super.onResume() //注册加速度传感器监听 - val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) - sensorManager?.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) + sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) //注册磁场传感器监听 - val magnetic = sensorManager?.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) - sensorManager?.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) + val magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager.registerListener(this, magnetic, SensorManager.SENSOR_DELAY_NORMAL) } override fun onPause() { super.onPause() - sensorManager?.unregisterListener(this) + sensorManager.unregisterListener(this) } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { 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 index 023dd92..a5319bf 100644 --- 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 @@ -9,8 +9,10 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager +import android.os.Build import android.os.Bundle import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.app.ActivityCompat import com.amap.api.location.AMapLocation import com.casic.common.detector.gd.R @@ -23,15 +25,15 @@ 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.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.TitleBarView +@RequiresApi(Build.VERSION_CODES.N) 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 locationManager by lazy { context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } private val locationKit by lazy { LocationKit(context) } private val satelliteTypeMap = mapOf( 0 to "UNKNOWN", diff --git a/lite/build.gradle b/lite/build.gradle index 35c5085..fae9da6 100644 --- a/lite/build.gradle +++ b/lite/build.gradle @@ -5,7 +5,7 @@ compileSdkVersion 33 defaultConfig { - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionCode 1 versionName "1.0" diff --git a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt index 130d29c..202013b 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/extensions/Context.kt @@ -9,6 +9,7 @@ import android.util.DisplayMetrics import android.view.WindowInsets import android.view.WindowManager +import androidx.core.content.getSystemService import com.pengxh.kt.lite.utils.LiteKitConstant import java.io.File import java.io.IOException @@ -21,17 +22,15 @@ * @return */ fun Context.isNetworkConnected(): Boolean { - val manager = this.getSystemService() - val network = manager?.activeNetwork ?: return false - val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false - return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) -} - -/** - * Context内联函数-扩展函数 - * */ -inline fun Context.getSystemService(): T? { - return this.getSystemService(T::class.java) + val manager = this.getSystemService() ?: return false + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + val network = manager.activeNetwork ?: return false + val networkCapabilities = manager.getNetworkCapabilities(network) ?: return false + return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } else { + val activeNetworkInfo = manager.activeNetworkInfo + return activeNetworkInfo != null && activeNetworkInfo.isConnected + } } inline fun Context.navigatePageTo() { @@ -137,12 +136,12 @@ * 获取屏幕密度比值 */ fun Context.getScreenDensity(): Float { - val windowManager = this.getSystemService()!! + val manager = this.getSystemService() ?: return 0f val displayMetrics = DisplayMetrics() val display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { this.display } else { - windowManager.defaultDisplay + manager.defaultDisplay } if (display == null) { return 1f diff --git a/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt b/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt index 00d3a3a..da2b7a5 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/utils/HtmlRenderEngine.kt @@ -9,6 +9,7 @@ import android.text.style.ImageSpan import android.view.View import android.widget.TextView +import androidx.core.text.HtmlCompat import com.bumptech.glide.Glide import com.pengxh.kt.lite.R import com.pengxh.kt.lite.extensions.convertDrawable @@ -80,7 +81,7 @@ scope.launch(Dispatchers.Main) { textView.movementMethod = LinkMovementMethod.getInstance() //默认不处理图片先这样简单设置 - textView.text = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY) + textView.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY) withContext(Dispatchers.IO) { val imageGetter = Html.ImageGetter { source -> val drawable = try { @@ -102,8 +103,8 @@ drawable } - val htmlText = Html.fromHtml( - html, Html.FROM_HTML_MODE_LEGACY, imageGetter, object : Html.TagHandler { + val htmlText = HtmlCompat.fromHtml( + html, HtmlCompat.FROM_HTML_MODE_LEGACY, imageGetter, object : Html.TagHandler { override fun handleTag( opening: Boolean, tag: String, output: Editable, xmlReader: XMLReader ) { diff --git a/lite/src/main/java/com/pengxh/kt/lite/widget/audio/AudioPlayerView.kt b/lite/src/main/java/com/pengxh/kt/lite/widget/audio/AudioPlayerView.kt index 1656a9b..a6cf8ac 100644 --- a/lite/src/main/java/com/pengxh/kt/lite/widget/audio/AudioPlayerView.kt +++ b/lite/src/main/java/com/pengxh/kt/lite/widget/audio/AudioPlayerView.kt @@ -1,13 +1,11 @@ package com.pengxh.kt.lite.widget.audio import android.content.Context -import android.media.AsyncPlayer -import android.media.AudioAttributes import android.media.MediaMetadataRetriever +import android.media.MediaPlayer import android.net.Uri -import android.os.CountDownTimer import android.os.Handler -import android.os.Message +import android.os.Looper import android.util.AttributeSet import android.view.View import androidx.annotation.DrawableRes @@ -16,21 +14,16 @@ import com.pengxh.kt.lite.R import com.pengxh.kt.lite.extensions.appendZero import com.pengxh.kt.lite.utils.LiteKitConstant -import com.pengxh.kt.lite.utils.WeakReferenceHandler import java.io.File import java.io.FileInputStream class AudioPlayerView(context: Context, attrs: AttributeSet) : AppCompatTextView(context, attrs), - Handler.Callback, View.OnClickListener { + View.OnClickListener { private val kTag = "AudioPlayerView" - private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } - private val asyncPlayer by lazy { AsyncPlayer(kTag) } - private val audioAttributes = AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) - .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) - .build() + private val weakReferenceHandler by lazy { Handler(Looper.getMainLooper()) } + private var mediaPlayer: MediaPlayer? = null private var index = 0 private var isPlaying = false private var duration = 0L @@ -68,31 +61,40 @@ } override fun onClick(v: View?) { - if (isPlaying) { - asyncPlayer.stop() + isPlaying = if (isPlaying) { + stopPlayback() stopAnimation() - isPlaying = false + false } else { - asyncPlayer.play(context, Uri.fromFile(file), false, audioAttributes) + startPlayback() startAnimation() - isPlaying = true - /** - * 倒计时,判断音频是否播放完毕 - * - * AsyncPlayer是MediaPlayer的简单异步封装,简单到只提供播放和停止API,所以需要自己监听播放是否完毕 - * */ - object : CountDownTimer(duration, 1000) { - override fun onTick(millisUntilFinished: Long) { - - } - - override fun onFinish() { - stop() - } - }.start() + true } } + private fun startPlayback() { + mediaPlayer?.release() + mediaPlayer = MediaPlayer().apply { + setDataSource(context, Uri.fromFile(file)) + prepare() + start() + + setOnCompletionListener { + stopPlayback() + stopAnimation() + this@AudioPlayerView.isPlaying = false + } + } + } + + private fun stopPlayback() { + mediaPlayer?.apply { + stop() + release() + } + mediaPlayer = null + } + private fun startAnimation() { //防止被多次点击,每次点击View之后都把之前的动画Runnable清空 weakReferenceHandler.removeCallbacks(animationRunnable) @@ -121,9 +123,6 @@ fun stop() { weakReferenceHandler.removeCallbacks(animationRunnable) isPlaying = false - } - - override fun handleMessage(msg: Message): Boolean { - return true + stopPlayback() } } \ No newline at end of file