我不知道如何更改谷歌眼镜中的正常玻璃短语



我想用离线语音识别制作玻璃应用,没有好的玻璃我想知道的是将 OK 玻璃更改为其他词(类似于"开始"(。

我看到了源代码反编译的GlassHome.apk和GlassVoice.apk。我知道设置为 ok glass 与 VoiceInputHelper 有关,voice_label_ok_glass字符串.xml

所以我试图将所有字符串">

ok glass"更改为字符串中的"nice"(临时保护短语.xml但是当我说任何单词(如"哈哈哈"或"kakaka"(时,我所说的所有单词都会被语音服务识别为我的警卫短语("nice"(。

我应该怎么做才能将"OK Glass"更改为我的保护短语并正确工作???????(附言对不起我的英语不好。我希望你明白问题是什么意思(

这是我的代码(我试图将VoiceConfig设置为"nice"(

public class MainActivity 扩展 GlassActivity 实现 VoiceListener {

public static final String TEST_SERVICE_EXTRAS_KEY = "serviceExtras";
private ImageView gradientView;
private GuardHintAnimator guardHintAnimator;
private TextView guardPhraseView;
private boolean isRunning = false;
private final FormattingLogger logger = FormattingLoggers.getLogger(this);
private VoiceConfig onWindowFocusChangedRecoverConfig;
private VoiceConfig voiceConfig;
@VisibleForTesting
VoiceInputHelper voiceInputHelper;
private IVoiceMenuDialog voiceMenuDialog;
public FormattingLogger getLogger()
{
    return this.logger;
}
public boolean isRunning()
{
    return this.isRunning;
}
@Override
protected void onCreateInternal(Bundle bundle) {
    super.onCreateInternal(bundle);
    this.voiceInputHelper = new VoiceInputHelper(this, new DelegatingVoiceListener(this)
    {
        public VoiceConfig onVoiceCommand(VoiceCommand paramAnonymousVoiceCommand)
        {
            if ((!MainActivity.this.hasWindowFocus()) && (!MainActivity.this.isMessageShowing()))
            {
                MainActivity.this.logger.d("Ignoring voice command because we don't have window focus.", new Object[0]);
                return null;
            }
            Log.d("listener",paramAnonymousVoiceCommand.toString());
            //return super.onVoiceCommand(paramAnonymousVoiceCommand);
            return null;
        }
    }, getVoiceServiceExtras());
}
protected void onPauseInternal()
{
    this.isRunning = false;
    super.onPauseInternal();
    closeVoiceMenu();
    this.voiceInputHelper.setVoiceConfig(VoiceConfig.OFF);
    this.voiceInputHelper.unregisterGrammarLoaders();
}
public void closeVoiceMenu()
{
    if (this.voiceMenuDialog != null)
    {
        this.voiceMenuDialog.dismiss(false);
        this.voiceMenuDialog = null;
    }
}
public void onPrepareVoiceMenu(VoiceMenuDialog paramVoiceMenuDialog) {}
public boolean onResampledAudioData(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
{
    return false;
}
protected void onResumeInternal()
{
    this.isRunning = true;
    super.onResumeInternal();
    this.voiceInputHelper.registerGrammarLoaders();
    this.voiceInputHelper.setWantAudioData(shouldProvideAudioData());
    NetworkUtil.checkNetwork();
    VoiceConfig localVoiceConfig = new VoiceConfig();
    String[] arrayOfString = new String[1];
    arrayOfString[0] = "nice";
    localVoiceConfig = localVoiceConfig.setCustomPhrases(arrayOfString).setShouldSaveAudio(true);
    voiceInputHelper.setVoiceConfig(localVoiceConfig);
}
public boolean isVoiceMenuShowing()
{
    return (this.voiceMenuDialog != null) && (this.voiceMenuDialog.isShowing());
}
public VoiceConfig onVoiceCommand(VoiceCommand paramVoiceCommand)
{
    Log.d("hhh",paramVoiceCommand.toString());
    this.logger.w("Unrecognized voice command: %s", new Object[] { paramVoiceCommand });
    return null;
}
protected Bundle getVoiceServiceExtras()
{
    Bundle localBundle = new Bundle();
/*    if (getIntent().hasExtra("serviceExtras"))
    {
        localBundle.putAll(getIntent().getBundleExtra("serviceExtras"));
    }*/
    return localBundle;
}
public void setVoiceConfig(VoiceConfig paramVoiceConfig)
{
    this.voiceConfig = paramVoiceConfig;
    if (paramVoiceConfig != null) {
        this.voiceInputHelper.setVoiceConfig(this.voiceConfig);
    }
}
public boolean shouldProvideAudioData()
{
    return false;
}
public void onVoiceConfigChanged(VoiceConfig paramVoiceConfig, boolean paramBoolean) {}

}

委派语音侦听器:

类 委派语音侦听器 实现语音侦听器{私人最终语音听众代表;

DelegatingVoiceListener(VoiceListener paramVoiceListener)
{
    this.delegate = paramVoiceListener;
}
public FormattingLogger getLogger()
{
    return this.delegate.getLogger();
}
public boolean isRunning()
{
    return this.delegate.isRunning();
}
public boolean onResampledAudioData(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
{
    return this.delegate.onResampledAudioData(paramArrayOfByte, paramInt1, paramInt2);
}
public VoiceConfig onVoiceCommand(VoiceCommand paramVoiceCommand)
{
    return this.delegate.onVoiceCommand(paramVoiceCommand);
}
public void onVoiceConfigChanged(VoiceConfig paramVoiceConfig, boolean paramBoolean)
{
    this.delegate.onVoiceConfigChanged(paramVoiceConfig, paramBoolean);
}

}

您需要在清单中请求特殊权限才能实现未列出的语音命令。去这里。但是,我怀疑您可以更改"ok glass"语音命令。如果你真的想,你仍然可以尝试。

最新更新