[Android]ハードウェアキーが押された時のイベントを取る

ケータイについているハードウェアキーを押した時のイベントを検出します。
沢山キーが付いている端末を使っている時は、onKeyDownの第一引数を画面にダンプすることで各キーのキーコードを確認できます。

package com.example.test1;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    Button   btnAddAlerm;
    TextView txtMessage;
 
 
    /**
     * 画面生成時のハンドラ
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
 
        //--------------------
        // 画面レイアウトを作成
        //--------------------
        LinearLayout layout = new LinearLayout( this );
        layout.setOrientation( LinearLayout.VERTICAL );
        setContentView( layout );
 
        //----------------------------
        // テキスト表示欄と、ボタンを画面に追加
        //----------------------------
        txtMessage = new TextView( this );
        txtMessage.setText( "こんにちは" );
        layout.addView( txtMessage );
 
    }
 
    /** キークリック時のハンドラ
     */
    @Override
    public boolean onKeyDown( int keyCode, KeyEvent e ) {
        switch ( keyCode ) {
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                txtMessage.setText( "ボリュームDown" );
                break;
            case KeyEvent.KEYCODE_VOLUME_UP:
                txtMessage.setText( "ボリュームUp" );
                break;
            case KeyEvent.KEYCODE_DPAD_UP:
                txtMessage.setText( "上キー" );
                break;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                txtMessage.setText( "下キー" );
                break;
            case KeyEvent.KEYCODE_DPAD_LEFT:
                txtMessage.setText( "左キー" );
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                txtMessage.setText( "右キー" );
                break;
            case KeyEvent.KEYCODE_DPAD_CENTER:
                txtMessage.setText( "中央キー" );
                break;
            default:
                txtMessage.setText( "不明なキー  keyCode:" + String.valueOf( keyCode ) );
                break;              
        }
        return false;
 
    }
 
}





また、各キーコードはandroid.view.InputEvent.KeyEventクラスで定数の定義がされています。

コードと値の対応は以下の通りです。
プログラム中では、if ( keyCode == KeyEvent.KEYCODE_0 ) といった感じで使用します。

コード 定数名
----- ------------------------
0     KEYCODE_UNKNOWN                 
1     KEYCODE_SOFT_LEFT               
2     KEYCODE_SOFT_RIGHT              
3     KEYCODE_HOME                    
4     KEYCODE_BACK                    
5     KEYCODE_CALL                    
6     KEYCODE_ENDCALL                 
7     KEYCODE_0                       
8     KEYCODE_1                       
9     KEYCODE_2                       
10    KEYCODE_3                       
11    KEYCODE_4                       
12    KEYCODE_5                       
13    KEYCODE_6                       
14    KEYCODE_7                       
15    KEYCODE_8                       
16    KEYCODE_9                       
17    KEYCODE_STAR                    
18    KEYCODE_POUND                   
19    KEYCODE_DPAD_UP                 
20    KEYCODE_DPAD_DOWN               
21    KEYCODE_DPAD_LEFT               
22    KEYCODE_DPAD_RIGHT              
23    KEYCODE_DPAD_CENTER             
24    KEYCODE_VOLUME_UP               
25    KEYCODE_VOLUME_DOWN             
26    KEYCODE_POWER                   
27    KEYCODE_CAMERA                  
28    KEYCODE_CLEAR                   
29    KEYCODE_A                       
30    KEYCODE_B                       
31    KEYCODE_C                       
32    KEYCODE_D                       
33    KEYCODE_E                       
34    KEYCODE_F                       
35    KEYCODE_G                       
36    KEYCODE_H                       
37    KEYCODE_I                       
38    KEYCODE_J                       
39    KEYCODE_K                       
40    KEYCODE_L                       
41    KEYCODE_M                       
42    KEYCODE_N                       
43    KEYCODE_O                       
44    KEYCODE_P                       
45    KEYCODE_Q                       
46    KEYCODE_R                       
47    KEYCODE_S                       
48    KEYCODE_T                       
49    KEYCODE_U                       
50    KEYCODE_V                       
51    KEYCODE_W                       
52    KEYCODE_X                       
53    KEYCODE_Y                       
54    KEYCODE_Z                       
55    KEYCODE_COMMA                   
56    KEYCODE_PERIOD                  
57    KEYCODE_ALT_LEFT                
58    KEYCODE_ALT_RIGHT               
59    KEYCODE_SHIFT_LEFT              
60    KEYCODE_SHIFT_RIGHT             
61    KEYCODE_TAB                     
62    KEYCODE_SPACE                   
63    KEYCODE_SYM                     
64    KEYCODE_EXPLORER                
65    KEYCODE_ENVELOPE                
66    KEYCODE_ENTER                   
67    KEYCODE_DEL                     
68    KEYCODE_GRAVE                   
69    KEYCODE_MINUS                   
70    KEYCODE_EQUALS                  
71    KEYCODE_LEFT_BRACKET            
72    KEYCODE_RIGHT_BRACKET           
73    KEYCODE_BACKSLASH               
74    KEYCODE_SEMICOLON               
75    KEYCODE_APOSTROPHE              
76    KEYCODE_SLASH                   
77    KEYCODE_AT                      
78    KEYCODE_NUM                     
79    KEYCODE_HEADSETHOOK             
80    KEYCODE_FOCUS                   
81    KEYCODE_PLUS                    
82    KEYCODE_MENU                    
83    KEYCODE_NOTIFICATION            
84    KEYCODE_SEARCH                  
85    KEYCODE_MEDIA_PLAY_PAUSE        
86    KEYCODE_MEDIA_STOP              
87    KEYCODE_MEDIA_NEXT              
88    KEYCODE_MEDIA_PREVIOUS          
89    KEYCODE_MEDIA_REWIND            
90    KEYCODE_MEDIA_FAST_FORWARD      
91    KEYCODE_MUTE                    
92    KEYCODE_PAGE_UP                 
93    KEYCODE_PAGE_DOWN               
94    KEYCODE_PICTSYMBOLS             
95    KEYCODE_SWITCH_CHARSET          
96    KEYCODE_BUTTON_A                
97    KEYCODE_BUTTON_B                
98    KEYCODE_BUTTON_C                
99    KEYCODE_BUTTON_X                
100   KEYCODE_BUTTON_Y                
101   KEYCODE_BUTTON_Z                
102   KEYCODE_BUTTON_L1               
103   KEYCODE_BUTTON_R1               
104   KEYCODE_BUTTON_L2               
105   KEYCODE_BUTTON_R2               
106   KEYCODE_BUTTON_THUMBL           
107   KEYCODE_BUTTON_THUMBR           
108   KEYCODE_BUTTON_START            
109   KEYCODE_BUTTON_SELECT           
110   KEYCODE_BUTTON_MODE             
111   KEYCODE_ESCAPE                  
112   KEYCODE_FORWARD_DEL             
113   KEYCODE_CTRL_LEFT               
114   KEYCODE_CTRL_RIGHT              
115   KEYCODE_CAPS_LOCK               
116   KEYCODE_SCROLL_LOCK             
117   KEYCODE_META_LEFT               
118   KEYCODE_META_RIGHT              
119   KEYCODE_FUNCTION                
120   KEYCODE_SYSRQ                   
121   KEYCODE_BREAK                   
122   KEYCODE_MOVE_HOME               
123   KEYCODE_MOVE_END                
124   KEYCODE_INSERT                  
125   KEYCODE_FORWARD                 
126   KEYCODE_MEDIA_PLAY              
127   KEYCODE_MEDIA_PAUSE             
128   KEYCODE_MEDIA_CLOSE             
129   KEYCODE_MEDIA_EJECT             
130   KEYCODE_MEDIA_RECORD            
131   KEYCODE_F1                      
132   KEYCODE_F2                      
133   KEYCODE_F3                      
134   KEYCODE_F4                      
135   KEYCODE_F5                      
136   KEYCODE_F6                      
137   KEYCODE_F7                      
138   KEYCODE_F8                      
139   KEYCODE_F9                      
140   KEYCODE_F10                     
141   KEYCODE_F11                     
142   KEYCODE_F12                     
143   KEYCODE_NUM_LOCK                
144   KEYCODE_NUMPAD_0                
145   KEYCODE_NUMPAD_1                
146   KEYCODE_NUMPAD_2                
147   KEYCODE_NUMPAD_3                
148   KEYCODE_NUMPAD_4                
149   KEYCODE_NUMPAD_5                
150   KEYCODE_NUMPAD_6                
151   KEYCODE_NUMPAD_7                
152   KEYCODE_NUMPAD_8                
153   KEYCODE_NUMPAD_9                
154   KEYCODE_NUMPAD_DIVIDE           
155   KEYCODE_NUMPAD_MULTIPLY         
156   KEYCODE_NUMPAD_SUBTRACT         
157   KEYCODE_NUMPAD_ADD              
158   KEYCODE_NUMPAD_DOT              
159   KEYCODE_NUMPAD_COMMA            
160   KEYCODE_NUMPAD_ENTER            
161   KEYCODE_NUMPAD_EQUALS           
162   KEYCODE_NUMPAD_LEFT_PAREN       
163   KEYCODE_NUMPAD_RIGHT_PAREN      
164   KEYCODE_VOLUME_MUTE             
165   KEYCODE_INFO                    
166   KEYCODE_CHANNEL_UP              
167   KEYCODE_CHANNEL_DOWN            
168   KEYCODE_ZOOM_IN                 
169   KEYCODE_ZOOM_OUT                
170   KEYCODE_TV                      
171   KEYCODE_WINDOW                  
172   KEYCODE_GUIDE                   
173   KEYCODE_DVR                     
174   KEYCODE_BOOKMARK                
175   KEYCODE_CAPTIONS                
176   KEYCODE_SETTINGS                
177   KEYCODE_TV_POWER                
178   KEYCODE_TV_INPUT                
179   KEYCODE_STB_POWER               
180   KEYCODE_STB_INPUT               
181   KEYCODE_AVR_POWER               
182   KEYCODE_AVR_INPUT               
183   KEYCODE_PROG_RED                
184   KEYCODE_PROG_GREEN              
185   KEYCODE_PROG_YELLOW             
186   KEYCODE_PROG_BLUE               
187   KEYCODE_APP_SWITCH              
188   KEYCODE_BUTTON_1                
189   KEYCODE_BUTTON_2                
190   KEYCODE_BUTTON_3                
191   KEYCODE_BUTTON_4                
192   KEYCODE_BUTTON_5                
193   KEYCODE_BUTTON_6                
194   KEYCODE_BUTTON_7                
195   KEYCODE_BUTTON_8                
196   KEYCODE_BUTTON_9                
197   KEYCODE_BUTTON_10               
198   KEYCODE_BUTTON_11               
199   KEYCODE_BUTTON_12               
200   KEYCODE_BUTTON_13               
201   KEYCODE_BUTTON_14               
202   KEYCODE_BUTTON_15               
203   KEYCODE_BUTTON_16               
204   KEYCODE_LANGUAGE_SWITCH         
205   KEYCODE_MANNER_MODE             
206   KEYCODE_3D_MODE                 
207   KEYCODE_CONTACTS                
208   KEYCODE_CALENDAR                
209   KEYCODE_MUSIC                   
210   KEYCODE_CALCULATOR              
211   KEYCODE_ZENKAKU_HANKAKU         
212   KEYCODE_EISU                    
213   KEYCODE_MUHENKAN                
214   KEYCODE_HENKAN                  
215   KEYCODE_KATAKANA_HIRAGANA       
216   KEYCODE_YEN                     
217   KEYCODE_RO                      
218   KEYCODE_KANA                    
219   KEYCODE_ASSIST


関連記事

コメントを残す

メールアドレスが公開されることはありません。