人们,亲爱的Android编码器,Adobe本机扩展 - 语音识别
当前我使用Flash Builder编写了Flex中的android移动应用程序。我努力获得Android平台的语音识别功能,但它似乎很复杂。
我设法编写了一个本机扩展,至少显示要求语音输入的Android样式语音识别。我发现,对于android系统,语音输入对话框表示一个活动,您可以等待活动的响应并覆盖onActivityResult函数。
还有问题。由于我必须在FREContext中调用活动“语音识别”,语音识别活动的响应会丢失。
请参阅附加的java代码。我希望有人能够帮助。
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);
}
}