我的用戶將使用已啓用話語提示或其他一些無障礙服務。我想在我們的應用程序中捕獲onKeyEvent事件,但事件被分派到啓用的輔助功能服務。我創建了以下基本的輔助功能服務。onKeyEvent&Accessibility服務
public class Accessibility_Service extends AccessibilityService {
private String TAG = Accessibility_Service.class.getSimpleName();
@Override
public boolean onKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
if (action == KeyEvent.ACTION_UP) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
Log.d("Hello", "KeyUp");
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
Log.d("Hello", "KeyDown");
}
return true;
} else {
return super.onKeyEvent(event);
}
}
/**
* Passes information to AccessibilityServiceInfo.
*/
@Override
public void onServiceConnected() {
Log.v(TAG, "on Service Connected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.packageNames = new String[] { "com.camacc" };
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.notificationTimeout = 100;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);
}// end onServiceConnected
/**
* Called on an interrupt.
*/
@Override
public void onInterrupt() {
Log.v(TAG, "***** onInterrupt");
}// end onInterrupt
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// TODO Auto-generated method stub
}
}// end Accessibility_Service class
當我檢查logcat時,我沒有得到任何迴應。在TalkBack或其他此類輔助功能服務之前是否可以使用音量降低和上傳事件?
謝謝。
編輯:
添加以下標誌仍然沒有運氣:
info.flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;
謝謝,我能夠獲得音量和音量降低的事件。不檢測軟鍵盤按鍵/ – ashishdhiman2007 2018-01-18 11:04:36