2016-07-13 9 views
2

Ich schrieb Code, um Diktat auf meiner Apple Watch zu verwenden. Ich habe presentTextInputControllerWithSuggestions ohne Vorschläge verwendet, um das Diktat direkt zu starten.So starten und stoppen Sie Diktate in Apple Watch ohne Drücken der Taste

Aber, ich habe zwei Probleme:

  • Ich mag Diktat beginnen, wenn mein app beginnt. Dazu rufe ich meine Funktion in der Methode willActivate auf, aber nur ein wartendes Bild erscheint auf meinem Bildschirm, nicht meine erste Seite mit Diktat.
  • Ich möchte das Diktat stoppen, ohne die Taste "Fertig" zu drücken. Ich weiß nicht, ob es möglich ist und wie ich das machen kann.

Es ist mein Code:

func dictation(){ 
     self.presentTextInputControllerWithSuggestions([], allowedInputMode: WKTextInputMode.Plain, completion:{ 
      (results) -> Void in 
       //myCode 
      }) 
    } 
override func willActivate(){ 
    super.willActivate() 
    dictation() 
} 

Haben Sie Lösungen haben?

+0

Related: http://stackoverflow.com/questions/35268552/how-to-stop-speech-recognition-dictation-in-apple-watch-when-the-user-stops-sp –

+0

Was passiert, wenn Sie posten der Anruf nach Diktat nach einer kurzen Verzögerung oder in didAppear? – Feldur

+0

@Feldur Ich drucke Protokoll, wenn ich eine Funktion beginne und beende. Es gibt meine Protokolle: "start init Ende init startet awakeWithContext Ende awakeWithContext willactivate Ende willactivate starten didAppear Start Diktat Ende didAppear Start" und ich habe immer meine Wartebildschirm –

Antwort

0

Danke für Ihre Hilfe @Feldur

habe ich versucht, mit Verzögerung und es scheint, meinen Code

Es ist zu arbeiten:

override init(){ 
    super.init() 
    print("start init") 
    let seconds = 1.0 
    let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds 
    let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
    dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
     self.dictation() 
    }) 
    print("end init") 
} 

Es gibt meine Protokolle:

start init 
end init 
start awakeWithContext 
end awakeWithContext 
start willactivate 
end willactivate 
start didAppear 
end didAppear 
start dictation 

Mein Bildschirm erscheint und danach beginnt mein Diktat.

Haben Sie eine Idee, das Diktat zu stoppen, wenn der Benutzer aufhört zu sprechen?

+0

Sie werden den Audio-Stream verarbeiten müssen auf der Suche nach Stille (Abwesenheit von Energie) – Feldur

+0

Danke. Weißt du, ob es eine API oder eine native Komponente dafür gibt? –

+0

Ich nicht. Vielleicht in AV? Wenn Sie auf Leistungsspektren google, können Sie die Mathematik finden. – Feldur