Skip to content

Commit 986a1e6

Browse files
committed
Add cell signal sensor
1 parent 4bf8f9f commit 986a1e6

File tree

14 files changed

+109
-100
lines changed

14 files changed

+109
-100
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ apply plugin: 'kotlin-android'
44
apply plugin: 'kotlin-android-extensions'
55

66
group = 'com.kylecorry'
7-
version = '2.5.0'
7+
version = '2.6.0'
88

99
android {
1010
compileSdkVersion 30

app/src/main/java/com/kylecorry/trailsensecore/domain/Accuracy.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.kylecorry.trailsensecore.domain.network
22

3-
enum class CellNetwork(val minDbm: Int, val maxDbm: Int) {
4-
Nr(-140, -44),
5-
Lte(-140, -44),
6-
Cdma(-100, -75),
7-
Wcdma(-113, -51),
8-
Gsm(-113, -51)
3+
enum class CellNetwork(val id: Int, val minDbm: Int, val maxDbm: Int) {
4+
Nr(1, -140, -44),
5+
Lte(2, -140, -44),
6+
Cdma(3, -100, -75),
7+
Wcdma(4, -113, -51),
8+
Gsm(5, -113, -51)
99
}

app/src/main/java/com/kylecorry/trailsensecore/domain/network/CellSignal.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ data class CellSignal(
77
val strength: Float,
88
val dbm: Int,
99
val quality: Quality,
10-
val network: CellNetwork,
11-
val registered: Boolean
10+
val network: CellNetwork
1211
)
1312

1413

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.kylecorry.trailsensecore.domain.units
22

33
enum class Quality {
4-
Low,
5-
Medium,
6-
High,
4+
Poor,
5+
Moderate,
6+
Good,
77
Unknown
88
}

app/src/main/java/com/kylecorry/trailsensecore/infrastructure/sensors/AbstractSensor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.kylecorry.trailsensecore.infrastructure.sensors
22

3-
import com.kylecorry.trailsensecore.domain.Accuracy
3+
import com.kylecorry.trailsensecore.domain.units.Quality
44

55
abstract class AbstractSensor: ISensor {
66

7-
override val accuracy = Accuracy.Unknown
7+
override val quality = Quality.Unknown
88

99
private val listeners = mutableSetOf<SensorListener>()
1010
private var started = false

app/src/main/java/com/kylecorry/trailsensecore/infrastructure/sensors/BaseSensor.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,33 @@ import android.hardware.SensorEvent
66
import android.hardware.SensorEventListener
77
import android.hardware.SensorManager
88
import androidx.core.content.getSystemService
9-
import com.kylecorry.trailsensecore.domain.Accuracy
9+
import com.kylecorry.trailsensecore.domain.units.Quality
1010

1111
abstract class BaseSensor(context: Context, private val sensorType: Int, private val sensorDelay: Int): AbstractSensor() {
1212

13-
override val accuracy: Accuracy
13+
override val quality: Quality
1414
get() = _accuracy
1515

16-
private var _accuracy: Accuracy = Accuracy.Unknown
16+
private var _accuracy: Quality = Quality.Unknown
1717

1818
private val sensorManager = context.getSystemService<SensorManager>()
1919
private val sensorListener = object : SensorEventListener {
2020
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
2121
_accuracy = when(accuracy){
22-
SensorManager.SENSOR_STATUS_ACCURACY_LOW -> Accuracy.Low
23-
SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM -> Accuracy.Medium
24-
SensorManager.SENSOR_STATUS_ACCURACY_HIGH -> Accuracy.High
25-
else -> Accuracy.Unknown
22+
SensorManager.SENSOR_STATUS_ACCURACY_LOW -> Quality.Poor
23+
SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM -> Quality.Moderate
24+
SensorManager.SENSOR_STATUS_ACCURACY_HIGH -> Quality.Good
25+
else -> Quality.Unknown
2626
}
2727
}
2828

2929
override fun onSensorChanged(event: SensorEvent) {
3030
handleSensorEvent(event)
3131
_accuracy = when(event.accuracy){
32-
SensorManager.SENSOR_STATUS_ACCURACY_LOW -> Accuracy.Low
33-
SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM -> Accuracy.Medium
34-
SensorManager.SENSOR_STATUS_ACCURACY_HIGH -> Accuracy.High
35-
else -> Accuracy.Unknown
32+
SensorManager.SENSOR_STATUS_ACCURACY_LOW -> Quality.Poor
33+
SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM -> Quality.Moderate
34+
SensorManager.SENSOR_STATUS_ACCURACY_HIGH -> Quality.Good
35+
else -> Quality.Unknown
3636
}
3737
notifyListeners()
3838
}

app/src/main/java/com/kylecorry/trailsensecore/infrastructure/sensors/ISensor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.kylecorry.trailsensecore.infrastructure.sensors
22

3-
import com.kylecorry.trailsensecore.domain.Accuracy
3+
import com.kylecorry.trailsensecore.domain.units.Quality
44

55
interface ISensor {
66

7-
val accuracy: Accuracy
7+
val quality: Quality
88

99
val hasValidReading: Boolean
1010

app/src/main/java/com/kylecorry/trailsensecore/infrastructure/sensors/compass/VectorCompass.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import com.kylecorry.trailsensecore.infrastructure.sensors.accelerometer.Gravity
55
import com.kylecorry.trailsensecore.infrastructure.sensors.accelerometer.IAccelerometer
66
import com.kylecorry.trailsensecore.infrastructure.sensors.accelerometer.LowPassAccelerometer
77
import com.kylecorry.trailsensecore.infrastructure.sensors.magnetometer.LowPassMagnetometer
8-
import com.kylecorry.trailsensecore.domain.Accuracy
98
import com.kylecorry.trailsensecore.domain.geo.AzimuthCalculator
109
import com.kylecorry.trailsensecore.domain.geo.Bearing
1110
import com.kylecorry.trailsensecore.domain.math.MovingAverageFilter
1211
import com.kylecorry.trailsensecore.domain.math.deltaAngle
12+
import com.kylecorry.trailsensecore.domain.units.Quality
1313
import com.kylecorry.trailsensecore.infrastructure.sensors.AbstractSensor
1414
import com.kylecorry.trailsensecore.infrastructure.sensors.SensorChecker
1515
import kotlin.math.max
@@ -22,9 +22,9 @@ class VectorCompass(context: Context, smoothingFactor: Int, private val useTrueN
2222
get() = gotReading
2323
private var gotReading = false
2424

25-
override val accuracy: Accuracy
26-
get() = _accuracy
27-
private var _accuracy: Accuracy = Accuracy.Unknown
25+
override val quality: Quality
26+
get() = _quality
27+
private var _quality = Quality.Unknown
2828

2929
private val sensorChecker = SensorChecker(context)
3030
private val accelerometer: IAccelerometer =
@@ -66,9 +66,9 @@ class VectorCompass(context: Context, smoothingFactor: Int, private val useTrueN
6666
AzimuthCalculator.calculate(accelerometer.acceleration, magnetometer.magneticField)
6767
?: return true
6868

69-
val accelAccuracy = accelerometer.accuracy
70-
val magAccuracy = magnetometer.accuracy
71-
_accuracy = Accuracy.values()[min(accelAccuracy.ordinal, magAccuracy.ordinal)]
69+
val accelAccuracy = accelerometer.quality
70+
val magAccuracy = magnetometer.quality
71+
_quality = Quality.values()[min(accelAccuracy.ordinal, magAccuracy.ordinal)]
7272

7373
updateBearing(newBearing.value)
7474
gotReading = true

app/src/main/java/com/kylecorry/trailsensecore/infrastructure/sensors/gps/GPS.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import android.location.LocationManager
77
import android.os.Handler
88
import android.os.Looper
99
import androidx.core.content.getSystemService
10-
import com.kylecorry.trailsensecore.domain.Accuracy
1110
import com.kylecorry.trailsensecore.domain.geo.Coordinate
11+
import com.kylecorry.trailsensecore.domain.units.Quality
1212
import com.kylecorry.trailsensecore.infrastructure.sensors.AbstractSensor
1313
import com.kylecorry.trailsensecore.infrastructure.system.PermissionUtils
1414
import java.time.Duration
@@ -24,8 +24,8 @@ class GPS(private val context: Context, private val notifyNmeaChanges: Boolean =
2424
override val satellites: Int
2525
get() = _satellites
2626

27-
override val accuracy: Accuracy
28-
get() = _accuracy
27+
override val quality: Quality
28+
get() = _quality
2929

3030
override val horizontalAccuracy: Float?
3131
get() = _horizontalAccuracy
@@ -65,7 +65,7 @@ class GPS(private val context: Context, private val notifyNmeaChanges: Boolean =
6565

6666
private var _altitude = 0f
6767
private var _time = Instant.now()
68-
private var _accuracy: Accuracy = Accuracy.Unknown
68+
private var _quality = Quality.Unknown
6969
private var _horizontalAccuracy: Float? = null
7070
private var _verticalAccuracy: Float? = null
7171
private var _satellites: Int = 0
@@ -142,11 +142,11 @@ class GPS(private val context: Context, private val notifyNmeaChanges: Boolean =
142142
if (location.extras?.containsKey("satellites") == true) location.extras.getInt("satellites") else 0
143143
_altitude = if (location.hasAltitude()) location.altitude.toFloat() else 0f
144144
val accuracy = if (location.hasAccuracy()) location.accuracy else null
145-
_accuracy = when {
146-
accuracy != null && accuracy < 8 -> Accuracy.High
147-
accuracy != null && accuracy < 16 -> Accuracy.Medium
148-
accuracy != null -> Accuracy.Low
149-
else -> Accuracy.Unknown
145+
_quality = when {
146+
accuracy != null && accuracy < 8 -> Quality.Good
147+
accuracy != null && accuracy < 16 -> Quality.Moderate
148+
accuracy != null -> Quality.Poor
149+
else -> Quality.Unknown
150150
}
151151
_horizontalAccuracy = accuracy ?: 0f
152152
_verticalAccuracy =

0 commit comments

Comments
 (0)