mirror of
https://github.com/home-assistant/android
synced 2024-09-19 16:11:37 +00:00
Allow sensors to be disabled by default until user enables them (#875)
* Allow sensors to be disabled by default until user enables them * Review comments
This commit is contained in:
parent
986655c912
commit
c221e85fa4
|
@ -100,6 +100,8 @@ class ActivitySensorManager : BroadcastReceiver(), SensorManager {
|
|||
return "on_foot"
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_activity
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ class GeocodeSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_geolocation
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
|
@ -364,6 +364,9 @@ class LocationSensorManager : BroadcastReceiver(), SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = true
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_location
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@ class AudioSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_audio
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@ class BatterySensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = true
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_battery
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
|
@ -20,6 +20,8 @@ class BluetoothSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_bluetooth
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
|
@ -17,6 +17,8 @@ class DNDSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_dnd
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@ class LastRebootSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_last_reboot
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ class LightSensorManager : SensorManager, SensorEventListener {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_light
|
||||
|
||||
|
|
|
@ -18,6 +18,8 @@ class NetworkSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = true
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_network
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
|
@ -23,6 +23,8 @@ class NextAlarmManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_alarm
|
||||
|
||||
|
|
|
@ -34,6 +34,8 @@ class PhoneStateSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_phone
|
||||
|
||||
|
|
|
@ -28,6 +28,9 @@ class PressureSensorManager : SensorManager, SensorEventListener {
|
|||
private lateinit var latestContext: Context
|
||||
private lateinit var mySensorManager: android.hardware.SensorManager
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_pressure
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@ class ProximitySensorManager : SensorManager, SensorEventListener {
|
|||
private lateinit var mySensorManager: android.hardware.SensorManager
|
||||
private var maxRange: Int = 0
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_proximity
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.preference.contains
|
|||
import io.homeassistant.companion.android.R
|
||||
import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor
|
||||
import io.homeassistant.companion.android.database.AppDatabase
|
||||
import io.homeassistant.companion.android.database.sensor.Sensor
|
||||
import io.homeassistant.companion.android.database.sensor.SensorDao
|
||||
|
||||
class SensorDetailFragment(
|
||||
|
@ -51,9 +52,10 @@ class SensorDetailFragment(
|
|||
findPreference<SwitchPreference>("enabled")?.let {
|
||||
val dao = sensorDao.get(basicSensor.id)
|
||||
val perm = sensorManager.checkPermission(requireContext())
|
||||
if (dao == null) {
|
||||
if (dao == null && sensorManager.enabledByDefault) {
|
||||
it.isChecked = perm
|
||||
} else {
|
||||
}
|
||||
if (dao != null) {
|
||||
it.isChecked = dao.enabled && perm
|
||||
}
|
||||
updateSensorEntity(it.isChecked)
|
||||
|
@ -148,10 +150,13 @@ class SensorDetailFragment(
|
|||
private fun updateSensorEntity(
|
||||
isEnabled: Boolean
|
||||
) {
|
||||
val sensorEntity = sensorDao.get(basicSensor.id)
|
||||
var sensorEntity = sensorDao.get(basicSensor.id)
|
||||
if (sensorEntity != null) {
|
||||
sensorEntity.enabled = isEnabled
|
||||
sensorDao.update(sensorEntity)
|
||||
} else {
|
||||
sensorEntity = Sensor(basicSensor.id, isEnabled, false, "")
|
||||
sensorDao.add(sensorEntity)
|
||||
}
|
||||
refreshSensorData()
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ interface SensorManager {
|
|||
|
||||
val name: Int
|
||||
val availableSensors: List<BasicSensor>
|
||||
val enabledByDefault: Boolean
|
||||
|
||||
data class BasicSensor(
|
||||
val id: String,
|
||||
|
@ -36,17 +37,17 @@ interface SensorManager {
|
|||
var sensor = sensorDao.get(sensorId)
|
||||
val permission = checkPermission(context)
|
||||
|
||||
// If we haven't created the entity yet do so and default to enabled
|
||||
// If we haven't created the entity yet do so and default to enabled if required
|
||||
if (sensor == null) {
|
||||
sensor = Sensor(sensorId, permission, false, "")
|
||||
sensor = Sensor(sensorId, permission && enabledByDefault, false, "")
|
||||
sensorDao.add(sensor)
|
||||
}
|
||||
|
||||
// If we don't have permission but we are still enabled then we aren't really enabled.
|
||||
if (sensor.enabled && !permission) {
|
||||
sensor.enabled = false
|
||||
sensorDao.update(sensor)
|
||||
}
|
||||
if (sensor.enabled && !permission) {
|
||||
sensor.enabled = false
|
||||
sensorDao.update(sensor)
|
||||
}
|
||||
|
||||
return sensor.enabled
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ class SensorReceiver : BroadcastReceiver() {
|
|||
try {
|
||||
manager.requestSensorUpdate(context)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Issue requesting updates for ${manager.name}", e)
|
||||
Log.e(TAG, "Issue requesting updates for ${context.getString(manager.name)}", e)
|
||||
}
|
||||
manager.availableSensors.forEach { basicSensor ->
|
||||
val fullSensor = sensorDao.getFull(basicSensor.id)
|
||||
|
|
|
@ -26,6 +26,9 @@ class StepsSensorManager : SensorManager, SensorEventListener {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_steps
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ class StorageSensorManager : SensorManager {
|
|||
}
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_storage
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
|
@ -11,6 +11,8 @@ class ActivitySensorManager : BroadcastReceiver(), SensorManager {
|
|||
// Noop
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_activity
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ class GeocodeSensorManager : SensorManager {
|
|||
)
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_geolocation
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@ class LocationSensorManager : BroadcastReceiver(), SensorManager {
|
|||
// Noop
|
||||
}
|
||||
|
||||
override val enabledByDefault: Boolean
|
||||
get() = false
|
||||
override val name: Int
|
||||
get() = R.string.sensor_name_location
|
||||
override val availableSensors: List<SensorManager.BasicSensor>
|
||||
|
|
Loading…
Reference in a new issue