簡體   English   中英

我不知道如何在Google Glass中更改OK Glass短語

[英]I dont know how to change ok glass phrase in google glass

我想在沒有ok眼鏡的情況下使用脫機語音識別功能來制作glass應用程序,我想知道的是將ok glass更改為其他單詞(例如“ start”)。

我看到源反編譯了GlassHome.apk和GlassVoice.apk。 我知道將Ok眼鏡設置為與String.xml中的VoiceInputHelper,voice_label_ok_glass有關

因此我嘗試將String.xml中的所有字符串“ ok glass”更改為“ nice”(臨時保護短語),但是當我說出任何單詞(例如“ haha​​ha”或“ kakaka”)時,我說出的所有單詞都被識別為我的警句(“ nice”)由VoiceService提供。

將“ ok glass”更改為我的警句並正確使用該怎么辦? (對不起,我的英語不好。我希望你理解問題的意思)

這是我的代碼(我嘗試將VoiceConfig設置為“ nice”)

公共類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:

類DelegatingVoiceListener實現了VoiceListener {私有的最終VoiceListener委托;

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”語音命令。 如果您確實願意,您仍然可以嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM