В моем сценарии кнопки создаются во время выполнения. Они должны быть нажаты голосовой командой. По этой причине я пытаюсь выяснить, как я могу добавлять голосовые команды во время выполнения. Но я не могу найти какой-либо подход.
Что я пробовал: Я расширил интерфейс IMixedRealitySpeechSystem
двумя способами, RefreshRecognition
и AddSpeechCommand
:
/// <summary>
/// Refresh recognition after adding new commands
/// </summary>
void RefreshRecognition();
/// <summary>
/// Add command to already existing commands[]
/// </summary>
/// <param name="command"></param>
void AddSpeechCommand(SpeechCommands command);
Я реализовал их в классе WindowsSpeechInputProvider: MixedRealitySpeechSystem
. Но есть две проблемы:
Первый : я не могу добраться до WindowsSpeechInputProvider. Я думал, что смогу получить это, попробовав это:
private IMixedRealitySpeechSystem SpeechSystem
{
get
{
if(_speechSystem is null)
{
MixedRealityServiceRegistry.TryGetService(out _speechSystem);
}
return _speechSystem;
}
}
public void SomeMethod()
{
SpeechCommands command = new SpeechCommands("TestCommand", default, default, null);
SpeechSystem.AddSpeechCommand(command);
SpeechSystem.RefreshRecognition();
}
Но проблема в том, что MixedRealityServiceRegistry
не содержит экземпляр этого сервиса или, если быть точным, это даже не сервис.
Second : Даже если это сработает, это не очень хороший способ для go. Поскольку при этом я меняю MRTK, а при другом обновлении до новой версии эти строки перезаписываются.
Мой вопрос :
Так как я могу получить доступ и добавить команды во время выполнения?