app/src/main/java/com/example/jarvis_stts/MainActivity.kt aktualisiert
This commit is contained in:
@@ -16,6 +16,9 @@ import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import okhttp3.*
|
||||
import java.util.Locale
|
||||
import ai.picovoice.porcupine.PorcupineManager
|
||||
import ai.picovoice.porcupine.PorcupineManagerCallback
|
||||
import ai.picovoice.porcupine.Porcupine
|
||||
|
||||
class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {
|
||||
|
||||
@@ -23,6 +26,7 @@ class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {
|
||||
private lateinit var tvStatus: TextView
|
||||
private lateinit var etUrl: EditText
|
||||
private lateinit var spinnerVoices: Spinner
|
||||
private var porcupineManager: PorcupineManager? = null
|
||||
|
||||
private val client = OkHttpClient()
|
||||
private var webSocket: WebSocket? = null
|
||||
@@ -82,6 +86,8 @@ class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO), 1)
|
||||
}
|
||||
// Wake-Word Engine starten, sobald die App offen ist
|
||||
initWakeWord()
|
||||
}
|
||||
|
||||
private fun connectToServer(url: String) {
|
||||
@@ -152,7 +158,42 @@ class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {
|
||||
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, "")
|
||||
}
|
||||
|
||||
private fun initWakeWord() {
|
||||
try {
|
||||
// HIER DEINEN PICOVOICE ACCESS KEY EINTRAGEN:
|
||||
val accessKey = "DEIN_KOPIERTER_PICOVOICE_KEY"
|
||||
|
||||
porcupineManager = PorcupineManager.Builder()
|
||||
.setAccessKey(accessKey)
|
||||
// Du kannst hier auch .COMPUTER, .BUMBLEBEE oder .PORCUPINE wählen
|
||||
.setKeyword(Porcupine.BuiltInKeyword.JARVIS)
|
||||
.build(applicationContext, PorcupineManagerCallback { keywordIndex ->
|
||||
if (keywordIndex == 0) {
|
||||
// Wake-Word wurde erkannt!
|
||||
runOnUiThread {
|
||||
tvStatus.text = "Wake-Word erkannt! Höre zu..."
|
||||
// Startet sofort die Google-Spracherkennung für deinen Befehl
|
||||
startVoiceInput()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// Startet das Dauerlauschen im Hintergrund
|
||||
porcupineManager?.start()
|
||||
Log.d("WakeWord", "Porcupine lauscht auf 'Jarvis'...")
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e("WakeWord", "Fehler beim Starten von Porcupine: ${e.message}")
|
||||
runOnUiThread {
|
||||
Toast.makeText(this, "Wake-Word Fehler: ${e.message}", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
// Wichtig: Beim Schließen der App aufräumen!
|
||||
porcupineManager?.stop()
|
||||
porcupineManager?.delete()
|
||||
webSocket?.close(1000, "App Ende")
|
||||
tts.stop()
|
||||
tts.shutdown()
|
||||
|
||||
Reference in New Issue
Block a user