上篇文章《Android AccessibilityService拦截事件及VR眼镜返回按键捕捉》我们介绍了如何用AccessibilityService来拦截事件。
本篇我们来介绍另一种拦截按键的方式,就是在shell的状态下,使用getevent命令对输入事件进行分析。必须要说明的是getevent命令使用场景有:
1.在PC端shell环境下,不必root
2.在APP端使用必须要root权限
package com.jason.btnmonitor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initMonitor();
Button get = (Button) findViewById(R.id.get);
Button start = (Button) findViewById(R.id.start);
Button stop = (Button) findViewById(R.id.stop);
get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDevices();
}
});
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startMonitor();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopMonitor();
}
});
}
private void getDevices(){
BtnMonitorController.getInstance().getVRDevice();
}
private void initMonitor(){
BtnMonitorController.getInstance().init();
}
public void startMonitor(){
BtnMonitorController.getInstance().start();
}
public void stopMonitor(){
BtnMonitorController.getInstance().stop();
}
private void releaseMonitor(){
BtnMonitorController.getInstance().release();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMonitor();
}
}
MainActivity的实现。