Android锁屏或灭屏状态下,快速按两次音量下键实现抓拍功能(1.1Framework层使用广播形式实现)
2014-11-11 11:20
831 查看
实现思路:
WindowManagerService循环读取下面按键消息并分发给窗口,在消息分发前会在PhoneWindowManager.interceptKeyBeforeQueueing方法中进行消息的过滤。因此该实现方式为在消息分发前的interceptKeyBeforeQueueing方法中监听当前按键为音量下键,如果当前状态为锁屏状态,并按键为音量下键,且两次按键间隔时间小于800ms时发送抓拍广播--"com.bill.snapshot"。
具体实现方式如下:
/framework/base/policy/src/com/android/policy/impl/PhoneWindowManager.java
private long lastTime=0;
public int interceptKeybeforeQueueing(KeyEvent event,int policyFlags,boolean isScreenOn){
if(event.getKeyCode()==KeyEvent.KEYCODE_VOLUME_DOWN && event.isDwon()){
if(isKeyguardLocked()){
if((System.currentTimeMillis()-lastTime) < 800){
Intent intent=new Intent("com.bill.snapshot");
mContext.sendBroadcast(intent);
}
lastTime=System.currentTimeMillis();
}
}
......
}
WindowManagerService循环读取下面按键消息并分发给窗口,在消息分发前会在PhoneWindowManager.interceptKeyBeforeQueueing方法中进行消息的过滤。因此该实现方式为在消息分发前的interceptKeyBeforeQueueing方法中监听当前按键为音量下键,如果当前状态为锁屏状态,并按键为音量下键,且两次按键间隔时间小于800ms时发送抓拍广播--"com.bill.snapshot"。
具体实现方式如下:
/framework/base/policy/src/com/android/policy/impl/PhoneWindowManager.java
private long lastTime=0;
public int interceptKeybeforeQueueing(KeyEvent event,int policyFlags,boolean isScreenOn){
if(event.getKeyCode()==KeyEvent.KEYCODE_VOLUME_DOWN && event.isDwon()){
if(isKeyguardLocked()){
if((System.currentTimeMillis()-lastTime) < 800){
Intent intent=new Intent("com.bill.snapshot");
mContext.sendBroadcast(intent);
}
lastTime=System.currentTimeMillis();
}
}
......
}
相关文章推荐
- Android锁屏或灭屏状态下,快速按两次音量下键实现抓拍功能(1.1Framework层使用广播形式实现)
- Android锁屏或灭屏状态下,快速按两次音量下键实现抓拍功能(1.2Framework层使用startService形式实现)
- Android锁屏或灭屏状态下,快速按两次音量下键实现抓拍功能(1.2Framework层使用startService形式实现)
- Android锁屏或灭屏状态下,高速按两次音量下键实现抓拍功能(1.2Framework层使用startService形式实现)
- Android锁屏或灭屏状态下,快速按两次音量下键实现抓拍功能(一,Framework层实现)
- Android锁定屏幕或关闭状态-screen,高速按两次音量向下键来实现拍摄功能(1.1Framework在实现的形式层广播)
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Broadcast实现无序静态与动态广播功能
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- 【转】Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信