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