需求
测试同学晚上跑Monkey 或者在线视频播放页面一直煲机的情况下,想要屏蔽其他遥控按键的输入,以免干扰。同时,需要能响应monkey 的虚拟按键输入。
实现:
在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java中进行拦截:
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
String IR_DEVICE = new String("Funshion Smart TV IR Receiver");//厂商可子定义修改
if ("1".equals(SystemProperties.get("debug.fun.irlock", "0")) &&
IR_DEVICE.equals(event.getDevice().getName())) {
return 0;
}
}
通过设置系统属性,增加控制和拦截
增加一个可执行程序 irlock 控制属性:
#define LOG_TAG "irlock"
#include <cutils/properties.h>
#include <string.h>
#include <utils/Log.h>
using namespace android;
int main(int argc, char** argv)
{
if (argc != 2) {
ALOGE("ERROR!! usage : irlock 0/1, 0 -- unlock, 1 -- lock");
return 0;
}
if (strcmp(argv[1], "1") == 0) {
property_set("debug.fun.irlock", "1");
}else{
property_set("debug.fun.irlock", "0");
}
return 0;
}
Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= irlock
LOCAL_SRC_FILES:= \
main.cpp
LOCAL_SHARED_LIBRARIES := \
libcutils \
liblog
include $(BUILD_EXECUTABLE)
PRODUCT_PACKAGES += irlock