2011-12-12 4 views
3

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); 
    } 

} 

Répondre

2

Depuis que j'ai finalement trouvé la réponse, je voulais partager la solution avec vous. Immanuel Noel d'Adobe est venu avec l'extension native par lui-même. Voir here: http://blog.immanuelnoel.com/2011/12/07/new-actionscript-native-extension-speech-recognition/

Je suis vraiment heureux à ce sujet mais je suis aussi calme curieux pourquoi il doesn ' t poster le code source. Peu importe ce que ça marche!