Skip to content

Commit

Permalink
Update/replace deprecations in app module (#3661)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpelgrom committed Jul 17, 2023
1 parent 33dfc69 commit bc10363
Show file tree
Hide file tree
Showing 52 changed files with 233 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,11 @@ class HighAccuracyLocationService : Service() {

@SuppressLint("MissingPermission")
private fun requestLocationUpdates(intervalInSeconds: Int) {
val request = LocationRequest.create()

val intervalInMS = (intervalInSeconds * 1000).toLong()
request.interval = intervalInMS
request.fastestInterval = intervalInMS / 2
request.priority = Priority.PRIORITY_HIGH_ACCURACY
val request = LocationRequest.Builder(intervalInMS)
.setMinUpdateIntervalMillis(intervalInMS / 2)
.setPriority(Priority.PRIORITY_HIGH_ACCURACY)
.build()

fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient?.requestLocationUpdates(request, getLocationUpdateIntent())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.homeassistant.companion.android.onboarding

import android.annotation.SuppressLint
import android.util.Log
import com.google.android.gms.wearable.MessageEvent
import com.google.android.gms.wearable.PutDataMapRequest
Expand All @@ -12,6 +13,7 @@ import kotlinx.coroutines.runBlocking
import javax.inject.Inject

@AndroidEntryPoint
@SuppressLint("VisibleForTests") // https://issuetracker.google.com/issues/239451111
class WearOnboardingListener : WearableListenerService() {

@Inject
Expand All @@ -34,7 +36,7 @@ class WearOnboardingListener : WearableListenerService() {
if (url != null) {
// Put as DataMap in data layer
val putDataReq: PutDataRequest = PutDataMapRequest.create("/home_assistant_instance").run {
dataMap.putString("name", url?.host.toString())
dataMap.putString("name", url.host.toString())
dataMap.putString("url", url.toString())
setUrgent()
asPutDataRequest()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ class GeocodeSensorManager : SensorManager {
)
}
} else {
@Suppress("DEPRECATION")
getFromLocation(latitude, longitude, maxResults).orEmpty()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,9 @@ class LocationSensorManager : LocationSensorManagerBase() {
ACTION_PROCESS_GEO -> handleGeoUpdate(intent)
ACTION_REQUEST_ACCURATE_LOCATION_UPDATE -> requestSingleAccurateLocation()
ACTION_FORCE_HIGH_ACCURACY -> {
var command = intent.extras?.get("command")?.toString()
when (command) {
when (val command = intent.extras?.getString("command")) {
DeviceCommandData.TURN_ON, DeviceCommandData.TURN_OFF, MessagingManager.FORCE_ON -> {
var turnOn = command != DeviceCommandData.TURN_OFF
val turnOn = command != DeviceCommandData.TURN_OFF
if (turnOn) {
Log.d(TAG, "Forcing of high accuracy mode enabled")
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import io.homeassistant.companion.android.R
import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale
import io.homeassistant.companion.android.common.R as commonR

@RequiresApi(Build.VERSION_CODES.R)
Expand Down Expand Up @@ -43,7 +45,7 @@ object DefaultButtonControl : HaControl {
"input_button" -> context.getString(commonR.string.domain_input_button)
"scene" -> context.getString(commonR.string.domain_scene)
"script" -> context.getString(commonR.string.domain_script)
else -> entity.domain.replaceFirstChar { it.titlecase() }
else -> entity.domain.capitalize(Locale.getDefault())
}

override suspend fun performAction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ import android.service.controls.actions.ControlAction
import android.service.controls.templates.ControlButton
import android.service.controls.templates.ToggleTemplate
import androidx.annotation.RequiresApi
import androidx.compose.ui.text.capitalize
import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale
import io.homeassistant.companion.android.common.R as commonR

@RequiresApi(Build.VERSION_CODES.R)
Expand Down Expand Up @@ -47,7 +50,7 @@ object DefaultSwitchControl : HaControl {
"automation" -> context.getString(commonR.string.domain_automation)
"input_boolean" -> context.getString(commonR.string.domain_input_boolean)
"switch" -> context.getString(commonR.string.domain_switch)
else -> entity.domain.replaceFirstChar { it.titlecase() }
else -> entity.domain.capitalize(Locale.getDefault())
}

override suspend fun performAction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale

@RequiresApi(Build.VERSION_CODES.R)
object HaFailedControl : HaControl {
Expand All @@ -35,7 +37,7 @@ object HaFailedControl : HaControl {
DeviceTypes.TYPE_UNKNOWN

override fun getDomainString(context: Context, entity: Entity<Map<String, Any>>): String =
entity.domain.replaceFirstChar { it.titlecase() }
entity.domain.capitalize(Locale.getDefault())

override suspend fun performAction(
integrationRepository: IntegrationRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.Ndef
import android.nfc.tech.NdefFormatable
import android.os.Build
import io.homeassistant.companion.android.BuildConfig
import java.io.IOException

Expand All @@ -20,7 +21,12 @@ object NFCUtil {
return null
}

val rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
val rawMessages = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, NdefMessage::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
}
val ndefMessage = rawMessages?.get(0) as NdefMessage?
return ndefMessage?.records?.get(0)?.toUri()
}
Expand All @@ -35,7 +41,12 @@ object NFCUtil {
val nfcMessage = NdefMessage(arrayOf(nfcRecord) + applicationRecords)
val nfcFallbackMessage = NdefMessage(arrayOf(nfcRecord))
intent?.let {
val tag = it.getParcelableExtra<Tag>(NfcAdapter.EXTRA_TAG)
val tag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
it.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag::class.java)
} else {
@Suppress("DEPRECATION")
it.getParcelableExtra(NfcAdapter.EXTRA_TAG)
}
return writeMessageToTag(nfcMessage, nfcFallbackMessage, tag)
}
return false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -839,10 +839,10 @@ class MessagingManager @Inject constructor(
name,
value.split(";").map { it.toBoolean() }.toBooleanArray()
)
"char" -> intent.putExtra(name, value[0].toChar())
"char" -> intent.putExtra(name, value[0])
"char[]" -> intent.putExtra(
name,
value.split(";").map { it[0].toChar() }.toCharArray()
value.split(";").map { it[0] }.toCharArray()
)
"String" -> intent.putExtra(name, value)
"String.urlencoded", "urlencoded" -> intent.putExtra(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.homeassistant.companion.android.notifications
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Handler
import android.util.Log
import android.widget.Toast
Expand Down Expand Up @@ -44,8 +45,12 @@ class NotificationActionReceiver : BroadcastReceiver() {
lateinit var notificationDao: NotificationDao

override fun onReceive(context: Context, intent: Intent) {
val notificationAction =
intent.getParcelableExtra<NotificationAction>(EXTRA_NOTIFICATION_ACTION)
val notificationAction = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra(EXTRA_NOTIFICATION_ACTION, NotificationAction::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableExtra(EXTRA_NOTIFICATION_ACTION)
}

if (notificationAction == null) {
Log.e(TAG, "Failed to get notification action.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.homeassistant.companion.android.notifications
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationManagerCompat
import dagger.hilt.android.AndroidEntryPoint
Expand Down Expand Up @@ -33,8 +34,14 @@ class NotificationDeleteReceiver : BroadcastReceiver() {
@Inject
lateinit var notificationDao: NotificationDao

@Suppress("UNCHECKED_CAST")
override fun onReceive(context: Context, intent: Intent) {
val hashData = intent.getSerializableExtra(EXTRA_DATA) as HashMap<String, *>
val hashData = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getSerializableExtra(EXTRA_DATA, HashMap::class.java)
} else {
@Suppress("DEPRECATION")
intent.getSerializableExtra(EXTRA_DATA)
} as HashMap<String, *>
val group = intent.getStringExtra(EXTRA_NOTIFICATION_GROUP)
val groupId = intent.getIntExtra(EXTRA_NOTIFICATION_GROUP_ID, -1)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
Expand All @@ -13,6 +12,7 @@ import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.compose.ui.platform.ComposeView
import androidx.core.content.getSystemService
Expand All @@ -30,10 +30,8 @@ import io.homeassistant.companion.android.common.R as commonR
@AndroidEntryPoint
class MobileAppIntegrationFragment : Fragment() {

companion object {
private const val BACKGROUND_REQUEST = 99

private const val LOCATION_REQUEST_CODE = 0
private val requestLocationPermissions = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
onLocationPermissionResult(it)
}

private var dialog: AlertDialog? = null
Expand Down Expand Up @@ -92,54 +90,43 @@ class MobileAppIntegrationFragment : Fragment() {

private fun requestPermissions(sensorId: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
this@MobileAppIntegrationFragment.requestPermissions(
requestLocationPermissions.launch(
LocationSensorManager().requiredPermissions(sensorId)
.toList().minus(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
.toTypedArray(),
LOCATION_REQUEST_CODE
.toTypedArray()
)
} else {
this@MobileAppIntegrationFragment.requestPermissions(
LocationSensorManager().requiredPermissions(sensorId),
LOCATION_REQUEST_CODE
)
requestLocationPermissions.launch(LocationSensorManager().requiredPermissions(sensorId))
}
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
private fun onLocationPermissionResult(
results: Map<String, Boolean>
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)

dialog?.dismiss()

if (permissions.contains(Manifest.permission.ACCESS_FINE_LOCATION) &&
if (
results[Manifest.permission.ACCESS_FINE_LOCATION] == true &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
) {
requestPermissions(
arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION),
LOCATION_REQUEST_CODE
)
requestLocationPermissions.launch(arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION))
return
}

if (requestCode == LOCATION_REQUEST_CODE) {
val hasPermission = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
viewModel.setLocationTracking(hasPermission)
requestBackgroundAccess()
}
val hasPermission = results.values.all { it }
viewModel.setLocationTracking(hasPermission)
requestBackgroundAccess()
}

@SuppressLint("BatteryLife")
private fun requestBackgroundAccess() {
val intent: Intent
if (!isIgnoringBatteryOptimizations()) {
intent = Intent(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Uri.parse("package:${activity?.packageName}")
startActivity(
Intent(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Uri.parse("package:${activity?.packageName}")
)
)
startActivityForResult(intent, BACKGROUND_REQUEST)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ abstract class TileExtensions : TileService() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
vm?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
} else {
@Suppress("DEPRECATION")
vm?.vibrate(500)
}
}
Expand Down Expand Up @@ -282,6 +283,7 @@ abstract class TileExtensions : TileService() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
vm?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK))
} else {
@Suppress("DEPRECATION")
vm?.vibrate(1000)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,12 @@ class LastAppSensorManager : SensorManager {

try {
val pm = context.packageManager
val appInfo = pm.getApplicationInfo(lastApp, PackageManager.GET_META_DATA)
val appInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
pm.getApplicationInfo(lastApp, PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA.toLong()))
} else {
@Suppress("DEPRECATION")
pm.getApplicationInfo(lastApp, PackageManager.GET_META_DATA)
}
appLabel = pm.getApplicationLabel(appInfo).toString()
} catch (e: Exception) {
Log.e(TAG, "Unable to get package label for: $lastApp", e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ class NotificationSensorManager : NotificationListenerService(), SensorManager {
private fun mappedBundle(bundle: Bundle, keySuffix: String = ""): Map<String, Any?>? {
return try {
bundle.keySet().associate { key ->
@Suppress("DEPRECATION")
val keyValue = when (val value = bundle.get(key)) {
is Array<*> -> {
if (value.all { it is Bundle }) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class SensorWorker(
.build()

WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, sensorWorker)
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, sensorWorker)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class ManageControlsSettingsFragment : Fragment() {
setHasOptionsMenu(true)
}

@Deprecated("Deprecated in Java")
override fun onPrepareOptionsMenu(menu: Menu) {
super.onPrepareOptionsMenu(menu)

Expand Down
Loading

0 comments on commit bc10363

Please sign in to comment.