Introduce a speech processing progress dialog for long process times

pull/14/head
Sam Bosley 14 years ago
parent 28c8fe0645
commit 28ff49c591

@ -76,7 +76,8 @@ public class RecognizerApi implements RecognitionListener {
private AACEncoder encoder = new AACEncoder(); private AACEncoder encoder = new AACEncoder();
private long speechStarted = 0; private long speechStarted = 0;
private SpeechRecognizer sr; private SpeechRecognizer sr;
private ProgressDialog pd; private ProgressDialog speakPd;
private ProgressDialog processingPd;
public void write() { public void write() {
sr.setRecognitionListener(this); sr.setRecognitionListener(this);
@ -89,11 +90,11 @@ public class RecognizerApi implements RecognitionListener {
speechStarted = 0; speechStarted = 0;
baos.reset(); baos.reset();
pd = new ProgressDialog(context); speakPd = new ProgressDialog(context);
pd.setMessage("Speak now..."); speakPd.setMessage("Speak now...");
pd.setIndeterminate(true); speakPd.setIndeterminate(true);
pd.setCancelable(true); speakPd.setCancelable(true);
pd.setOnCancelListener(new OnCancelListener() { speakPd.setOnCancelListener(new OnCancelListener() {
@Override @Override
public void onCancel(DialogInterface dialog) { public void onCancel(DialogInterface dialog) {
sr.cancel(); sr.cancel();
@ -101,7 +102,7 @@ public class RecognizerApi implements RecognitionListener {
} }
}); });
pd.show(); speakPd.show();
sr.startListening(intent); sr.startListening(intent);
speechStarted = System.currentTimeMillis(); speechStarted = System.currentTimeMillis();
@ -145,11 +146,22 @@ public class RecognizerApi implements RecognitionListener {
@Override @Override
public void onEndOfSpeech() { public void onEndOfSpeech() {
pd.dismiss(); speakPd.dismiss();
if(speechStarted == 0) if(speechStarted == 0)
return; return;
processingPd = new ProgressDialog(context);
processingPd.setMessage("Processing...");
processingPd.setIndeterminate(true);
processingPd.setCancelable(true);
processingPd.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
sr.cancel();
}
});
long delta = System.currentTimeMillis() - speechStarted; long delta = System.currentTimeMillis() - speechStarted;
int sampleRate = (int) (baos.size() * 1000 / delta); int sampleRate = (int) (baos.size() * 1000 / delta);
@ -188,6 +200,7 @@ public class RecognizerApi implements RecognitionListener {
@Override @Override
public void onResults(Bundle results) { public void onResults(Bundle results) {
processingPd.dismiss();
ArrayList<String> strings = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); ArrayList<String> strings = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if (mListener != null) if (mListener != null)
mListener.onSpeechResult(strings.size() == 0 ? "" : strings.get(0)); mListener.onSpeechResult(strings.size() == 0 ? "" : strings.get(0));

Loading…
Cancel
Save