1 // Copyright 2011 Google Inc. All Rights Reserved. 2 3 package android.speech.tts; 4 5 /** 6 * Listener for events relating to the progress of an utterance through 7 * the synthesis queue. Each utterance is associated with a call to 8 * {@link TextToSpeech#speak} or {@link TextToSpeech#synthesizeToFile} with an 9 * associated utterance identifier, as per {@link TextToSpeech.Engine#KEY_PARAM_UTTERANCE_ID}. 10 * 11 * The callbacks specified in this method can be called from multiple threads. 12 */ 13 public abstract class UtteranceProgressListener { 14 /** 15 * Called when an utterance "starts" as perceived by the caller. This will 16 * be soon before audio is played back in the case of a {@link TextToSpeech#speak} 17 * or before the first bytes of a file are written to storage in the case 18 * of {@link TextToSpeech#synthesizeToFile}. 19 * 20 * @param utteranceId the utterance ID of the utterance. 21 */ onStart(String utteranceId)22 public abstract void onStart(String utteranceId); 23 24 /** 25 * Called when an utterance has successfully completed processing. 26 * All audio will have been played back by this point for audible output, and all 27 * output will have been written to disk for file synthesis requests. 28 * 29 * This request is guaranteed to be called after {@link #onStart(String)}. 30 * 31 * @param utteranceId the utterance ID of the utterance. 32 */ onDone(String utteranceId)33 public abstract void onDone(String utteranceId); 34 35 /** 36 * Called when an error has occurred during processing. This can be called 37 * at any point in the synthesis process. Note that there might be calls 38 * to {@link #onStart(String)} for specified utteranceId but there will never 39 * be a call to both {@link #onDone(String)} and {@link #onError(String)} for 40 * the same utterance. 41 * 42 * @param utteranceId the utterance ID of the utterance. 43 */ onError(String utteranceId)44 public abstract void onError(String utteranceId); 45 46 /** 47 * Wraps an old deprecated OnUtteranceCompletedListener with a shiny new 48 * progress listener. 49 * 50 * @hide 51 */ from( final TextToSpeech.OnUtteranceCompletedListener listener)52 static UtteranceProgressListener from( 53 final TextToSpeech.OnUtteranceCompletedListener listener) { 54 return new UtteranceProgressListener() { 55 @Override 56 public synchronized void onDone(String utteranceId) { 57 listener.onUtteranceCompleted(utteranceId); 58 } 59 60 @Override 61 public void onError(String utteranceId) { 62 listener.onUtteranceCompleted(utteranceId); 63 } 64 65 @Override 66 public void onStart(String utteranceId) { 67 // Left unimplemented, has no equivalent in the old 68 // API. 69 } 70 }; 71 } 72 } 73