【问题标题】:In C#, I am getting an error when requesting permission for speech recognition Xamarin Android在 C# 中,请求语音识别 Xamarin Android 的权限时出现错误
【发布时间】:2019-02-07 15:45:18
【问题描述】:

所以我正在使用 Plugin.SpeechRecognition Nuget 包并遵循在线的确切代码,但它不起作用。

我尝试添加“Plugin.Permissions”Nuget 包,但没有帮助,我尝试用谷歌搜索问题,但没有人遇到这个问题,而且似乎对每个人都有效。我也试过删除“await”关键字,它只是说

运算符“==”不能应用于“IObservable”和“bool”类型的操作数

这是我的代码:

    private async void GetSpeechPermission()
    {
        var granted = await CrossSpeechRecognition.Current.RequestPermission();
        if (granted == true)
        {
            // go!
        }
    }

所以应该发生的是没有错误,代码应该可以正常运行,但是代码行

await CrossSpeechRecognition.Current.RequestPermission();

有一个红色下划线表示

IObservable 不包含“GetAwaiter”的定义,并且找不到接受“IObservable”类型的第一个参数的扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)

当我使用插件创建者从这里https://github.com/aritchie/speechrecognition提供的EXACT代码时

非常感谢任何帮助!

【问题讨论】:

  • 我会查看示例应用程序,我认为 github 文档不正确。
  • 解决了!解决方案是添加“使用 System.Reactive.Linq;”并将“.ToTask(); 添加到有问题的代码行的末尾,从而产生“等待 CrossSpeechRecognition.Current.RequestPermission().ToTask();” 感谢您的帮助!:D
  • 好吧没解决...遇到了同样的问题:'Operator '==' cannot be applied to 'IObservable' and 'bool'' 类型的操作数和 .ToTask();正如开发人员建议的那样,只会创建更多问题,因此将其删除。
  • 您是否按照我的建议查看了示例应用程序?
  • @Jason 示例和上面我刚查过的一样,反正Alex你能告诉我你的插件版本吗

标签: c# xamarin permissions request speech


【解决方案1】:

解决方案是添加

使用 System.Reactive.Linq

在代码的 using 部分,而不是使用 bool 值作为插件的代码示例,而是在 if 语句中,将“granted”变量转换为字符串,然后检查“Available”,代码:

    private async void GetSpeechPermission()
    {
        var granted = await CrossSpeechRecognition.Current.RequestPermission();
        if (granted.ToString() == "Available")
        {
            //GO
        }
    }

希望这对某人有所帮助! :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多