android – onKeyEvent和辅助功能服务

前端之家收集整理的这篇文章主要介绍了android – onKeyEvent和辅助功能服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的用户将使用TalkBack或其他一些Accessible Service.我想在我们的应用程序中捕获onKeyEvent事件,但事件将被分派到启用的Accessibility Services.我创建了以下基本辅助功能服务.
  1. public class Accessibility_Service extends AccessibilityService {
  2.  
  3. private String TAG = Accessibility_Service.class.getSimpleName();
  4.  
  5. @Override
  6. public boolean onKeyEvent(KeyEvent event) {
  7. int action = event.getAction();
  8. int keyCode = event.getKeyCode();
  9. if (action == KeyEvent.ACTION_UP) {
  10. if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
  11. Log.d("Hello","KeyUp");
  12. } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
  13. Log.d("Hello","KeyDown");
  14. }
  15. return true;
  16. } else {
  17. return super.onKeyEvent(event);
  18. }
  19. }
  20.  
  21. /**
  22. * Passes information to AccessibilityServiceInfo.
  23. */
  24. @Override
  25. public void onServiceConnected() {
  26. Log.v(TAG,"on Service Connected");
  27. AccessibilityServiceInfo info = new AccessibilityServiceInfo();
  28. info.packageNames = new String[] { "com.camacc" };
  29. info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
  30. info.notificationTimeout = 100;
  31. info.FeedbackType = AccessibilityServiceInfo.FeedBACK_SPOKEN;
  32. setServiceInfo(info);
  33.  
  34. }// end onServiceConnected
  35.  
  36. /**
  37. * Called on an interrupt.
  38. */
  39. @Override
  40. public void onInterrupt() {
  41. Log.v(TAG,"***** onInterrupt");
  42.  
  43. }// end onInterrupt
  44.  
  45. @Override
  46. public void onAccessibilityEvent(AccessibilityEvent event) {
  47. // TODO Auto-generated method stub
  48.  
  49. }
  50. }// end Accessibility_Service class

当我检查logcat时,我没有得到任何回复.是否可以在TalkBack或其他此类辅助功能服务之前使用降低音量和向上事件?

谢谢.

编辑:

添加以下标志仍然没有运气:

  1. info.flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;

解决方法

尝试在xml资源中配置这样的辅助功能服务,如果需要更多信息,请查看: https://developer.android.com/guide/topics/ui/accessibility/services.html
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <accessibility-service
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:accessibilityEventTypes="typeContextClicked|typeViewClicked"
  5. android:packageNames="com.example.andres.eventcapture"
  6. android:accessibilityFlags="flagRequestFilterKeyEvents"
  7. android:accessibilityFeedbackType="FeedbackAllMask"
  8. android:notificationTimeout="50"
  9. android:canRetrieveWindowContent="true"
  10. android:settingsActivity=""
  11. android:canRequestFilterKeyEvents="true"
  12. />

它工作得很好!

猜你在找的Android相关文章