[英]Xamarin Android.Speech recognizer intent doesn't call OnActivityResult
当我在android中使用语音识别器意图时。 该意图永远不会调用OnActivityResult方法。 调试器永远不会在方法的第一行捕获它。 此代码是从此处的示例修改而来的,以合并Xamarin表单。
private const int Voice = 10;
public void RecordSpeech()
{
Intent voiceIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
voiceIntent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1500);
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1500);
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 15000);
voiceIntent.PutExtra(RecognizerIntent.ExtraMaxResults, 1);
voiceIntent.PutExtra(RecognizerIntent.ExtraLanguage, Java.Util.Locale.Default);
((Activity)Forms.Context).StartActivityForResult(voiceIntent, Voice);
//This doesn't work either
//((Activity)Forms.Context).StartActivityForResult(Intent.CreateChooser(new Intent(voiceIntent), "voiceIntent"), Voice);
}
protected override void OnActivityResult(int requestCode, Result resultVal, Intent data)
{ //A break point here doesn't work
Debug.WriteLine("Debug");
if (requestCode == Voice)
{
if (resultVal == Result.Ok)
{
IList<string> matches = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults);
if (matches.Count != 0)
{
Debug.WriteLine(matches[0]);
}
}
}
base.OnActivityResult(requestCode, resultVal, data);
}
OnActivityResult必须在MainActivity类中。 将其固定在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.