В C # я получаю сообщение об ошибке при запросе разрешения на распознавание речи Xamarin Android - PullRequest
0 голосов
/ 07 февраля 2019

Итак, я использую Plugin.SpeechRecognition Nuget Package и следую точному онлайн-коду, но он не работает.

Я попытался добавить Nuget-пакет "Plugin.Permissions" иэто не помогло, и я попытался найти проблему, но никто не получил эту проблему, и она, кажется, работает хорошо для всех.Я также попытался удалить ключевое слово «await», и оно просто говорит, что

Оператор '==' не может быть применен к операндам типа 'IObservable' и 'bool'

Вот мой код:

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

, так что должно произойти, нет ошибки, что бы ни случилось, и код должен работать нормально, но строка кода

await CrossSpeechRecognition.Current.RequestPermission();

имеет красныйподчеркивание:

IObservable 'не содержит определения для' GetAwaiter ', и невозможно найти метод расширения' GetAwaiter ', принимающий первый аргумент типа' IObservable '(если вы пропустили директиву using илиссылка на сборку?)

когда я использую EXACT-код, предоставленный создателем плагина отсюда https://github.com/aritchie/speechrecognition

Любая помощь приветствуется !!

1 Ответ

0 голосов
/ 11 февраля 2019

Решением этой проблемы было добавление

с использованием System.Reactive.Linq

в разделе использования кода и вместо использования значения bool в качествеПример кода для плагина предлагает вместо этого в операторе if преобразовать переменную «предоставлено» в строку и затем проверить «Доступно», Код:

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

Надеюсь, это кому-нибудь поможет!: D

...