RK3576 GMS CtsViewTestCases 的 android.view.cts.input.InputDeviceKeyLayoutMapTest#testLayoutKeyEvents
平台:RK3576,android14
测试报告:
| arm64-v8a CtsViewTestCases | ||
| Test | Result | Details |
|---|---|---|
| android.view.cts.input.InputDeviceKeyLayoutMapTest#testLayoutKeyEvents |
fail
|
java.lang.AssertionError: Did not receive KEYCODE_TV
|
测试源码:
@Test
public void testLayoutKeyEvents() {
for (Map.Entry<String, Integer> entry : mKeyLayout.entrySet()) {
if (EXCLUDED_KEYS.contains(entry.getKey())) {
continue;
}
String label = LABEL_PREFIX + entry.getKey();
final int evKey = entry.getValue();
final int keyCode = KeyEvent.keyCodeFromString(label);
if (!isForwardedToApps(keyCode)) {
continue;
}
pressKey(evKey);
assertReceivedKeyEvent(KeyEvent.ACTION_DOWN, keyCode);
assertReceivedKeyEvent(KeyEvent.ACTION_UP, keyCode);
}
}
可以看到这个测试代码是 用于验证键盘布局(Key Layout)中定义的按键事件是否能正确生成并传递给应用程序。
分析错误log:
02-21 22:48:11.308 11632 29425 29437 E TestRunner: java.lang.AssertionError: Did not receive KEYCODE_TV 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.Assert.fail(Assert.java:89) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.Assert.assertTrue(Assert.java:42) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.Assert.assertNotNull(Assert.java:713) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at android.view.cts.input.InputDeviceKeyLayoutMapTest.assertReceivedKeyEvent(InputDeviceKeyLayoutMapTest.java:170) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at android.view.cts.input.InputDeviceKeyLayoutMapTest.testLayoutKeyEvents(InputDeviceKeyLayoutMapTest.java:272) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at java.lang.reflect.Method.invoke(Native Method) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:61) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:148) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:142) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at java.util.concurrent.FutureTask.run(FutureTask.java:264) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: at java.lang.Thread.run(Thread.java:1012) 02-21 22:48:11.308 11632 29425 29437 E TestRunner: ----- end exception -----
可以发现是 KEYCODE_TV 这个按键没有响应。排查SDK代码,发现之前的钱箱功能占用了这个按键。修改回来测试就PASS了。
补丁如下:
diff --git a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 6da500bd26e..cae34fa5814 100644
--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -4446,51 +4446,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
}
-
- case KeyEvent.KEYCODE_TV:{
- if(down){
- Intent intent = new Intent();
- intent.setAction("android.intent.action.CASH_BOX_OPEN");
- mContext.sendBroadcast(intent);
- }
- result &= ~ACTION_PASS_TO_USER;
- break;
- }
-
- case KeyEvent.KEYCODE_MEDIA_PLAY:{
- if(down){
- Intent intent = new Intent();
- intent.setAction("android.intent.action.CASH_BOX_CLOSE");
- mContext.sendBroadcast(intent);
- }
- result &= ~ACTION_PASS_TO_USER;
- break;
- }
-
- case KeyEvent.KEYCODE_MEDIA_STOP:{
- Log.d("asw"," KEYCODE_MEDIA_STOP");
- if(down){
- Intent intent = new Intent();
- intent.setAction("android.intent.action.CASH_BOX_SECOND_OPEN");
- mContext.sendBroadcast(intent);
- }
- result &= ~ACTION_PASS_TO_USER;
- break;
- }
-
- case KeyEvent.KEYCODE_BREAK:{
- if(down){
- Intent intent = new Intent();
- intent.setAction("android.intent.action.CASH_BOX_SECOND_CLOSE");
- mContext.sendBroadcast(intent);
- }
- result &= ~ACTION_PASS_TO_USER;
- break;
- }
-
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_MUTE: {
浙公网安备 33010602011771号