私はpocketsphinx(それに付属するデモ)で実行されているアプリを持っています。私のアプリは、たとえば、命令されたときに色を変更できる必要があります。sphinx4の「helloworld」を「hellophillip」の代わりに「colorblack/blue」で並べ替えます
そのために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または何かに前の単語が含まれているため、スイッチの最後のコマンドを実行するため、変更しません。
質問:適切に実行されたアクションの後にhypをクリアするにはどうすればよいですか?
これは私のOnPartialです:
public void 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:「前の質問の一部を理解した」