Localize VoiceRecognizer API

pull/14/head
Tim Su 12 years ago
parent b5b5297355
commit 62e493bd52

@ -5,6 +5,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
@ -12,17 +13,13 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnCancelListener;
import android.content.Intent; import android.content.Intent;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.speech.RecognitionListener; import android.speech.RecognitionListener;
import android.speech.RecognizerIntent; import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer; import android.speech.SpeechRecognizer;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
@TargetApi(8)
public class RecognizerApi implements RecognitionListener { public class RecognizerApi implements RecognitionListener {
public static interface PlaybackExceptionHandler { public static interface PlaybackExceptionHandler {
@ -78,20 +75,28 @@ public class RecognizerApi implements RecognitionListener {
private SpeechRecognizer sr; private SpeechRecognizer sr;
private ProgressDialog speakPd; private ProgressDialog speakPd;
private ProgressDialog processingPd; private ProgressDialog processingPd;
private String processingMessage;
public void start() {
/**
* Start speech recognition
*
* @param callingPackage e.g. com.myapp.example
* @param speakNowMessage e.g. "Speak now!"
* @param processingMessage e.g. "Processing..."
*/
public void start(String callingPackage, String speakNowMessage, String processingMessage) {
sr.setRecognitionListener(this); sr.setRecognitionListener(this);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.domain.app"); intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, callingPackage);
speechStarted = 0; speechStarted = 0;
baos.reset(); baos.reset();
speakPd = new ProgressDialog(context); speakPd = new ProgressDialog(context);
speakPd.setMessage("Speak now..."); speakPd.setMessage(speakNowMessage);
speakPd.setIndeterminate(true); speakPd.setIndeterminate(true);
speakPd.setCancelable(true); speakPd.setCancelable(true);
speakPd.setOnCancelListener(new OnCancelListener() { speakPd.setOnCancelListener(new OnCancelListener() {
@ -108,15 +113,14 @@ public class RecognizerApi implements RecognitionListener {
speechStarted = System.currentTimeMillis(); speechStarted = System.currentTimeMillis();
} }
public void convert(String toFile) { /**
try { * Convert AAC file to M4A
new AACToM4A().convert(context, aacFile, toFile); *
* @param toFile
Toast.makeText(context, "File Saved!", Toast.LENGTH_LONG).show(); * @throws IOException
} catch (IOException e) { */
Toast.makeText(context, "Error :(", Toast.LENGTH_LONG).show(); public void convert(String toFile) throws IOException {
Log.e("ERROR", "error converting", e); new AACToM4A().convert(context, aacFile, toFile);
}
} }
public void cancel() { public void cancel() {
@ -134,8 +138,6 @@ public class RecognizerApi implements RecognitionListener {
@Override @Override
public void onBeginningOfSpeech() { public void onBeginningOfSpeech() {
System.err.println("beginning");
} }
@Override @Override
@ -157,7 +159,7 @@ public class RecognizerApi implements RecognitionListener {
return; return;
processingPd = new ProgressDialog(context); processingPd = new ProgressDialog(context);
processingPd.setMessage("Processing..."); processingPd.setMessage(processingMessage);
processingPd.setIndeterminate(true); processingPd.setIndeterminate(true);
processingPd.setCancelable(true); processingPd.setCancelable(true);
processingPd.setOnCancelListener(new OnCancelListener() { processingPd.setOnCancelListener(new OnCancelListener() {
@ -174,14 +176,10 @@ public class RecognizerApi implements RecognitionListener {
sampleRate = 8000; // THIS IS A MAGIC NUMBER@?!!?!?! sampleRate = 8000; // THIS IS A MAGIC NUMBER@?!!?!?!
// can i has calculate? // can i has calculate?
System.err.println("computed sample rate: " + sampleRate);
encoder.init(64000, 1, sampleRate, 16, aacFile); encoder.init(64000, 1, sampleRate, 16, aacFile);
encoder.encode(baos.toByteArray()); encoder.encode(baos.toByteArray());
System.err.println("end");
encoder.uninit(); encoder.uninit();
} }

@ -5,8 +5,10 @@
*/ */
package com.todoroo.astrid.voice; package com.todoroo.astrid.voice;
import java.io.IOException;
import java.util.List; import java.util.List;
import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -16,14 +18,18 @@ import android.speech.SpeechRecognizer;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.Toast;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.aacenc.ContextManager;
import com.todoroo.aacenc.RecognizerApi; import com.todoroo.aacenc.RecognizerApi;
import com.todoroo.aacenc.RecognizerApi.RecognizerApiListener; import com.todoroo.aacenc.RecognizerApi.RecognizerApiListener;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.utility.Constants;
@TargetApi(8)
public class VoiceRecognizer { public class VoiceRecognizer {
protected RecognizerApi recognizerApi; protected RecognizerApi recognizerApi;
@ -79,7 +85,9 @@ public class VoiceRecognizer {
public void startVoiceRecognition(Context context, String currentVoiceFile) { public void startVoiceRecognition(Context context, String currentVoiceFile) {
if (speechRecordingAvailable(context) && recognizerApi != null) { if (speechRecordingAvailable(context) && recognizerApi != null) {
recognizerApi.setTemporaryFile(currentVoiceFile); recognizerApi.setTemporaryFile(currentVoiceFile);
recognizerApi.start(); recognizerApi.start(Constants.PACKAGE,
context.getString(R.string.audio_speak_now),
context.getString(R.string.audio_encoding));
} else { } else {
int prompt = R.string.voice_edit_title_prompt; int prompt = R.string.voice_edit_title_prompt;
if (Preferences.getBoolean(R.string.p_voiceInputCreatesTask, false)) if (Preferences.getBoolean(R.string.p_voiceInputCreatesTask, false))
@ -107,7 +115,13 @@ public class VoiceRecognizer {
} }
public void convert(String filePath) { public void convert(String filePath) {
if (instance != null && instance.recognizerApi != null) if (instance != null && instance.recognizerApi != null) {
instance.recognizerApi.convert(filePath); try {
instance.recognizerApi.convert(filePath);
} catch (IOException e) {
Toast.makeText(ContextManager.getContext(), R.string.audio_err_encoding,
Toast.LENGTH_LONG).show();
}
}
} }
} }

Loading…
Cancel
Save