feat(android): Add voice interaction service for app launch
This commit is contained in:
@@ -32,6 +32,18 @@
|
||||
android:allowBackup="false"
|
||||
android:fullBackupContent="false"
|
||||
android:usesCleartextTraffic="true">
|
||||
<service
|
||||
android:name=".ConduitVoiceInteractionSessionService"
|
||||
android:permission="android.permission.BIND_VOICE_INTERACTION"
|
||||
android:exported="true">
|
||||
<meta-data
|
||||
android:name="android.voice_interaction"
|
||||
android:resource="@xml/voice_interaction_service" />
|
||||
<intent-filter>
|
||||
<action android:name="android.service.voice.VoiceInteractionService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package app.cogwheel.conduit
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.service.voice.VoiceInteractionSession
|
||||
import android.os.Bundle
|
||||
import android.app.assist.AssistStructure
|
||||
import android.app.assist.AssistContent
|
||||
|
||||
class ConduitVoiceInteractionSession(context: Context) : VoiceInteractionSession(context) {
|
||||
|
||||
override fun onHandleAssist(
|
||||
data: Bundle?,
|
||||
structure: AssistStructure?,
|
||||
content: AssistContent?
|
||||
) {
|
||||
super.onHandleAssist(data, structure, content)
|
||||
|
||||
android.util.Log.d("ConduitVoiceSession", "onHandleAssist called")
|
||||
|
||||
// Launch the main activity when the assistant is triggered
|
||||
val intent = Intent(context, MainActivity::class.java)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package app.cogwheel.conduit
|
||||
|
||||
import android.service.voice.VoiceInteractionSession
|
||||
import android.service.voice.VoiceInteractionSessionService
|
||||
import android.os.Bundle
|
||||
|
||||
class ConduitVoiceInteractionSessionService : VoiceInteractionSessionService() {
|
||||
override fun onNewSession(args: Bundle?): VoiceInteractionSession {
|
||||
return ConduitVoiceInteractionSession(this)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:sessionService="app.cogwheel.conduit.ConduitVoiceInteractionSessionService"
|
||||
android:recognitionService="android.speech.RecognitionService"
|
||||
android:settingsActivity="app.cogwheel.conduit.MainActivity"
|
||||
android:supportsAssist="true"
|
||||
android:supportsLocalInteraction="true" />
|
||||
Reference in New Issue
Block a user