2012-03-27 3 views
2

Samsung Galaxy Note имеет стилус, и я наблюдаю странное поведение, когда стилус касается/покидает экран.Samsung Galaxy Note - почему события KeyEvent.KEYCODE_FORWARD_DEL генерируются, когда стилус касается/отпускает экран?

В дополнение к ожидаемым сериям вызовов SessionView.onTouchEvent вызовы SessionView.onKeyDown/SessionView.onKeyUp принимаются, когда стилус касается/покидает экран. Код KeyEvent для SessionView.onKeyDown/SessionView.onKeyUp вызовов 112 (KeyEvent.KEYCODE_FORWARD_DEL), сканкод 555.

Кроме нажатия/отпускания butoon по результатам стилус в SessionView.onKeyDown/SessionView.onKeyUp вызовов с кодом KeyEvent 114 (KeyEvent.KEYCODE_CTRL_RIGHT), сканкод 544.

источник события для KeyEvent сообщаются как 257 (InputDevice.SOURCE_KEYBOARD), что делает это неотличимо от события клавиатуры и путает функциональность клавиатуры в нашем приложении, потому что стилус штрихи производят неожиданный ключ DEL прессы.

Мне интересно, может ли кто-нибудь пролить свет на это поведение. Является ли это лишь проприетарным взломом разработчиков Samsung для реализации функций стилуса на Android 2.3? Что было бы надежным способом справиться с этим?

детали устройства:

Device model: GT-N7000 
Firmware version: 2.3.6 
Kernel version: 2.6.35.7-N7000XXLA4-CL886827 
[email protected]) 
#2 SMP PREEMPT Thu Jan 12 21:15:11 KST 2012 
Build number: GINGERBREAD.XXLA4 

ответ

0

Вы могли видеть KEYCODE_FORWARD_DEL новое поле в уровне API 11. Таким образом, ключ код 112 должен быть код определяется Samsung.

Использовать отражение Java в методе onKeyDown() в соответствии со следующим кодом. Мы можем получить 112 KEYCODE_PEN в системе.

Field[] fields = event.getClass().getDeclaredFields(); 
for (Field f : fields) { 
    if (f.getType().equals(int.class)) { 
     try { 
      TLog.i(TAG, f.getName() + ": " + f.getInt(event)); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^