[DESCRIPTION]
很多客户有快拍的需求,如在灭屏或锁屏状态下能长按某个物理按键(多是音量键)来唤起Camera应用或者直接拍照并显示出照片预览。
这个需求的基本功能为灭屏或锁屏状态下能响应长按事件并唤起Camera进行拍照,可在PhoneWindowManager.java中来做这件事情。
[SOLUTION]
PhoneWindowManager.java的interceptKeyBeforeQueueing会截取到keycode的down和up事件,可以在音量键按下(down)时给handler发送一个延迟启动的消息,在这个消息处理中做唤起Camera应用拍照的动作。在音量键抬起(up)时去remove这个消息.延迟时长可设200ms,表示长按的时间。这样,短按的话会在down时发送这个消息,up时马上又remove掉了,所以什么事情没有发生。长按时,在down时发送了消息,并长按时间超过200ms时就会真正去执行对Camera的操作。