Hide some sensors from unsupported devices (#3740)

* Hide some sensors from unsupported devices

* Move UI manager to condition
This commit is contained in:
Daniel Shokouhi 2023-07-31 12:19:14 -07:00 committed by GitHub
parent 644c4ad657
commit 94413801ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 5 deletions

View file

@ -5,6 +5,7 @@ import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import com.google.android.gms.location.ActivityRecognition
@ -208,6 +209,14 @@ class ActivitySensorManager : BroadcastReceiver(), SensorManager {
}
}
override fun hasSensor(context: Context): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
!context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
} else {
true
}
}
override fun requestSensorUpdate(context: Context) {
if (isEnabled(context, activity)) {
val actReg = ActivityRecognition.getClient(context)

View file

@ -35,7 +35,11 @@ class LastAppSensorManager : SensorManager {
}
override fun hasSensor(context: Context): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
return if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
false
} else {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
}
}
@RequiresApi(Build.VERSION_CODES.M)

View file

@ -4,6 +4,7 @@ import android.Manifest
import android.app.UiModeManager
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.media.MediaMetadata
import android.media.session.MediaSessionManager
@ -69,8 +70,12 @@ class NotificationSensorManager : NotificationListenerService(), SensorManager {
return "https://companion.home-assistant.io/docs/core/sensors#notification-sensors"
}
override fun hasSensor(context: Context): Boolean {
val uiManager = context.getSystemService<UiModeManager>()
return uiManager?.currentModeType != Configuration.UI_MODE_TYPE_TELEVISION
return if (!context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
val uiManager = context.getSystemService<UiModeManager>()
uiManager?.currentModeType != Configuration.UI_MODE_TYPE_TELEVISION
} else {
false
}
}
override val name: Int
get() = commonR.string.sensor_name_last_notification

View file

@ -115,6 +115,11 @@ class BatterySensorManager : SensorManager {
)
}
override fun hasSensor(context: Context): Boolean {
val intent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
return intent?.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false) == true
}
override fun requiredPermissions(sensorId: String): Array<String> {
return emptyArray()
}
@ -298,6 +303,7 @@ class BatterySensorManager : SensorManager {
BatteryManager.BATTERY_PLUGGED_AC -> "ac"
BatteryManager.BATTERY_PLUGGED_USB -> "usb"
BatteryManager.BATTERY_PLUGGED_WIRELESS -> "wireless"
BatteryManager.BATTERY_PLUGGED_DOCK -> "dock"
else -> "none"
}
}

View file

@ -2,6 +2,7 @@ package io.homeassistant.companion.android.common.sensors
import android.app.NotificationManager
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import androidx.annotation.ChecksSdkIntAtLeast
import androidx.annotation.RequiresApi
@ -46,7 +47,11 @@ class DNDSensorManager : SensorManager {
@ChecksSdkIntAtLeast(api = Build.VERSION_CODES.M)
override fun hasSensor(context: Context): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
return if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
false
} else {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
}
}
private fun updateDNDState(context: Context) {

View file

@ -2,6 +2,8 @@ package io.homeassistant.companion.android.common.sensors
import android.app.AlarmManager
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import androidx.core.content.getSystemService
import io.homeassistant.companion.android.database.AppDatabase
@ -11,6 +13,7 @@ import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
import java.util.GregorianCalendar
import java.util.Locale
import java.util.TimeZone
import io.homeassistant.companion.android.common.R as commonR
@ -40,6 +43,14 @@ class NextAlarmManager : SensorManager {
return listOf(nextAlarm)
}
override fun hasSensor(context: Context): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
!context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
} else {
true
}
}
override fun requiredPermissions(sensorId: String): Array<String> {
return emptyArray()
}
@ -89,7 +100,7 @@ class NextAlarmManager : SensorManager {
local = cal.time.toString()
val dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
val sdf = SimpleDateFormat(dateFormat)
val sdf = SimpleDateFormat(dateFormat, Locale.getDefault())
sdf.timeZone = TimeZone.getTimeZone("UTC")
utc = sdf.format(Date(triggerTime))
} else {