var Form1: TForm1; CListener:JTextToSpeech_OnUtteranceCompletedListener; uID,J:JString; ttsOptions: JHashMap; implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject); begin SpeakOut; end;
procedure TForm1.Button2Click(Sender: TObject); begin tts := TJTextToSpeech.JavaClass.init(SharedActivityContext, ttsListener); end;
procedure TForm1.Button3Click(Sender: TObject); var EnginesList:JList; I: Integer; begin J:=tts.getDefaultEngine; Memo1.Lines.Add('默认Engine:'+JStringToString(J));
EnginesList := TTS.getEngines; for I := 0 to EnginesList.size - 1 do begin Memo1.Lines.Add(JStringToString(EnginesList.get(I).toString)); end end;
procedure TForm1.Button4Click(Sender: TObject); begin //ttsOptions.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utterance"); end;
destructor TForm1.Destroy; begin if Assigned(tts) then begin tts.stop; tts.shutdown; tts := nil; end; ttsListener := nil; inherited; end;
procedure TForm1.SpeakOut; var text : JString; begin text := StringToJString(Memo1.Lines.Text); tts.speak(text, TJTextToSpeech.JavaClass.QUEUE_FLUSH, nil); //JHashMap tts.setOnUtteranceCompletedListener(CListener); end; procedure TForm1.Timer1Timer(Sender: TObject); begin end;
{ TForm1.TttsOnInitListener }
constructor TForm1.TttsOnInitListener.Create(AParent: TForm1); begin inherited Create; FParent := AParent end;
procedure TForm1.TttsOnInitListener.onInit(status: Integer); var Result : Integer; begin if (status = TJTextToSpeech.JavaClass.SUCCESS) then begin result := FParent.tts.setLanguage(TJLocale.JavaClass.US); if (result = TJTextToSpeech.JavaClass.LANG_MISSING_DATA) or (result = TJTextToSpeech.JavaClass.LANG_NOT_SUPPORTED) then ShowMessage('This Language is not supported') else begin FParent.Button1.Enabled := true; FParent.button2.Enabled := false; end; end else ShowMessage('Initilization Failed!'); end;
constructor TForm1.TttsOnUtteranceCompletedListener.Create(AParent: TForm1); begin inherited Create; FParent := AParent end;
procedure TForm1.TttsOnUtteranceCompletedListener.onUtteranceCompleted(utteranceID: JString); var Result : Integer; begin //这里怎么写。。。 form1.memo2.lines.add('Speak Over!'); end;