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"> +