android2.2和2.3对于触摸屏幕唤醒屏幕的处理
来源:互联网 发布:英国贵族 知乎 编辑:程序博客网 时间:2024/05/21 10:30
对于2.2 我是在windowmanagerservice.java里处理的,处理压力值用压力值来判断
case RawInputEvent.EV_ABS: {
boolean screenIsOff = !mPowerManager.isScreenOn();
boolean screenIsDim = !mPowerManager.isScreenBright();
int brightness = mPowerManager.getBacklightBrightness();
if (screenIsOff) {
if (!mPolicy.isWakeAbsMovementTq(event.deviceId,
device.classes, event)) {
//Slog.i(TAG, "dropping because screenIsOff and !isWakeKey");
return false;
}
event.flags |= WindowManagerPolicy.FLAG_WOKE_HERE;
}
if (screenIsDim) {
event.flags |= WindowManagerPolicy.FLAG_BRIGHT_HERE;
}
if(brightness == 0){
mEventdownforBacklight = TOUCH_DOWN;
return !McuService.getMcuService().ResetBacklightStatus();
/* }else if (mEventdownforBacklight == TOUCH_DOWN){
if( (event.scancode == RawInputEvent.ABS_PRESSURE) &&
((event.value == 0) || (event.value > 1000)) ){
mEventdownforBacklight = TOUCH_UP;
mUpTime = SystemClock.elapsedRealtime();
}*/
}else if (mEventdownforBacklight == TOUCH_DOWN){
if( ((event.scancode == RawInputEvent.ABS_PRESSURE) &&
((event.value == 0) || (event.value > 1000))) ||
((event.scancode == RawInputEvent.ABS_MT_TOUCH_MAJOR) &&
(event.value == 0)) ){
mEventdownforBacklight = TOUCH_UP;
mUpTime = SystemClock.elapsedRealtime();
}
return false;
}else if (mEventdownforBacklight == TOUCH_UP){
if((SystemClock.elapsedRealtime() -mUpTime) < 200)
return false;
else{
mEventdownforBacklight = BACKLIGHT_ON;
return true;
}
}
return true;
}
对于2.3我是在frameworks/base/lib/ui/InputDispatcher.cpp的
void InputDispatcher::dispatchOnceInnerLocked(nsecs_t keyRepeatTimeout,
nsecs_t keyRepeatDelay, nsecs_t* nextWakeupTime) {
。。。。。。。。。。。。。。。。。。。。。。。。。。。
switch (mPendingEvent->type) {
case EventEntry::TYPE_CONFIGURATION_CHANGED: {
ConfigurationChangedEntry* typedEntry =
static_cast<ConfigurationChangedEntry*>(mPendingEvent);
done = dispatchConfigurationChangedLocked(currentTime, typedEntry);
dropReason = DROP_REASON_NOT_DROPPED; // configuration changes are never dropped
break;
}
case EventEntry::TYPE_KEY: {
KeyEntry* typedEntry = static_cast<KeyEntry*>(mPendingEvent);
if (isAppSwitchDue) {
if (isAppSwitchKeyEventLocked(typedEntry)) {
resetPendingAppSwitchLocked(true);
isAppSwitchDue = false;
} else if (dropReason == DROP_REASON_NOT_DROPPED) {
dropReason = DROP_REASON_APP_SWITCH;
}
}
done = dispatchKeyLocked(currentTime, typedEntry, keyRepeatTimeout,
&dropReason, nextWakeupTime);
CheckAndOpenScreen();//处理物理按键的
break;
}
case EventEntry::TYPE_MOTION: {
MotionEntry* typedEntry = static_cast<MotionEntry*>(mPendingEvent);
if (dropReason == DROP_REASON_NOT_DROPPED && isAppSwitchDue) {
dropReason = DROP_REASON_APP_SWITCH;
}
done = dispatchMotionLocked(currentTime, typedEntry,
&dropReason, nextWakeupTime);
CheckAndOpenScreen();//处理触摸屏的
break;
}
default:
assert(false);
break;
}
。。。。。。。。。。。。。。。。。
对于2.3input输入事件可以参考http://blog.csdn.net/andyhuabing/article/details/7006688整个帖子。
- android2.2和2.3对于触摸屏幕唤醒屏幕的处理
- android 保持屏幕常亮和唤醒屏幕的方式
- Android屏幕的休眠和唤醒
- 1.处理屏幕触摸(单点触摸)
- android 唤醒和点亮屏幕
- 唤醒屏幕缓慢的解决方法
- 屏幕的唤醒与休眠
- 触摸屏幕
- 屏幕触摸
- 全志a20 添加触摸唤醒屏幕功能
- android 屏幕触摸事件的分发与处理
- android 屏幕触摸事件的分发与处理
- Android 监听屏幕唤醒和关闭的广播
- Android 监听屏幕唤醒、关闭和解锁的广播
- ios中屏幕触摸和摇晃的方法
- android唤醒屏幕/保持屏幕唤醒
- android保持屏幕常亮以及唤醒屏幕的方式
- Android 中保持屏幕唤醒的方法
- Android的计量单位px,in,mm,pt,dp,dip,sp
- SQL替换NOT IN的几种方法总结
- Exception拦截器方便调试
- 中断六
- mfc设置字体,但是无法改变的注意事项
- android2.2和2.3对于触摸屏幕唤醒屏幕的处理
- FreeType初探---获取字体文本度量信息
- Nginx学习笔记2—Nginx(Win32) nginx.conf 中文详解
- latex写论文 问题集锦
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- js中的preventDefault
- Android之Gallery
- 传智博客JAVA基础第十天
- 纳秒与微秒级时间