Androidの特定のキーイベントを待ち受けようとしています。イベントリスナーを編集テキストに添付しました。私はspace-bar press、pound、@ key.forを探しています。何らかの理由でこのイベントがスペースバーと数字キーのためだけに発せられます。この関数は他のキーでも実行されることはありません。なぜか知りたいですか?彼らが私が間違っていることは何ですか?Android KeyEvent登録していません
package com.stv.mynotes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.util.StringTokenizer;
public class TestActivity extends AppCompatActivity implements View.OnKeyListener
{
EditText edit_txt;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
edit_txt = (EditText) (findViewById(R.id.test_txt));
edit_txt.setOnKeyListener(this);
}
public boolean onKey(View v,int keyCode,KeyEvent event)
{
int tmpCode = event.getKeyCode();
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
if (tmpCode == KeyEvent.KEYCODE_SPACE)
{
Log.i("Test", "Space pressed:"+tmpCode);
return true;
}
if (tmpCode == KeyEvent.KEYCODE_9)
{
Log.i("Test", "9 pressed:"+tmpCode);
return true;
}
else
{
Log.i("Test","Unknown Down:"+tmpCode);
return false;
}
}
if(event.getAction()==KeyEvent.ACTION_UP)
{
if (tmpCode == KeyEvent.KEYCODE_POUND)
{
Log.i("Test", "Pound pressed:"+tmpCode);
return true;
}
if (tmpCode == KeyEvent.KEYCODE_AT)
{
Log.i("Test", "@ pressed:"+tmpCode);
return true;
}
else
{
Log.i("Test","Unknown UP:"+tmpCode);
return false;
}
}
else
return false;
}
}
、キーイベントのみが、このようなボリュームや電源ボタンなどの物理的なキーのために、あなたの提案が正しいです。キー入力のみで入力イベントを聞くことは推奨されていません。入力は今マイクから行うことができます。私はテキストウォッチャーを使用してそれを実装することができました。 ありがとうございます。 – Wafic