Android事件处理分析+Android事件处理 +Android输入事件流程_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android事件处理分析+Android事件处理 +Android输入事件流程

Android事件处理分析+Android事件处理 +Android输入事件流程

 2011/1/15 7:48:46  yueguc  http://yueguc.javaeye.com  我要评论(0)
  • 摘要:http://blog.csdn.net/linweig/archive/2010/02/27/5330391.aspx按键事件对于按键事件,调用mDevices->layoutMap->map进行映射。映射实际是由KeyLayoutMap::map完成的,KeyLayoutMap类里读取配置文件qwerty.kl,由配置文件qwerty.kl决定键值的映射关系。你可以通过修改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系
  • 标签:事件 android 流程 分析 事件处理

http://blog.csdn.net/linweig/archive/2010/02/27/5330391.aspx

按键事件

对于按键事件,调用mDevices->layoutMap->map进行映射。映射实际是由 KeyLayoutMap::map完成的,KeyLayoutMap类里读取配置文件qwerty.kl ,由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。?

JNI 函数?
在 frameworks/base/services/jni /com_android_server_KeyInputQueue.cpp文 件中,向 JAVA提供了函数android_server_KeyInputQueue_readEvent,用于读 取输入设备事件 。?
C代码:?

? static?jboolean?android_server_KeyInputQueue_readEvent(JNIEnv*?env,?jobject?clazz,?
???????????????????????????????????????????jobject?event)
{?
????gLock.lock();?
????sp?hub?=?gHub;?
????if?(hub?==?NULL)?{?
????????hub?=?new?EventHub;?
????????gHub?=?hub;?
????}?
????gLock.unlock();?
????int32_t?deviceId;?
????int32_t?type;?
????int32_t?scancode,?keycode;?
????uint32_t?flags;?
????int32_t?value;?
????nsecs_t?when;?
????bool?res?=?hub->getEvent(&deviceId,?&type,?&scancode,?&keycode,?
????????????&flags,?&value,?&when);?
????env->SetIntField(event,?gInputOffsets.mDeviceId,?(jint)deviceId);?
????env->SetIntField(event,?gInputOffsets.mType,?(jint)type);?
????env->SetIntField(event,?gInputOffsets.mScancode,?(jint)scancode);?
????env->SetIntField(event,?gInputOffsets.mKeycode,?(jint)keycode);?
????env->SetIntField(event,?gInputOffsets.mFlags,?(jint)flags);?
????env->SetIntField(event,?gInputOffsets.mValue,?value);?
????env->SetLongField(event,?gInputOffsets.mWhen,?
???????????????????????(jlong)(nanoseconds_to_milliseconds(when)));?
????return?res;?
}
发表评论
用户名: 匿名