具体实现:https://github.com/XFY9326/KeyBlocker

实现原理:通过辅助服务实现按键阻塞

注:App必须在Manifest中注册辅助服务,并将该Service继承AccessibilityService

Override AccessibilityService 的 onKeyEvent方法

protected boolean onKeyEvent(KeyEvent event)

通过返回值可以控制按键阻塞,true即阻塞, false即不阻塞

其他

通过Root实现按键震动,亮度与辅助服务开关的控制

  1. 按键亮度控制命令
//关闭按键灯光
 chmod 644 /sys/class/leds/button-backlight/brightness
 echo 0 > /sys/class/leds/button-backlight/brightness
 chmod 444 /sys/class/leds/button-backlight/brightness
 //开启按键灯光
 chmod 644 /sys/class/leds/button-backlight/brightness
 echo 100 > /sys/class/leds/button-backlight/brightness
  1. 按键震动控制命令
//关闭按键震动
 chmod 644 /sys/class/timed_output/vibrator/vtg_level
 echo 0 > /sys/class/timed_output/vibrator/vtg_level
 chmod 444 /sys/class/timed_output/vibrator/vtg_level
 chmod 444 /sys/class/timed_output/vibrator/enable
 //开启按键震动
 chmod 644 /sys/class/timed_output/vibrator/vtg_level
 echo 100 > /sys/class/timed_output/vibrator/vtg_level
 chmod 644 /sys/class/timed_output/vibrator/enable
  1. 辅助服务控制命令
//开启辅助服务
 settings put secure enabled_accessibility_services {包名}/{服务名}
 settings put secure accessibility_enabled 1
 //关闭辅助服务
 settings put secure enabled_accessibility_services {包名}/{服务名}
 settings put secure accessibility_enabled 0