Интеграция Shiny.SpeechRecognition (плагин) с MvvmCross и Xamarin.Forms

Я реализовал плагин Shiny Speech Recognition в решении MvvmCross Xamarin.Forms.

=> https://github.com/shinyorg/shiny

Nuget => https://www.nuget.org/packages/Shiny.SpeechRecognition/1.0.0.357-beta

Я пытаюсь использовать ISpeechRecognition в конструкторе MvxViewModel, поскольку он работает с образцом Prism на GitHub.

=> https://github.com/shinyorg/shinysamples/tree/master/Samples/Speech

Я реализовал плагин интеграции для MvvmCross.=> https://www.nuget.org/packages/Shiny.Integrations.MvvmCross/1.0.0.375-beta

Теперь я хочу знать, как я могу использовать службу распознавания речи.

Можно мне что-нибудь вроде:

public YourViewsModel(IMvxNavigationService navigationService, ISpeechRecognizer speechRecognizer)
        {
            _navigationService = navigationService;
            _speechRecognizer = speechRecognizer;
        }

Или, может быть, инъекция зависимости с зависимостью регистра, например:

Mvx.IoCProvider.LazyConstructAndRegisterSingleton<ISpeechRecognizer, SpeechRecognizerImpl>();

Что я хочу знать, если у кого-то уже есть плагин Shiny Xamarin.Forms, как он использовал эту службу?

Я создал стартап-класс Shiny.

public class InitializeShiny : ShinyStartup
    {
        public override void ConfigureServices(IServiceCollection services)
        {
            services.UseSpeechRecognition(); // implement Speech Recognition service.
        }
    }

Затем инициализируйте определение пользовательского приложения верхнего уровня. В методе OnCreate():

// Initialisation Shiny Plugin.
            AndroidShinyHost.Init(Application, new InitializeShiny(), services =>
            {
                services.UseSpeechRecognition();
            });

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

открытый класс YourViewModel: ShinyMvxViewModel {}

Все работает отлично. Приложение запускается без проблем.

Это не работает:

public YourViewsModel(IMvxNavigationService navigationService, ISpeechRecognizer speechRecognizer)

Я могу создать конструктор, потому что он не распознает ISpeechRecognizer.

Только

public YourViewsModel(IMvxNavigationService navigationService)

работает.

Это тоже не работает:

private ISpeechRecognizer _speechRecognizer;

_speechRecognizer = Mvx.IoCProvider.Resolve<ISpeechRecognizer>();

Ошибка в том, что для ISpeechRecognizer нет реализации. Я не знаю.

Я инициализировал ленивый регистр в методе переопределения.

protected override void InitializePlatformServices()

Mvx.IoCProvider.LazyConstructAndRegisterSingleton<ISpeechRecognizer, SpeechRecognizerImpl>();

Благодарю за помощь.

Зебифир

0 ответов

Другие вопросы по тегам