当前位置: 首页 > wzjs >正文

传奇网站源码下载品牌网站制作报价

传奇网站源码下载,品牌网站制作报价,国内景观设计公司前十名,怎么样购买网站空间android整机测试,需要测试按键。 一般的键好按,好测试。如:音量加 ,音量- 。 但是,有些按键就不好测了。譬如:电源键(Power),Home键,Menu键,Bac…

android整机测试,需要测试按键。

一般的键好按,好测试。如:音量加+ ,音量- 。

但是,有些按键就不好测了。譬如:电源键(Power),Home键,Menu键,Back键,

以上按键,除了Back可以监听捕捉,其他按键都不好测。

还有特殊按键:F1,F2键。

需要找一个根本的解决方案。

只能从根本上解决这个问题。需要从源码入手。

当进入测试界面的时候,发送一个Intent告诉系统,开始进行按键测试。当离开界面的时候,告诉系统按键测试结束。

具体操作的代码在:

QSSI.13/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

public class PhoneWindowManager implements WindowManagerPolicy {// register for multiuser-relevant broadcastsfilter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
+        filter.addAction(CIT_TEST_ON);
+        filter.addAction(CIT_TEST_OFF);context.registerReceiver(mMultiuserReceiver, filter);mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
@@ -2795,6 +2797,35 @@ public class PhoneWindowManager implements WindowManagerPolicy {+ repeatCount + " keyguardOn=" + keyguardOn + " canceled=" + canceled);}+        if (citTestIn) {
+            switch (keyCode) {
+                case KeyEvent.KEYCODE_HOME:
+                    sendBroadcastIntent(ACTION_HOME);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_MENU:
+                    sendBroadcastIntent(ACTION_MENU);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_POWER:
+                    sendBroadcastIntent(ACTION_POWER);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_BACK:
+                    sendBroadcastIntent(ACTION_BACK);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_KEYF1:
+                    sendBroadcastIntent(ACTION_F1);
+                    if (DEBUG_INPUT) {
+                        Slog.d(TAG, "###########KEYF1###########keyCode: " + keyCode);
+                    }
+                    return key_consumed;
+                case KeyEvent.KEYCODE_KEYF2:
+                    sendBroadcastIntent(ACTION_F2);
+                    if (DEBUG_INPUT) {
+                        Slog.d(TAG, "###########KEYF2###########keyCode: " + keyCode);
+                    }
+                    return key_consumed;
+            }
+        }
+if (mKeyCombinationManager.isKeyConsumed(event)) {return key_consumed;}
@@ -2857,6 +2888,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {// Hijack modified menu keys for debugging featuresfinal int chordBug = KeyEvent.META_SHIFT_ON;+                if (citTestIn) {
+                    sendBroadcastIntent(ACTION_MENU);
+                }if (down && repeatCount == 0) {if (mEnableShiftMenuBugReports && (metaState & chordBug) == chordBug) {Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
@@ -3773,6 +3807,39 @@ public class PhoneWindowManager implements WindowManagerPolicy {final boolean down = event.getAction() == KeyEvent.ACTION_DOWN;boolean isWakeKey = (policyFlags & WindowManagerPolicy.FLAG_WAKE) != 0|| event.isWakeKey();
+        int key_consumed = 0;
+        if (DEBUG_INPUT) {
+            Slog.d(TAG, "######################keyCode: " + keyCode);
+        }
+        if (citTestIn) {
+            switch (keyCode) {
+                case KeyEvent.KEYCODE_HOME:
+                    sendBroadcastIntent(ACTION_HOME);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_MENU:
+                case 187:
+                    sendBroadcastIntent(ACTION_MENU);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_POWER:
+                    sendBroadcastIntent(ACTION_POWER);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_BACK:
+                    sendBroadcastIntent(ACTION_BACK);
+                    return key_consumed;
+                case KeyEvent.KEYCODE_KEYF1:
+                    sendBroadcastIntent(ACTION_F1);
+                    if (DEBUG_INPUT) {
+                        Slog.d(TAG, "###########KEYF1###########keyCode: " + keyCode);
+                    }
+                    return key_consumed;
+                case KeyEvent.KEYCODE_KEYF2:
+                    sendBroadcastIntent(ACTION_F2);
+                    if (DEBUG_INPUT) {
+                        Slog.d(TAG, "###########KEYF2###########keyCode: " + keyCode);
+                    }
+                    return key_consumed;
+            }
+        }if (!mSystemBooted) {// If we have not yet booted, don't let key events do anything.
@@ -4592,6 +4659,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {}}};
+    private boolean citTestIn = false;
+    private String CIT_TEST_ON = "com.aaabbb.citteston";
+    private String CIT_TEST_OFF = "com.aaabbb.cittestoff";
+
+    private String ACTION_HOME = "com.aaabbb.home";
+    private String ACTION_BACK = "com.aaabbb.back";
+    private String ACTION_MENU = "com.aaabbb.menu";
+    private String ACTION_POWER = "com.aaabbb.power";
+    private String ACTION_F1 = "com.aaabbb.f1";
+    private String ACTION_F2 = "com.aaabbb.f2";BroadcastReceiver mMultiuserReceiver = new BroadcastReceiver() {@Override
@@ -4604,10 +4681,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {mSettingsObserver.onChange(false);mDefaultDisplayRotation.onUserSwitch();mWindowManagerFuncs.onUserSwitched();
+            } else if (intent.getAction().equals(CIT_TEST_ON)) {
+                citTestIn = true;
+            } else if (intent.getAction().equals(CIT_TEST_OFF)) {
+                citTestIn = false;}}};+    private void sendBroadcastIntent(String action) {
+        Intent intent = new Intent(action);
+        mContext.sendBroadcast(intent);
+    }
+// Called on the PowerManager's Notifier thread.@Overridepublic void startedGoingToSleep(@PowerManager.GoToSleepReason int pmSleepReason) {

测试App需要注册一个BroadcastReceiver ,来处理接受到的按键广播。

PhoneWindowManager 要2个地方都要修改,才能覆盖所有的按键要求。menu处理起来复杂些。


文章转载自:

http://tpA8mARy.xbptx.cn
http://y43B1EzU.xbptx.cn
http://DnAJPFIc.xbptx.cn
http://pdCJfEFo.xbptx.cn
http://ac0Bwfbs.xbptx.cn
http://7XQUTNr9.xbptx.cn
http://JujOd0NJ.xbptx.cn
http://Cr0OEpuM.xbptx.cn
http://kSgfRXfG.xbptx.cn
http://7Vgremle.xbptx.cn
http://A6ew13rp.xbptx.cn
http://8Ud0Um58.xbptx.cn
http://KI93IHRE.xbptx.cn
http://AVnCTGzY.xbptx.cn
http://9rxNvdA0.xbptx.cn
http://4P4iRrDD.xbptx.cn
http://GNwz14eh.xbptx.cn
http://FC5I2MAR.xbptx.cn
http://sVW2YkL9.xbptx.cn
http://TBg8gi84.xbptx.cn
http://7XLiAYce.xbptx.cn
http://k71j20FK.xbptx.cn
http://aQhV8l64.xbptx.cn
http://4qgCbXFG.xbptx.cn
http://65Es8Og9.xbptx.cn
http://f89sh6AD.xbptx.cn
http://5VnPYNtq.xbptx.cn
http://ARDviXO9.xbptx.cn
http://w75W1tfS.xbptx.cn
http://BS7JVZdi.xbptx.cn
http://www.dtcms.com/wzjs/761678.html

相关文章:

  • 青岛网站美工商城网站建设报价方案
  • 建设网站转赚钱吗wordpress 并发
  • 怎样做网站广告天津常规网站建设系列
  • 网站体验方案做网站如何计算工资
  • 网站优化方案设计网站优化是什么
  • 做网站的基本功能视觉差 网站
  • 杭州哪家公司可以做网站中国最大的网站制作公司
  • 用新浪云做网站三网合一网站 东莞
  • com网站怎么注册wordpress本地视频播放器
  • 免费网站建设php电商培训班一般学多久
  • 网络营销案例分析试题郑州seo公司
  • ipv6域名解析 做网站网站摄影设计
  • 企业门户网站建设 验收thinkphp做的网站怎么预览
  • 淘宝怎么发布网站建设广东省建设安全卡查询网站
  • 公司宣传网站建站用爬虫做数据整合网站
  • 用模板搭建的网站备案吗推荐几个免费的网站
  • 黄石网站建设价格做关于什么的网站
  • 网站开发遇到的困难总结网站设计与制作软件
  • 秦皇岛百度网站排名做ppt常用的网站
  • 网站定制营销汕尾建设网站
  • 阜阳h5网站建设wordpress密码重置密码
  • 哪里有做网站平台单位网站建设汇报
  • 做彩票网站服务器网站开发团队成员
  • APP加网站建设预算多少钱wordpress安装失败
  • iis的默认网站没有自动启动利用c 做网站
  • 手机制作网站的软件郑州春蕾网站建设
  • 北京做网站企业管理咨询公司取名
  • 惠州开发做商城网站建设哪家好手机网站底部广告代码
  • 涿州住房和城乡建设局网站肇庆高端模板建站
  • 网站搭建博客wordpress怎么写代码