populaire, chers Android-Coders,Extensions natives - Reconnaissance vocale
Je suis actuellement coder une application mobile Android dans Flex avec Flash Builder. Je suis impatient de faire fonctionner la reconnaissance vocale de la plateforme Android, mais cela semble compliqué.
J'ai réussi à écrire une extension native qui affiche au moins la reconnaissance vocale de style Android qui demande une entrée vocale. J'ai découvert que pour le système android, la boîte de dialogue de saisie vocale représente une activité dans laquelle vous pouvez attendre la réponse de l'activité et remplacer la fonction onActivityResult.
Et il y a le problème. Comme je dois appeler l'activité "reconnaissance vocale" dans le FREContext, la réponse de l'activité de reconnaissance vocale est perdue.
Veuillez voir le code Java ci-joint. J'espère que quelqu'un est capable d'aider.
import android.app.Activity;
import android.content.Intent;
import android.speech.RecognizerIntent;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
public class VoiceRecognitionStart extends Activity implements FREFunction {
private static final int REQUEST_CODE = 1234;
private VoiceRecognitionContext vrc = null;
private Activity a;
@Override
public FREObject call(FREContext context, FREObject[] passedArgs) {
vrc = (VoiceRecognitionContext) context;
a = VoiceRecognitionStart.this;
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Bitte sprechen...");
intent.setClass(VoiceRecognitionStart.this, VoiceRecognitionResult.class);
a.startActivityForResult(intent, REQUEST_CODE);
return null;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
System.out.println("ON ACTIVITY " + resultCode);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
{
// Populate the wordsList with the String values the recognition engine thought it heard
vrc.matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
}
System.out.println("vrc.matches " + vrc.matches);
super.onActivityResult(requestCode, resultCode, data);
}
}