android定制系统主业务mainapk作为laucher时,
mainapk 兼有laucher和业务功能于一体。
应用时发现: 第三方APK运行时, mainapk可能接收不到超时消息,这样会失去对整个系统的管控。
解决办法:
在触发超时时: 驱动层模拟一个HOME键事件,让它回到主界面Home。
每次超时待机后:会跳到主界面,让mainapk在前台运行。
核心代码如下,
input = input_allocate_device();
if ( !input) {
printk("failto allocate statei back key\n");
}
input->name = "virtual-key";
input->phys = "home-keys/input0";
input->id.bustype = BUS_HOST;
input->id.vendor = 0x0001;
input->id.product = 0x0001;
input->id.version = 0x0100;
input->evbit[0] = BIT_MASK(EV_SYN) | BIT_MASK(EV_KEY) ;
input_set_capability(input, EV_KEY,3);
/* Enable auto repeat feature of Linux input subsystem */
input_register_device(input);
//在进入待机部分代码处,添加发送HOME按键
input_report_key(input, 3, 1);
input_sync(input);
input_report_key(input, 3, 0);
input_sync(input);