Android 虚拟按键 触感 调用流程
来源:互联网 发布:淘宝情趣记事微盘 编辑:程序博客网 时间:2024/05/16 13:07
PhoneWindowManager.java
intercept :拦截的意思
- public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) {
- if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
- && event.getRepeatCount() == 0) {
- performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
- }
- public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) {
- Log.e("++++++++++++++++++++++", "++++++++++performHapticFeedbackLw PhoneWindowManager.java");
- final boolean hapticsDisabled = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) == 0;
- if (!always && (hapticsDisabled || mKeyguardMediator.isShowingAndNotHidden())) {
- return false;
- }
- long[] pattern = null;
- switch (effectId) {
- case HapticFeedbackConstants.LONG_PRESS:
- pattern = mLongPressVibePattern;
- break;
- case HapticFeedbackConstants.VIRTUAL_KEY:
- pattern = mVirtualKeyVibePattern;
- break;
- case HapticFeedbackConstants.KEYBOARD_TAP:
- pattern = mKeyboardTapVibePattern;
- break;
- case HapticFeedbackConstants.SAFE_MODE_DISABLED:
- pattern = mSafeModeDisabledVibePattern;
- break;
- case HapticFeedbackConstants.SAFE_MODE_ENABLED:
- pattern = mSafeModeEnabledVibePattern;
- break;
- default:
- return false;
- }
- if (pattern.length == 1) {
- // One-shot vibration
- mVibrator.vibrate(pattern[0]);
- } else {
- // Pattern vibration
- mVibrator.vibrate(pattern, -1);
- }
- return true;
- }
其实还有其他的地方会用到振动,但是他们有自己的performHapticFeedback函数。比如:
View.java (这个会在长按桌面,图标时振动)
- public boolean performHapticFeedback(int feedbackConstant, int flags) {
- if (mAttachInfo == null) {
- return false;
- }
- //noinspection SimplifiableIfStatement
- if ((flags & HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING) == 0
- && !isHapticFeedbackEnabled()) {
- return false;
- }
- return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant,
- (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0);
- }
好像这个是通过Session.java调用了PhoneWindowManager.java的performHapticFeedbackLw()。
0 0
- Android 虚拟按键 触感 调用流程
- Android 虚拟按键 触感 调用流程
- Android hardware按键触感功能实现
- android虚拟按键
- Android: 发送虚拟按键
- android TP虚拟按键
- android虚拟按键
- android虚拟按键
- android 虚拟按键
- android 隐藏虚拟按键
- android 按键处理流程
- android驱动之虚拟按键
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- Android驱动之虚拟按键
- Android发送虚拟按键(转)
- Android 虚拟按键驱动实现
- android实现虚拟按键实例
- linux下创建,使用动态库
- exe程序嵌入Winform窗体
- android常见小知识
- 深入理解java虚拟机【类加载机制】
- Jquery几行代码解决跟随屏幕滚动DIV
- Android 虚拟按键 触感 调用流程
- centos下使用yum安装jdk java环境安装 activeMQ运行环境 tomcat安装
- GDB调试
- Android_各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解
- 使用TextView/EditText应该注意的地方
- clr via C#笔记(6)
- WaitForSingleObject 和 WaitForMultipleObjects函数
- Android版DailyInsist(三)——业务逻辑和数据操作MainFragment
- 控制文字内容的显示与隐藏