Интеграция 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>();
Благодарю за помощь.
Зебифир