Compare commits

..

View file

@ -2,6 +2,7 @@
package nl.eddydevink.sylda
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
@ -12,13 +13,14 @@ import android.widget.Button
import android.widget.ImageButton
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class MainActivity : AppCompatActivity(), BleCallbacks {
companion object {
private const val REQUEST_SETTINGS = 1
private const val POST_SETTINGS_RESCAN_MS = 500L
private const val ON_RESUME_SCAN_DELAY_MS = 300L
}
@ -32,25 +34,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private var lastTheme: String? = null
private var triedPermissions = false
private val settingsLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == SettingsActivity.RESULT_SCAN) {
triedPermissions = false
manager.disconnect()
manager.resetTriedAddresses()
manager.updateKeys()
handler.postDelayed({ manager.startScan() }, POST_SETTINGS_RESCAN_MS)
}
}
private val permissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { grants ->
if (grants.values.all { it }) {
manager.startScan()
} else {
triedPermissions = false
onStatusChanged(BleStatus.PermissionsDenied)
}
}
override fun onStatusChanged(status: BleStatus) {
when (status) {
BleStatus.Connected -> {
@ -116,10 +99,10 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
val settingsContainer = findViewById<android.view.View>(R.id.settingsContainer)
settingsContainer.setOnClickListener {
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
}
findViewById<ImageButton>(R.id.settingsButton).setOnClickListener {
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
}
setupRelayButton()
setupRelay2Button()
@ -127,6 +110,18 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
relay2Button.isEnabled = true
}
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_SETTINGS && resultCode == SettingsActivity.RESULT_SCAN) {
triedPermissions = false
manager.disconnect()
manager.resetTriedAddresses()
manager.updateKeys()
handler.postDelayed({ manager.startScan() }, POST_SETTINGS_RESCAN_MS)
}
}
override fun onResume() {
super.onResume()
val current = PrefsHelper.getPrefs(this).getString(PrefsHelper.PREF_THEME, "system") ?: "system"
@ -140,7 +135,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
if (!manager.hasPermissions()) {
if (!triedPermissions) {
triedPermissions = true
permissionLauncher.launch(manager.getRequiredPermissions())
ActivityCompat.requestPermissions(this, manager.getRequiredPermissions(), 1)
}
return
}
@ -155,6 +150,19 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
manager.stopScan()
}
@Deprecated("Deprecated in Java")
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 1) {
if (grantResults.all { it == PackageManager.PERMISSION_GRANTED }) {
manager.startScan()
} else {
triedPermissions = false
onStatusChanged(BleStatus.PermissionsDenied)
}
}
}
private fun setupRelayButton() {
relay1Button.setOnClickListener(null)
loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold)
@ -222,7 +230,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
if (isFinishing || isDestroyed || !lifecycle.currentState.isAtLeast(androidx.lifecycle.Lifecycle.State.RESUMED)) return@runOnUiThread
if (espVersion.isNotEmpty() && espVersion != appVersion) {
Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_SHORT).show()
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
}
}
}