Android Key Event Handling: Screenshot and ADB Enablement
这段代码主要处理按键事件的逻辑。首先判断系统属性'sys.proj.type'是否为'ott',如果是,则表示当前设备为电视盒子类型,进入第一个if语句块;如果不是,则表示当前设备为移动端设备,进入最后一个if语句块。
对于电视盒子类型的设备,如果用户按下了数字键6,并且是按下状态(即true == down),则将变量mkeyPicCount赋值为1;如果用户按下了数字键3,并且此时mkeyPicCount为1,且是按下状态,则将mkeyPicCount赋值为2;以此类推,直到用户按下数字键1并且此时mkeyPicCount为4,且是按下状态,则调用mAmlScreenshotRunnable来执行截屏操作。
另外,如果用户在这个过程中按下了任意其他键,则将mkeyPicCount重置为0。
对于移动端设备,调用broadcastMobileKeyEvent方法来广播按键事件。其中KeyEvent是Android系统提供的一个类,用于描述按键事件。
代码解析:
if('unicom'.equals(SystemProperties.get('sys.proj.type', 'ott'))) {
if(keyCode == KeyEvent.KEYCODE_6 && true == down) {
mkeyPicCount = 1;
} else if (keyCode == KeyEvent.KEYCODE_3 && 1 == mkeyPicCount && true == down) {
mkeyPicCount = 2;
} else if (keyCode == KeyEvent.KEYCODE_2 && 2 == mkeyPicCount && true == down) {
mkeyPicCount = 3;
} else if (keyCode == KeyEvent.KEYCODE_1 && 3 == mkeyPicCount && true == down) {
mkeyPicCount = 4;
} else if (keyCode == KeyEvent.KEYCODE_PROG_RED && 4 == mkeyPicCount && true == down) {
mHandler.post(mAmlScreenshotRunnable);
} else if (true == down) {
mkeyPicCount = 0;
}
}
// ...其他代码
if ('mobile'.equals(SystemProperties.get('sys.proj.type', 'ott'))) {
broadcastMobileKeyEvent(event);
}
代码功能:
- 判断设备类型: 通过
SystemProperties.get('sys.proj.type', 'ott')获取系统属性值,判断当前设备是电视盒子还是移动设备。 - 电视盒子截屏: 通过连续按下数字键6、3、2、1,最后按红色按键触发截屏操作。
- 移动端按键广播: 通过调用
broadcastMobileKeyEvent(event)将按键事件广播出去。
原文地址: https://www.cveoy.top/t/topic/luJH 著作权归作者所有。请勿转载和采集!