赞
踩
最近给TV投影仪添加了一个热键,不像之前通过HotkeyDispatcher来处理,而是直接通过PhoneWindowManager.java来发送intent,简单粗暴,本文记录一下,同时简要描述下按键的处理流程。
遥控器有一键投屏按键,具体功能如下:
//android\kernel\fusion\mstar2\drv\ir_mirc\ir_config.h
//Number of IR should this chip supported
#define IR_SUPPORT_NUM 1
//Add & Modify Customer IR with Differ Headcode Here
static IR_Profile_t ir_config[IR_SUPPORT_NUM]=
{
// protocol_type, Headcode, IRSpeed ,enable
{IR_TYPE_NEC,NUM_KEYMAP_MSTAR_TV,0,1}, // Mstar IR customer code
// …… 省略 ……
//{IR_TYPE_TOSHIBA,NUM_KEYMAP_SKYWORTH_TV,0,1}, //skyworth toshiba ir
// …… 省略 ……
};
keymap-mstar-tv.c 或 ir_config.ini ,请使用自己平台的配置文件
投屏按键用KEY_F10按键: { 0x3d, KEY_F10 },
//android\kernel\fusion\mstar2\drv\ir_mirc\keymaps\keymap-mstar-tv.c
static struct key_map_table mstar_tv[] = {
{ 0x12, KEY_POWER },
// …… 省略 ……
{ 0x3D, KEY_F10 }, //a Screen projection Hotkey
};
else if (keyCode == KeyEvent.KEYCODE_F10) {
Log.d(TAG, "zs, amizhou KEYCODE_F10, down="+down);
if (down)
{
Intent intent = new Intent();
intent.setAction("com.amizhou.action.tvkey");
intent.putExtra("param","happyplay");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
return 0;
}
<activity
android:name=".HotkeyMainActivity"
android:exported="true" >
<intent-filter>
<action android:name="com.amizhou.action.tvkey" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
public class HotkeyMainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hotkey_main);
Intent intent = getIntent();
String p = intent.getStringExtra("param"); // p = "happyplay"
TextView tv = findViewById(R.id.tv_show);
tv.append(p);
}
}
Android : 输入设备键值从底层到应用层的映射流程 - 走看看 (zoukankan.com)
Android输入事件的源头是位于/dev/input/下的设备节点,而输入系统的终点是由WMS管理的某个窗口。最初的输入事件为内核生成的原始事件,而最终交付给窗口的则是KeyEvent或MotionEvent对象。因此Android输入系统的主要工作是读取设备节点中的原始事件,将其加工封装,然后派发给一个特定的窗口以及窗口中的控件。这个过程由InputManagerService(以下简称IMS)系统服务为核心的多个参与者共同完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。