【发布时间】:2017-12-30 09:30:27
【问题描述】:
有几篇 SO 帖子已经讨论过类似的问题,但我发现它们的相关性不大或过于复杂。我正在使用带有遥控器的 Android TV,它应该在企业环境中使用。用户应该没有太多的控制权,所以我不得不限制遥控器上的一些可用功能。
我创建了一个简单的应用程序,它覆盖onKeyDown() 并使用以下代码显示按下的键:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Read the input and display its code
switch(keyCode) {
case KeyEvent.KEYCODE_HOME:
mTextView.setText("Home");
break;
default:
char c = event.getDisplayLabel();
String code = String.valueOf(keyCode);
String displayText = c + " " + keyCode;
mTextView.setText(displayText);
mTextView.setBackgroundColor(mColor^=Color.GREEN);
}
return true;
}
我能够捕获大多数键并覆盖它们的行为,最显着的是 131、132、133 和 134(分别用作遥控器上的媒体、电视、网络和应用程序快捷方式)。
唯一的问题是 AOSP 源代码 (KeyEvent.java) 所说的主页按钮是系统特定的:
* This key is handled by the framework and is never delivered to applications. */
public static final int KEYCODE_HOME = 3;
一个让我印象深刻的解决方案是扩展 KeyEvent 并覆盖方法 isSystem() 以在所选键为 KEYCODE_HOME 时返回 false。但是,这个方法是最终定义的,我不能覆盖它。有任何想法吗?
【问题讨论】:
-
“kiosk”模式是否合适:developer.android.com/work/cosu.html
-
感谢@MorrisonChang 我正在阅读。看来锁定模式对我有用。
-
能分享一下这款遥控器的安卓电视型号吗?我在找菜单按钮的键码
标签: android android-homebutton