以某客户的飞鼠为例,需要将MENU配好及File配成Source键。
首先,通过打印查看这两个按键的android keycode。其中MENU为132,File为136。
其次,查看ics\frameworks\base\core\java\android\view\KeyEvent.java,可知:
public static final int KEYCODE_MENU = 82;
public static final int KEYCODE_F2 = 132;
public static final int KEYCODE_F6 = 136;
public static final int KEYCODE_TV_INPUT = 178;
即,此时MENU键在android中已经映射为KEYCODE_F2,File键映射为KEYCODE_F6。
最后,在TvApp中将所有出现KEYCODE_MENU 和KEYCODE_TV_INPUT的地方都加上KEYCODE_F2及KEYCODE_F6
比如tvsettingui中Atvmanualtuning.java.中:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_F2:
if (ts.GetTsStatus() != TV_TS_STATUS.E_TS_NONE)
{
ts.atvSetManualTuningEnd();
}
intent.setClass(Atvmanualtuning.this, MainMenuActivity.class);
intent.putExtra("currentPage", 2);
startActivity(intent);
finish();
break;
}
关键在于理解KEYCODE_F2和KEYCODE_F2与其他按键是一样的,我们可以在任何onKey、onKeyDown、onKeyUp中去响应它们。
之前没反应,只是因为我们没有去定义这些键的行为而已。飞鼠上的大部分按键都是android本身就支持的,只有新增的电视上的
按键需要单独去配置,所以直接在TvApp中去添加按键响应即可。
|