Automatische Wiederholung der Spracheingabe: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
  Package Name: com.google.android.googlequicksearchbox
  Package Name: com.google.android.googlequicksearchbox
  Klassen Name: *
  Klassen Name: *
Die erste Aktion setzt eine Zählvariable <code>count</count> auf Null (Action Typ: Script)
Die erste Aktion setzt eine Zählvariable <code>count</count> auf Null (Action Typ: Script)
  count=0
  count=0
Danach beginnt eine Schleife mit der zweiten Aktion, diese holt den Text aus dem aktiven Fenster (Action Typ: Steuere UI).
Danach beginnt eine Schleife mit der zweiten Aktion, diese holt den Text aus dem aktiven Fenster (Action Typ: Steuere UI).
Als Script wird eingetragen:
Als Script wird eingetragen:
  text=getTextInActiveWindow()
  text=getTextInActiveWindow()
Eine Bedingung prüft anschließend, ob die Variable ''text'' den String ''Bitte sag es'' enthält (Condition Typ: Expression)
Eine Bedingung prüft anschließend, ob die Variable ''text'' den String ''Bitte sag es'' enthält (Condition Typ: Expression)
Als Expression wird eingetragen
Als Expression wird eingetragen
   contains(text,"Bitte sag es")
   contains(text,"Bitte sag es")
Die Verzweigung ''Nein'' überspringt einen ganzen Block von Aktionen, es wird eine letzte Aktion innerhalb der Schleife ausgeführt (Aktion Typ: Steuere UI).
Die Verzweigung ''Nein'' überspringt einen ganzen Block von Aktionen, es wird eine letzte Aktion innerhalb der Schleife ausgeführt (Aktion Typ: Steuere UI).
Als Script wird eingetragen:
Als Script wird eingetragen:
  sleep(2000)
  sleep(2000)
Danach wird im Flow wieder die zweite Aktion angesprungen. Im Endeffekt prüft also AutoMagic alle 2 Sekunden auf das Vorhandensein des unerwünschten Popup-Fensters.
Danach wird im Flow wieder die zweite Aktion angesprungen. Im Endeffekt prüft also AutoMagic alle 2 Sekunden auf das Vorhandensein des unerwünschten Popup-Fensters.
Der Block von Aktionen, der bei der Verzweigung ''Ja'' (erfüllte Bedingung) ausgeführt wird, setzt zunächst die Zählvariable ''count'' um eins hoch (Aktion Typ: Script)
Der Block von Aktionen, der bei der Verzweigung ''Ja'' (erfüllte Bedingung) ausgeführt wird, setzt zunächst die Zählvariable ''count'' um eins hoch (Aktion Typ: Script)
  count=count+1
  count=count+1
Optional kann man hier eine weitere Aktion einbauen, mit der die Anzahl der Wiederholungen als Benachrichtigung auf den Bildschirm  
Optional kann man hier eine weitere Aktion einbauen, mit der die Anzahl der Wiederholungen als Benachrichtigung auf den Bildschirm  
ausgegeben wird (Aktion Typ: Benachrichtigung auf Bildschirm), z.B. als Text
ausgegeben wird (Aktion Typ: Benachrichtigung auf Bildschirm), z.B. als Text
  Wiederholungsfenster {count}
  Wiederholungsfenster {count}
Danach wird die eigentliche Aktion zum Wegklicken des störenden Fensters ausgeführt (Action Typ: Steuere UI), mit der Eintragung  
Danach wird die eigentliche Aktion zum Wegklicken des störenden Fensters ausgeführt (Action Typ: Steuere UI), mit der Eintragung  
  click("Wiederholen")
  click("Wiederholen")
Dieser Zweig wird danach wieder mit dem ersten Zweig zusammengeführt, indem im Flow wieder die zweite Aktion angesprungen wird.
Dieser Zweig wird danach wieder mit dem ersten Zweig zusammengeführt, indem im Flow wieder die zweite Aktion angesprungen wird.



Version vom 6. Juni 2020, 18:33 Uhr

Die Spracheingabe wird bei der Verwendung von AMAD über die Aktion AMAD Voice Control (Action Typ: Spracheingabe (Experimentell)) gesteuert. Dabei lassen sich zwei Modi auswählen

  • UI Modus - ohne Benutzeroberfläche
  • UI Modus - zeige Benutzeroberfläche

Ohne Benutzeroberfläche

Hier wird als einziges Signal zum Beginn der Spracheingabe ein Beep-Ton ausgegeben. Nach ca. 5 Sekunden ohne registrierte Eingabe erfolgt eine akustische Systemmeldung 'Ihre Eingabe wurde nicht verstanden'. (WORK IN PROGRESS)

Mit Benutzeroberfläche

Hier wird als Signal zum Beginn der Spracheingabe ein Beep-Ton ausgegeben und ein Popup-Fenster gezeigt. Nach ca. 5 Sekunden ohne registrierte Eingabe erfolgt ein weiterer Ton und das Popup-Fenster zeigt die Meldung 'Bitte sag es noch einmal'. Dummerweise verschwindet dieses Fenster nicht, sondern kann bisher nur durch Klicken des Buttons Wiederholung geschlossen werden. Mit Hilfe eines kleinen AutoMagic-Flows kann dies automatisiert werden.

Als Trigger dieses Flows wird der Start der betreffenden Activity verwendet (Trigger Typ: Activity gestartet). Als Parameter werden eingetragen

Package Name: com.google.android.googlequicksearchbox
Klassen Name: *

Die erste Aktion setzt eine Zählvariable count</count> auf Null (Action Typ: Script)

count=0

Danach beginnt eine Schleife mit der zweiten Aktion, diese holt den Text aus dem aktiven Fenster (Action Typ: Steuere UI). Als Script wird eingetragen:

text=getTextInActiveWindow()

Eine Bedingung prüft anschließend, ob die Variable text den String Bitte sag es enthält (Condition Typ: Expression) Als Expression wird eingetragen

 contains(text,"Bitte sag es")

Die Verzweigung Nein überspringt einen ganzen Block von Aktionen, es wird eine letzte Aktion innerhalb der Schleife ausgeführt (Aktion Typ: Steuere UI). Als Script wird eingetragen:

sleep(2000)

Danach wird im Flow wieder die zweite Aktion angesprungen. Im Endeffekt prüft also AutoMagic alle 2 Sekunden auf das Vorhandensein des unerwünschten Popup-Fensters. Der Block von Aktionen, der bei der Verzweigung Ja (erfüllte Bedingung) ausgeführt wird, setzt zunächst die Zählvariable count um eins hoch (Aktion Typ: Script)

count=count+1

Optional kann man hier eine weitere Aktion einbauen, mit der die Anzahl der Wiederholungen als Benachrichtigung auf den Bildschirm ausgegeben wird (Aktion Typ: Benachrichtigung auf Bildschirm), z.B. als Text

Wiederholungsfenster {count}

Danach wird die eigentliche Aktion zum Wegklicken des störenden Fensters ausgeführt (Action Typ: Steuere UI), mit der Eintragung

click("Wiederholen")

Dieser Zweig wird danach wieder mit dem ersten Zweig zusammengeführt, indem im Flow wieder die zweite Aktion angesprungen wird.

Achtung: Mit der gegenwärtigen Fassung wird diese Schleife so lange durchlaufen, bis eine Spracheingabe registriert wurde oder die Automagic Spracheingabe abstürzt. Das ist u.a. daran erkennbar, dass im (anderen) Flow VoiceControl die Aktion AMAD Voice Control nach wie vor als aktiv angezeigt wird. Gegenwärtig ist als Abhilfe nur bekannt, den Automagic Service manuell zu stoppen und neu zu starten (WORK IN PROGRESS)