3

我有一个使用 pocketsphinx 运行的应用程序(附带的演示)。例如,我的应用程序需要能够在收到命令时更改颜色。sphinx4 上的“hello world”排序为“color black/blue”而不是“hello phillip”

为此,我稍微修改了 pocketsphinxandroiddemo。

当使用按钮识别时,我可以通过在 OnResult 的 run() 中使用它来实现操作:

        if(hyp.equals("COLOR BLACK")){

                bg.setImageResource(R.drawable.black);

                }
                if(hyp.equals("COLOR WHITE")){
                bg.setImageResource(R.drawable.white);

                }

那里没有问题。

但我需要持续收听,所以我绕过了按钮,转而使用 OnPartial run()。那里 .equals("KEY WORD") 不起作用,所以我使用了 .contains("KEY WORD")。只要我改变我的 if 语句而不是改变它们,这就会起作用,因为我的 hyp 或其他东西仍然包含以前的单词,因此执行我的开关中的最后一个命令。

问题:执行良好的操作后如何清除炒作?

这是我的 OnPartial:

公共无效 onPartialResults(Bundle b) {

    final PocketSphinxAndroidDemo that = this;
    final String hyp = b.getString("hyp");

    that.edit_text.post(new Runnable() {
        public void run() {
            that.edit_text.setText(hyp);
                if(hyp.contains("COLOR BLACK")){

                bg.setImageResource(R.drawable.black);

                }
                if(hyp.contains("COLOR WHITE")){
                    bg.setImageResource(R.drawable.white);

                }

我对此很陌生(几个月前才开始学习编程),所以我可能会遗漏一些明显的东西。如果你能看到我的错误,请解释一下。如果我在 OnPartial 中应该使用 .contains 以外的东西,那该怎么办?我试过 .equals("KEY WORD") 但这仅适用于 OnResult。

亲切的问候雅各布

伊迪丝:“一些错误和代码”

伊迪丝 2:“想出了上一个问题的一部分”

4

0 回答 0