2019年3月27日 星期三

[Android]Hardkey handling and KeyEvent

過了一些年從Embedded Linux回來研究Android,因為車機開發的需求
先查詢一下


Handle keyboard actions

=============================


import android.view.KeyEvent; //需要import KeyEvent 也由此可知是view的副類別,因此需要在activity (無法在service內做)
import android.widget.Toast;     //用來debug用

public class EventTest01 extends Activity {
    /**
     * 注意,要重寫onKeyDown,onKeyUp,onTouchEvent方法
     */
    private Button mybutton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mybutton = (Button)findViewById(R.id.mybutton);
        mybutton.setOnClickListener(new Button.OnClickListener()
        {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                ShowMessage("按下了Button按鈕");
            }

        });
       
    }
       public void ShowMessage(String str)
   {
        Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);
        toast.show();
    }
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
        switch (keyCode)
        {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                //ShowMessage("Left key press up");
                CService.onKeyEvent(CService.CID_KEY_LEFT, KeyEvent.ACTION_UP);
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                //ShowMessage("Right key press up");
                CService.onKeyEvent(CService.CID_KEY_RIGHT, KeyEvent.ACTION_UP);
                break;
            case KeyEvent.KEYCODE_DPAD_UP:
                ShowMessage("Up key press up");
                CService.onKeyEvent(CService.CID_KEY_UP, KeyEvent.ACTION_UP);
                return true;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                ShowMessage("Down key press up");
                CService.onKeyEvent(CService.CID_KEY_DOWN, KeyEvent.ACTION_UP);
                return true;
        }
        return super.onKeyUp(keyCode, event);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode)
        {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                ShowMessage("Left key press down");
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                ShowMessage("Right key press down");
                break;
            case KeyEvent.KEYCODE_DPAD_UP:
                ShowMessage("Up key press down");
                return true;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                ShowMessage("Down key press down");
                return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

   
   /**按键重複點擊事件*/
    public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
    {
        return onKeyMultiple(keyCode, repeatCount, event);
    }
   
 
    public boolean onTouchEvent(MotionEvent event)
    {
        int action = event.getAction();
        if(action ==  MotionEvent.ACTION_CANCEL||action == MotionEvent.ACTION_DOWN||action == MotionEvent.ACTION_MOVE)
        {
            return false;
        }
        //得到觸點的位置
        String x = String.valueOf(event.getX());
        String y = String.valueOf(event.getX());
       
        ShowMessage("触点坐标:(" + x + "," + y +")");
        return super.onTouchEvent(event);
    }
   
    /**顯示觸發事件的信息*/
    public void ShowMessage(String str)
    {
        Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);
        toast.show();
    }
}

長按觸發
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        // do your stuff here
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}


==============================================
特殊KeyCode

1.     KEYCODE_CALL 拨号键5

2.     KEYCODE_ENDCALL 挂机键6

3.     KEYCODE_HOME 按键Home3

4.     KEYCODE_MENU 菜单键82

5.     KEYCODE_BACK 返回键4

6.     KEYCODE_SEARCH 搜索键84

7.     KEYCODE_CAMERA 拍照键27

8.     KEYCODE_FOCUS 拍照对焦键80

9.     KEYCODE_POWER 电源键26

10.   KEYCODE_NOTIFICATION 通知键83

11.   KEYCODE_MUTE 话筒静音键91

12.   KEYCODE_VOLUME_MUTE 扬声器静音键164

13.   KEYCODE_VOLUME_UP 音量增加键24

14.   KEYCODE_VOLUME_DOWN 音量减小键25

控制键
键名 描述 键值


1.     KEYCODE_ENTER 回车键66

2.     KEYCODE_ESCAPE ESC111

3.     KEYCODE_DPAD_CENTER 导航键 确定键23

4.     KEYCODE_DPAD_UP 导航键 向上19

5.     KEYCODE_DPAD_DOWN 导航键 向下20

6.     KEYCODE_DPAD_LEFT 导航键 向左21

7.     KEYCODE_DPAD_RIGHT 导航键 向右22

8.     KEYCODE_MOVE_HOME 光标移动到开始键122

9.     KEYCODE_MOVE_END 光标移动到末尾键123

10.   KEYCODE_PAGE_UP 向上翻页键92

11.   KEYCODE_PAGE_DOWN 向下翻页键93

12.   KEYCODE_DEL 退格键67

13.   KEYCODE_FORWARD_DEL 删除键112

14.   KEYCODE_INSERT 插入键124

15.   KEYCODE_TAB Tab61

16.   KEYCODE_NUM_LOCK 小键盘锁143

17.   KEYCODE_CAPS_LOCK 大写锁定键115

18.   KEYCODE_BREAK Break/Pause121

19.   KEYCODE_SCROLL_LOCK 滚动锁定键116

20.   KEYCODE_ZOOM_IN 放大键168

21.   KEYCODE_ZOOM_OUT 缩小键169

组合键
键名 描述


1.     KEYCODE_ALT_LEFT Alt+Left

2.     KEYCODE_ALT_RIGHT Alt+Right

3.     KEYCODE_CTRL_LEFT Control+Left

4.     KEYCODE_CTRL_RIGHT Control+Right

5.     KEYCODE_SHIFT_LEFT Shift+Left

6.     KEYCODE_SHIFT_RIGHT Shift+Right

基本
键名 描述 键值


1.     KEYCODE_0 按键'0'7

2.     KEYCODE_1 按键'1'8

3.     KEYCODE_2 按键'2'9

4.     KEYCODE_3 按键'3'10

5.     KEYCODE_4 按键'4'11

6.     KEYCODE_5 按键'5'12

7.     KEYCODE_6 按键'6'13

8.     KEYCODE_7 按键'7'14

9.     KEYCODE_8 按键'8'15

10.   KEYCODE_9 按键'9'16

11.   KEYCODE_A 按键'A'29

12.   KEYCODE_B 按键'B'30

13.   KEYCODE_C 按键'C'31

14.   KEYCODE_D 按键'D'32

15.   KEYCODE_E 按键'E'33

16.   KEYCODE_F 按键'F'34

17.   KEYCODE_G 按键'G'35

18.   KEYCODE_H 按键'H'36

19.   KEYCODE_I 按键'I'37

20.   KEYCODE_J 按键'J'38

21.   KEYCODE_K 按键'K'39

22.   KEYCODE_L 按键'L'40

23.   KEYCODE_M 按键'M'41

24.   KEYCODE_N 按键'N'42

25.   KEYCODE_O 按键'O'43

26.   KEYCODE_P 按键'P'44

27.   KEYCODE_Q 按键'Q'45

28.   KEYCODE_R 按键'R'46

29.   KEYCODE_S 按键'S'47

30.   KEYCODE_T 按键'T'48

31.   KEYCODE_U 按键'U'49

32.   KEYCODE_V 按键'V'50

33.   KEYCODE_W 按键'W'51

34.   KEYCODE_X 按键'X'52

35.   KEYCODE_Y 按键'Y'53

36.   KEYCODE_Z 按键'Z'54

符号
键名 描述


1.     KEYCODE_PLUS 按键'+'

2.     KEYCODE_MINUS 按键'-'

3.     KEYCODE_STAR 按键'*'

4.     KEYCODE_SLASH 按键'/'

5.     KEYCODE_EQUALS 按键'='

6.     KEYCODE_AT 按键'@'

7.     KEYCODE_POUND 按键'#'

8.     KEYCODE_APOSTROPHE 按键''' (单引号)

9.     KEYCODE_BACKSLASH 按键'\'

10.   KEYCODE_COMMA 按键','

11.   KEYCODE_PERIOD 按键'.'

12.   KEYCODE_LEFT_BRACKET 按键'['

13.   KEYCODE_RIGHT_BRACKET 按键']'

14.   KEYCODE_SEMICOLON 按键';'

15.   KEYCODE_GRAVE 按键'`'

16.   KEYCODE_SPACE 空格键

小键盘
键名 描述


1.     KEYCODE_NUMPAD_0 小键盘按键'0'

2.     KEYCODE_NUMPAD_1 小键盘按键'1'

3.     KEYCODE_NUMPAD_2 小键盘按键'2'

4.     KEYCODE_NUMPAD_3 小键盘按键'3'

5.     KEYCODE_NUMPAD_4 小键盘按键'4'

6.     KEYCODE_NUMPAD_5 小键盘按键'5'

7.     KEYCODE_NUMPAD_6 小键盘按键'6'

8.     KEYCODE_NUMPAD_7 小键盘按键'7'

9.     KEYCODE_NUMPAD_8 小键盘按键'8'

10.   KEYCODE_NUMPAD_9 小键盘按键'9'

11.   KEYCODE_NUMPAD_ADD 小键盘按键'+'

12.   KEYCODE_NUMPAD_SUBTRACT 小键盘按键'-'

13.   KEYCODE_NUMPAD_MULTIPLY 小键盘按键'*'

14.   KEYCODE_NUMPAD_DIVIDE 小键盘按键'/'

15.   KEYCODE_NUMPAD_EQUALS 小键盘按键'='

16.   KEYCODE_NUMPAD_COMMA 小键盘按键','

17.   KEYCODE_NUMPAD_DOT 小键盘按键'.'

18.   KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键'('

19.   KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键')'

20.   KEYCODE_NUMPAD_ENTER 小键盘按键回车

功能键
键名 描述


1.     KEYCODE_F1 按键F1

2.     KEYCODE_F2 按键F2

3.     KEYCODE_F3 按键F3

4.     KEYCODE_F4 按键F4

5.     KEYCODE_F5 按键F5

6.     KEYCODE_F6 按键F6

7.     KEYCODE_F7 按键F7

8.     KEYCODE_F8 按键F8

9.     KEYCODE_F9 按键F9

10.   KEYCODE_F10 按键F10

11.   KEYCODE_F11 按键F11

12.   KEYCODE_F12 按键F12

多媒体键
键名 描述


1.     KEYCODE_MEDIA_PLAY 多媒体键 播放

2.     KEYCODE_MEDIA_STOP 多媒体键 停止

3.     KEYCODE_MEDIA_PAUSE 多媒体键 暂停

4.     KEYCODE_MEDIA_PLAY_PAUSE 多媒体键 播放/暂停

5.     KEYCODE_MEDIA_FAST_FORWARD 多媒体键 快进

6.     KEYCODE_MEDIA_REWIND 多媒体键 快退

7.     KEYCODE_MEDIA_NEXT 多媒体键 下一首

8.     KEYCODE_MEDIA_PREVIOUS 多媒体键 上一首

9.     KEYCODE_MEDIA_CLOSE 多媒体键 关闭

10.   KEYCODE_MEDIA_EJECT 多媒体键 弹出

11.   KEYCODE_MEDIA_RECORD 多媒体键 录音

手柄按键
键名 描述


1.     KEYCODE_BUTTON_1 通用游戏手柄按钮 #1

2.     KEYCODE_BUTTON_2 通用游戏手柄按钮 #2

3.     KEYCODE_BUTTON_3 通用游戏手柄按钮 #3

4.     KEYCODE_BUTTON_4 通用游戏手柄按钮 #4

5.     KEYCODE_BUTTON_5 通用游戏手柄按钮 #5

6.     KEYCODE_BUTTON_6 通用游戏手柄按钮 #6

7.     KEYCODE_BUTTON_7 通用游戏手柄按钮 #7

8.     KEYCODE_BUTTON_8 通用游戏手柄按钮 #8

9.     KEYCODE_BUTTON_9 通用游戏手柄按钮 #9

10.   KEYCODE_BUTTON_10 通用游戏手柄按钮 #10

11.   KEYCODE_BUTTON_11 通用游戏手柄按钮 #11

12.   KEYCODE_BUTTON_12 通用游戏手柄按钮 #12

13.   KEYCODE_BUTTON_13 通用游戏手柄按钮 #13

14.   KEYCODE_BUTTON_14 通用游戏手柄按钮 #14

15.   KEYCODE_BUTTON_15 通用游戏手柄按钮 #15

16.   KEYCODE_BUTTON_16 通用游戏手柄按钮 #16

17.   KEYCODE_BUTTON_A 游戏手柄按钮 A

18.   KEYCODE_BUTTON_B 游戏手柄按钮 B

19.   KEYCODE_BUTTON_C 游戏手柄按钮 C

20.   KEYCODE_BUTTON_X 游戏手柄按钮 X

21.   KEYCODE_BUTTON_Y 游戏手柄按钮 Y

22.   KEYCODE_BUTTON_Z 游戏手柄按钮 Z

23.   KEYCODE_BUTTON_L1 游戏手柄按钮 L1

24.   KEYCODE_BUTTON_L2 游戏手柄按钮 L2

25.   KEYCODE_BUTTON_R1 游戏手柄按钮 R1

26.   KEYCODE_BUTTON_R2 游戏手柄按钮 R2

27.   KEYCODE_BUTTON_MODE 游戏手柄按钮 Mode

28.   KEYCODE_BUTTON_SELECT 游戏手柄按钮 Select

29.   KEYCODE_BUTTON_START 游戏手柄按钮 Start

30.   KEYCODE_BUTTON_THUMBL Left Thumb Button

31.   KEYCODE_BUTTON_THUMBR Right Thumb Button

待查
 
键名 描述


1.     KEYCODE_NUM 按键Number modifier

2.     KEYCODE_INFO 按键Info

3.     KEYCODE_APP_SWITCH 按键App switch

4.     KEYCODE_BOOKMARK 按键Bookmark

5.     KEYCODE_AVR_INPUT 按键A/V Receiver input

6.     KEYCODE_AVR_POWER 按键A/V Receiver power

7.     KEYCODE_CAPTIONS 按键Toggle captions

8.     KEYCODE_CHANNEL_DOWN 按键Channel down

9.     KEYCODE_CHANNEL_UP 按键Channel up

10.   KEYCODE_CLEAR 按键Clear

11.   KEYCODE_DVR 按键DVR

12.   KEYCODE_ENVELOPE 按键Envelope special function

13.   KEYCODE_EXPLORER 按键Explorer special function

14.   KEYCODE_FORWARD 按键Forward

15.   KEYCODE_FORWARD_DEL 按键Forward Delete

16.   KEYCODE_FUNCTION 按键Function modifier

17.   KEYCODE_GUIDE 按键Guide

18.   KEYCODE_HEADSETHOOK 按键Headset Hook

19.   KEYCODE_META_LEFT 按键Left Meta modifier

20.   KEYCODE_META_RIGHT 按键Right Meta modifier

21.   KEYCODE_PICTSYMBOLS 按键Picture Symbols modifier

22.   KEYCODE_PROG_BLUE 按键Blue programmable

23.   KEYCODE_PROG_GREEN 按键Green programmable

24.   KEYCODE_PROG_RED 按键Red programmable

25.   KEYCODE_PROG_YELLOW 按键Yellow programmable

26.   KEYCODE_SETTINGS 按键Settings

27.   KEYCODE_SOFT_LEFT 按键Soft Left

28.   KEYCODE_SOFT_RIGHT 按键Soft Right

29.   KEYCODE_STB_INPUT 按键Set-top-box input

30.   KEYCODE_STB_POWER 按键Set-top-box power
31.   KEYCODE_SWITCH_CHARSET 按键Switch Charset modifier
32.   KEYCODE_SYM 按键Symbol modifier

33.   KEYCODE_SYSRQ 按键System Request / Print Screen

34.   KEYCODE_TV 按键TV

35.   KEYCODE_TV_INPUT 按键TV input

36.   KEYCODE_TV_POWER 按键TV power

37.   KEYCODE_WINDOW 按键Window
KEYCODE_UNKNOWN 未知按键

沒有留言:

張貼留言