一.使用AccessibilityService实现按钮监听,在资源文件夹新建xml资源文件夹,然后新accessibility_service_config.xml。
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:canRetrieveWindowContent="true"
android:canRequestFilterKeyEvents="true"
android:description="@string/accessibility_service_description"
/>
二.在配置文件中配置
<service
android:name=".service.MyAccessibilityService"
android:label="按钮监听"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
>
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService"/>
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config"
/>
</service>
三.创建MyAccessibilityService类,继承AccessibilityService类 重写onKeyEvent方法
public class MyAccessibilityService extends AccessibilityService {
private static final String TAG = "测试";
long aLong = 0, bLong = 0;
@Override
protected void onServiceConnected() {
super.onServiceConnected();
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
}
@Override
protected boolean onKeyEvent(KeyEvent event) {
if (event.getKeyCode()==93){
bLong = System.currentTimeMillis();
if (event.getKeyCode() == 93) {
if (aLong == 0) {
aLong = System.currentTimeMillis();
} else {
if (bLong - aLong < 2000) {
Map<String, String> map = new HashMap<>();
map.put("class", "AdPresentation.class");
EventBus.getDefault().post(map);
} else {
aLong = System.currentTimeMillis();
}
}
}
}
return false;
}
@Override
public void onInterrupt() {
}
@Override
public void onDestroy() {
super.onDestroy();
}
}