Android onKeyDown自定义功能

最近做一个应用,需要实现类似于自拍杆的功能,即将自拍杆插头插入耳机孔,然后模拟自拍杆,点击自拍杆按钮实现拍照功能或者调节音量功能。之前没有接触过关于硬触发的开发,所以不太清楚在Android项目中该如何添加实现,在网上查了一番,发现Android中提供了一个onKeyDown方法,用来监听手机键盘被按下时的事件动作。查阅Android API可知:

public abstract boolean onKeyDown (int keyCode,KeyEvent event)
有这么一个方法,返回值类型为boolean类型的函数,其中keyCode代表在event.getKeyCode()的值,简单来说就是手机按键被按下的键值,手机键盘中每个按键都有单独的键值(键盘码)。event为关键事件的说明,即具体的一些按键信息,包括按键事件状态、按键事件类型等,当按键被用户按下时,系统会自动将该事件封装成KeyEvent对象供程序使用。如果想自定义一个键盘监听事件,只需要复写该方法即可,但要注意该事件需要返回true,确定执行完该方法,如果选择false,则表明该事件没有执行完成,还需要其他回调方法对其进行处理。onKeyDown()这个函数其实可以实现的功能较为多,包括屏幕上Home键、返回键、菜单键、开关机键和音量键等,均可以自定义设置监听事件。

下面是在一个Android自定义相机中添加音量键控制拍照的示例:

    /*
    * 获取音量键监听事件
    *设置自拍杆功能
    * */
    public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
        if (keyCode == keyEvent.KEYCODE_VOLUME_UP) {//模拟自拍杆连接点击事件,在点击时,复写音量上键被点击事件,实现拍照功能
            if (count == 1) {
                camera.takePicture(shutterCallback, null, new MyPictureCallback());
                Toast.makeText(MainActivity.this,"Scanning",Toast.LENGTH_SHORT).show();
                return true;//返回true,表示该事件完成
            }else if (count != 1){
                camera.takePicture(shutterCallback, null, new SecondPictureCallback());
                Toast.makeText(MainActivity.this, "Comparing", Toast.LENGTH_SHORT).show();
                return true;
            }
        }
        return super.onKeyDown(keyCode, keyEvent);//此处需要返回值
    }
复写onKeyDown()方法较为简单,但是监听事件的类型和具体事件需要仔细阅读相关API文档,然后在该方法中实现需求即可。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值