在 C# 中,我在请求 Xamarin 语音识别权限时遇到错误 Android

In C#, I am getting an error when requesting permission for speech recognition Xamarin Android

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

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

Operator '==' cannot be applied to operands of type 'IObservable' and 'bool'

这是我的代码:

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

所以应该发生的是没有错误,代码应该 运行 没问题,但是代码行

await CrossSpeechRecognition.Current.RequestPermission();

有红色下划线表示

IObservable' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'IObservable' could be found (are you missing a using directive or an assembly reference?)

当我使用插件创建者从此处提供的确切代码时 https://github.com/aritchie/speechrecognition

非常感谢任何帮助!!

解决这个问题的方法是添加

using System.Reactive.Linq

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

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

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