繁体   English   中英

Xamarin Android.Speech识别器意图未调用OnActivityResult

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM