Android onKeyDown自定义功能

来源:互联网 发布:淘宝营业执照代办真假 编辑:程序博客网 时间:2024/06/08 13:25

最近做一个应用,需要实现类似于自拍杆的功能,即将自拍杆插头插入耳机孔,然后模拟自拍杆,点击自拍杆按钮实现拍照功能或者调节音量功能。之前没有接触过关于硬触发的开发,所以不太清楚在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
原创粉丝点击