mirror of
https://github.com/home-assistant/android
synced 2024-10-06 16:19:38 +00:00
Add Android OS sensors (#3449)
* Add Android OS sensors * Rework review findings
This commit is contained in:
parent
94881a23d2
commit
b4f877aa2d
|
@ -11,6 +11,7 @@ import android.net.wifi.WifiManager
|
|||
import android.os.PowerManager
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import io.homeassistant.companion.android.BuildConfig
|
||||
import io.homeassistant.companion.android.common.sensors.AndroidOsSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.AudioSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BatterySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
|
@ -52,6 +53,7 @@ class SensorReceiver : SensorReceiverBase() {
|
|||
val MANAGERS = listOf(
|
||||
ActivitySensorManager(),
|
||||
AndroidAutoSensorManager(),
|
||||
AndroidOsSensorManager(),
|
||||
AppSensorManager(),
|
||||
AudioSensorManager(),
|
||||
BatterySensorManager(),
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
package io.homeassistant.companion.android.common.sensors
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
class AndroidOsSensorManager : SensorManager {
|
||||
|
||||
companion object {
|
||||
val osVersion = SensorManager.BasicSensor(
|
||||
"android_os_version",
|
||||
"sensor",
|
||||
commonR.string.basic_sensor_name_android_os_version,
|
||||
commonR.string.sensor_description_android_os_version,
|
||||
"mdi:android",
|
||||
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC
|
||||
)
|
||||
val osSecurityPatch = SensorManager.BasicSensor(
|
||||
"android_os_security_patch",
|
||||
"sensor",
|
||||
commonR.string.basic_sensor_name_android_os_security_patch,
|
||||
commonR.string.sensor_description_android_os_security_patch,
|
||||
"mdi:security",
|
||||
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC
|
||||
)
|
||||
}
|
||||
|
||||
override fun docsLink(): String {
|
||||
return "https://companion.home-assistant.io/docs/core/sensors#android-os-sensors"
|
||||
}
|
||||
|
||||
override val name: Int
|
||||
get() = commonR.string.sensor_name_android_os
|
||||
|
||||
override suspend fun getAvailableSensors(context: Context): List<SensorManager.BasicSensor> {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
listOf(osVersion, osSecurityPatch)
|
||||
} else {
|
||||
listOf(osVersion)
|
||||
}
|
||||
}
|
||||
|
||||
override fun requiredPermissions(sensorId: String): Array<String> {
|
||||
return arrayOf()
|
||||
}
|
||||
|
||||
override fun requestSensorUpdate(
|
||||
context: Context
|
||||
) {
|
||||
checkState(context, osVersion)
|
||||
checkState(context, osSecurityPatch)
|
||||
}
|
||||
|
||||
private fun checkState(
|
||||
context: Context,
|
||||
sensor: SensorManager.BasicSensor
|
||||
) {
|
||||
if (!isEnabled(context, sensor)) {
|
||||
return
|
||||
}
|
||||
|
||||
onSensorUpdated(
|
||||
context,
|
||||
sensor,
|
||||
when (sensor.id) {
|
||||
osVersion.id -> Build.VERSION.RELEASE
|
||||
osSecurityPatch.id -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
Build.VERSION.SECURITY_PATCH
|
||||
} else {
|
||||
"unknown"
|
||||
}
|
||||
else -> {
|
||||
"unknown"
|
||||
}
|
||||
},
|
||||
sensor.statelessIcon,
|
||||
mapOf()
|
||||
)
|
||||
}
|
||||
}
|
|
@ -42,6 +42,8 @@
|
|||
<string name="basic_sensor_name_activity">Detected Activity</string>
|
||||
<string name="basic_sensor_name_alarm">Next Alarm</string>
|
||||
<string name="basic_sensor_name_android_auto">Android Auto</string>
|
||||
<string name="basic_sensor_name_android_os_version">OS Version</string>
|
||||
<string name="basic_sensor_name_android_os_security_patch">Security Patch</string>
|
||||
<string name="basic_sensor_name_app_importance">App Importance</string>
|
||||
<string name="basic_sensor_name_app_inactive">App Inactive</string>
|
||||
<string name="basic_sensor_name_app_memory">App Memory</string>
|
||||
|
@ -497,6 +499,8 @@
|
|||
<string name="sensor_description_active_notification_count">Total count of active notifications that are visible to the user including silent, persistent and the Sensor Worker notifications.</string>
|
||||
<string name="sensor_description_app_importance">If the app is in the foreground, background or any other state it can be.</string>
|
||||
<string name="sensor_description_android_auto">If the phone is currently connected to an Android Auto head unit.</string>
|
||||
<string name="sensor_description_android_os_version">Android OS version.</string>
|
||||
<string name="sensor_description_android_os_security_patch">Android OS security patch.</string>
|
||||
<string name="sensor_description_app_inactive">Whether the app is currently considered inactive by the system</string>
|
||||
<string name="sensor_description_app_memory">Total used and available memory for the app</string>
|
||||
<string name="sensor_description_app_rx_gb">App Rx GB since last device reboot</string>
|
||||
|
@ -577,6 +581,7 @@
|
|||
<string name="sensor_name_activity">Activity Sensors</string>
|
||||
<string name="sensor_name_alarm">Alarm Sensor</string>
|
||||
<string name="sensor_name_android_auto">Android Auto Sensors</string>
|
||||
<string name="sensor_name_android_os">Android OS Sensors</string>
|
||||
<string name="sensor_name_app_sensor">App Sensors</string>
|
||||
<string name="sensor_name_audio_mode">Audio Mode</string>
|
||||
<string name="sensor_name_audio">Audio Sensors</string>
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.core.app.TaskStackBuilder
|
|||
import androidx.core.net.toUri
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import io.homeassistant.companion.android.BuildConfig
|
||||
import io.homeassistant.companion.android.common.sensors.AndroidOsSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.AudioSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BatterySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
|
@ -54,6 +55,7 @@ class SensorReceiver : SensorReceiverBase() {
|
|||
companion object {
|
||||
const val TAG = "SensorReceiver"
|
||||
private val allManager = listOf(
|
||||
AndroidOsSensorManager(),
|
||||
AppSensorManager(),
|
||||
AudioSensorManager(),
|
||||
BatterySensorManager(),
|
||||
|
|
Loading…
Reference in a new issue