diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0db2a533b..81bee8d3c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -403,6 +403,7 @@
android:theme="@style/Theme.HomeAssistant.Assist">
+
diff --git a/app/src/main/java/io/homeassistant/companion/android/assist/AssistActivity.kt b/app/src/main/java/io/homeassistant/companion/android/assist/AssistActivity.kt
index 0bb3b5055..11f644089 100644
--- a/app/src/main/java/io/homeassistant/companion/android/assist/AssistActivity.kt
+++ b/app/src/main/java/io/homeassistant/companion/android/assist/AssistActivity.kt
@@ -82,6 +82,9 @@ class AssistActivity : BaseActivity() {
},
startListening = if (intent.hasExtra(EXTRA_START_LISTENING)) {
intent.getBooleanExtra(EXTRA_START_LISTENING, true)
+ } else if (intent.action == Intent.ACTION_VOICE_COMMAND) {
+ // Always start listening if triggered via the voice command (e.g., from a BT headset).
+ true
} else {
null
}
@@ -134,6 +137,11 @@ class AssistActivity : BaseActivity() {
viewModel.onPause()
}
+ override fun onDestroy() {
+ super.onDestroy()
+ viewModel.onDestroy()
+ }
+
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
this.intent = intent
@@ -154,6 +162,7 @@ class AssistActivity : BaseActivity() {
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
} else {
setShowWhenLocked(true)
+ setTurnScreenOn(true)
}
} else {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
diff --git a/app/src/main/java/io/homeassistant/companion/android/assist/AssistViewModel.kt b/app/src/main/java/io/homeassistant/companion/android/assist/AssistViewModel.kt
index edef30871..9f6c47571 100644
--- a/app/src/main/java/io/homeassistant/companion/android/assist/AssistViewModel.kt
+++ b/app/src/main/java/io/homeassistant/companion/android/assist/AssistViewModel.kt
@@ -125,7 +125,7 @@ class AssistViewModel @Inject constructor(
fun onNewIntent(intent: Intent?, lockedMatches: Boolean) {
if (
(intent?.flags != null && intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) ||
- intent?.action in listOf(Intent.ACTION_ASSIST, "android.intent.action.VOICE_ASSIST")
+ intent?.action in listOf(Intent.ACTION_ASSIST, "android.intent.action.VOICE_ASSIST", Intent.ACTION_VOICE_COMMAND)
) {
if (!lockedMatches && inputMode != AssistInputMode.BLOCKED) {
_conversation.clear()
@@ -330,6 +330,11 @@ class AssistViewModel @Inject constructor(
fun onPause() {
requestPermission = null
stopRecording()
+ }
+
+ fun onDestroy() {
+ requestPermission = null
+ stopRecording()
stopPlayback()
}
}
diff --git a/automotive/src/main/AndroidManifest.xml b/automotive/src/main/AndroidManifest.xml
index 7d9e53f65..b7efa69f0 100644
--- a/automotive/src/main/AndroidManifest.xml
+++ b/automotive/src/main/AndroidManifest.xml
@@ -421,6 +421,7 @@
android:theme="@style/Theme.HomeAssistant.Assist">
+