Plugins Shinny.SpeechRecognition(插件)与MvvmCross和Xamarin.Forms的集成

Plugins Shinny.SpeechRecognition(插件)与MvvmCross和Xamarin.Forms的集成,plugins,xamarin.forms,integration,mvvmcross,speech-recognition-api,Plugins,Xamarin.forms,Integration,Mvvmcross,Speech Recognition Api,我已经在MvvmCross Xamarin.Forms解决方案中实现了闪亮的语音识别插件 => Nuget=> 我试图在MvxViewModel构造函数中使用ISpeechRecognition,因为它在GitHub上的Prism示例上工作 => 我已经为MvvmCross实现了集成插件。 => 现在我想知道如何使用语音识别服务 能给我一些类似于: public YourViewsModel(IMvxNavigationService navigationService, ISpeechReco

我已经在MvvmCross Xamarin.Forms解决方案中实现了闪亮的语音识别插件

=>

Nuget=>

我试图在MvxViewModel构造函数中使用ISpeechRecognition,因为它在GitHub上的Prism示例上工作

=>

我已经为MvvmCross实现了集成插件。 =>

现在我想知道如何使用语音识别服务

能给我一些类似于:

public YourViewsModel(IMvxNavigationService navigationService, ISpeechRecognizer speechRecognizer)
        {
            _navigationService = navigationService;
            _speechRecognizer = speechRecognizer;
        }
或者可能是寄存器依赖的依赖注入,如:

Mvx.IoCProvider.LazyConstructAndRegisterSingleton<ISpeechRecognizer, SpeechRecognizerImpl>();
然后初始化顶级自定义应用程序定义。 在OnCreate()方法中:

现在在我们的ViewModel中,我们可以继承ShinyMvxViewModel来启动ViewModel

公共类YourViewModel:ShinyMvxViewModel{}

一切都很顺利。应用程序启动时没有问题

这不起作用:

public YourViewsModel(IMvxNavigationService navigationService, ISpeechRecognizer speechRecognizer)
我可以创建构造函数,因为它不识别ISpeechRecognizer

只有

他正在工作

这也不行:

private ISpeechRecognizer _speechRecognizer;

_speechRecognizer = Mvx.IoCProvider.Resolve<ISpeechRecognizer>();
专用ISpeechRecognizer\u语音识别器;
_speechRecognizer=Mvx.IoCProvider.Resolve();
错误在于它没有ISpeechRecognizer的实现。我不知道

我已经在override方法中初始化了惰性寄存器

protected override void InitializePlatformServices()

Mvx.IoCProvider.LazyConstructAndRegisterSingleton<ISpeechRecognizer, SpeechRecognizerImpl>();
protectedoverride void InitializePlatformServices()
Mvx.IoCProvider.lazyconstructurandregistersingleton();
谢谢你的帮助


ZebiPhoire

您是否也可以分享ISpeechRecognizer和SpeechRecognizer(您的情况下是SpeechRecognizerImpl)类的代码?SpeechRecognizer类是否从ISpeechRecognizer继承?您使用的是哪个版本的MVVMCross?你把Mvx.lazyconstructurandregistersingleton()放进去了吗;在Setup.cs类的InitializeIoC()覆盖中?如果您完成了所有这些操作,并且还拥有一个私有字段
private IFileStorageService\u SpeechRecognitor
您应该能够做到这一点
公开您的ViewsModel(IMvxNavigationService navigationService,ISpeechRecognizer speechRecognizer){{{u speechRecognizer=speechRecognizer;…}
没有问题。您是否也可以共享ISpeechRecognizer和speechRecognizer(在您的情况下是SpeechRecognizerImpl)类的代码?SpeechRecognizer类是否从ISpeechRecognizer继承?您使用的是哪个版本的MVVMCross?你把Mvx.lazyconstructurandregistersingleton()放进去了吗;在Setup.cs类的InitializeIoC()覆盖中?如果您完成了所有这些操作,并且还拥有一个私有字段
private IFileStorageService\u SpeechRecognitor
您应该能够做到这一点
公开您的视图模型(IMvxNavigationService navigationService,ISpeechRecognizer speechRecognizer){{u speechRecognizer=speechRecognizer;…}
没有问题
public YourViewsModel(IMvxNavigationService navigationService)
private ISpeechRecognizer _speechRecognizer;

_speechRecognizer = Mvx.IoCProvider.Resolve<ISpeechRecognizer>();
protected override void InitializePlatformServices()

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