Người dùng của tôi sẽ sử dụng TalkBack được bật hoặc một số Dịch vụ trợ năng khác. Tôi muốn nắm bắt các sự kiện onKeyEvent trong Ứng dụng của chúng tôi nhưng sự kiện được gửi đến Dịch vụ trợ năng đã bật. Tôi đã tạo Dịch vụ trợ năng cơ bản sau đây.onKeyEvent & Accessibility Service
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
Khi tôi kiểm tra logcat Tôi không nhận được phản hồi. Có thể tiêu thụ Sự kiện Giảm âm lượng và Tăng trước khi TalkBack hoặc các Dịch vụ Trợ năng khác như vậy không?
Cảm ơn bạn.
EDIT:
TĂNG SAU CỜ VẪN không có may mắn:
info.flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;
Cảm ơn, tôi đã có thể nhận các sự kiện tăng giảm âm lượng. Không phát hiện các phím bấm bàn phím mềm / – ashishdhiman2007