`
mars5337
  • 浏览: 89351 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android 锁屏和关闭触摸模式

阅读更多
接下来的章节为应用程序UI的测试提供了一些提示,特别是帮助你在UI线程里处理动作,触屏和按键事件,和锁屏。

UI线程中测试

Activity运行在程序的UI线程里。一旦UI初始化后,例如在Activity的onCreate()方法后,所有与UI的交互都必须运行在UI线程里。当你正常运行程序时,它有权限可以访问这个线程,并且不会出现什么特别的事情。

当你运行测试程序时,这一点发生了变化。在带有instrumentation的类里,你可以触发方法在UI线程里运行。其它的测试用例类不允许这么做。为了一个完整的测试方法都在UI线程里运行,你可以使用@UIThreadTest来声明线程。注意,这将会在UI线程里运行方法里所有的语句。不与UI交互的方法不允许这么做;例如,你不能触发Instrumentation.waitForIdleSync()。

如果让方法中的一部分代码运行在UI线程的话,创建一个匿名的Runnable对象,把代码放到run()方法中,然后把这个对象传递给appActivity.runOnUiThread(),在这里,appActivity就是你要测试的app对象。

例如,下面的代码实例化了一个要测试的Activity,为Spinner请求焦点,然后发送一个按键给它。注意:waitForIdleSync和sendKeys不允许在UI线程里运行:

  private MyActivity mActivity; // MyActivity is the class name of the app under test

  private Spinner mSpinner;



  ...



  protected void setUp() throws Exception {

      super.setUp();

      mInstrumentation = getInstrumentation();



      mActivity = getActivity(); // get a references to the app under test



      /*

       * Get a reference to the main widget of the app under test, a Spinner

       */

      mSpinner = (Spinner) mActivity.findViewById(com.android.demo.myactivity.R.id.Spinner01);



  ...



  public void aTest() {

      /*

       * request focus for the Spinner, so that the test can send key events to it

       * This request must be run on the UI thread. To do this, use the runOnUiThread method

       * and pass it a Runnable that contains a call to requestFocus on the Spinner.

       */

      mActivity.runOnUiThread(new Runnable() {

          public void run() {

              mSpinner.requestFocus();

          }

      });



      mInstrumentation.waitForIdleSync();



      this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);



关闭触屏模式

为了控制从测试程序中发送给模拟器或设备的按键事件,你必须关闭触屏模式。如果你不这么做,按键事件将被忽略。

关闭触摸模式,你需要在调用getActivity()启动Activity之前调用ActivityInstrumentationTestCase2.setActivityTouchMode(false)。你必须在非UI线程中运行这个调用。基于这个原因,你不能在声明有@UIThread的测试方法调用。可以在setUp()中调用。

模拟器或设备的解锁

你可能已经发现,如果模拟器或设备的键盘保护模式使得HOME画面不可用时,UI测试不能正常工作。这是因为应用程序不能接收sendKeys()的事件。避免这种情况最好的方式是在启动模拟器或设备时关闭键盘保护模式。

你还可以显式地关闭键盘保护。这需要在manifest文件中添加一个权限,然后就能在程序中关闭键盘保护。注意,你必须在发布程序之前移除这个,或者在发布的程序中禁用这个功能。

在<manifest>元素下添加<uses-permission android:name=”androd.permission.DISABLE_KEYGUARD”/>。为了关闭键盘保护,在你测试的Activity的onCreate()方法中添加以下代码:

  mKeyGuardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);

  mLock = mKeyGuardManager.newKeyguardLock("activity_classname");

  mLock.disableKeyguard();
这里,activity_classname是Activity的类名。
分享到:
评论

相关推荐

    Android4.2原生锁屏GlowPadView

    总之,Android 4.2原生锁屏GlowPadView是一个强大的交互工具,它结合了视觉效果和触觉反馈,为用户提供了创新的触摸操作方式。理解和掌握GlowPadView的实现原理,对于提升Android应用的用户体验和界面设计具有重要...

    锁屏源码demo

    【锁屏源码demo】是一个Android应用开发的实例,它提供了自定义锁屏界面的代码实现,对于开发者来说,这是一个很好的学习和参考资源。在Android平台上,锁屏界面是用户与设备交互的重要入口,它的设计和功能直接影响...

    屏幕锁屏时捕捉屏幕按键过程

    在锁屏状态下,操作系统通常会进入一种低功耗模式,屏幕变暗或关闭,同时阻止大部分用户输入。然而,某些特定的按键(如电源键、音量键或特定的组合键)仍然可以激活,以便用户能够解锁设备或进行紧急操作。这些按键...

    android源码

    - WindowManager:管理窗口的布局和显示,处理触摸事件。 5. **安全与权限** - AndroidManifest.xml中的权限声明:每个应用必须在manifest文件中声明所需的权限,系统根据这些声明决定是否授予相应权限。 - ...

    安卓屏幕锁程序源代码

    4. **权限管理**:为了访问和控制屏幕状态,程序可能需要请求特定的Android权限,如`android.permission.WAKE_LOCK`,用于保持处理器唤醒以防止锁屏时屏幕自动关闭。 5. **用户界面**:UI设计是关键部分,源代码中...

    Android系统移动终端的登录.pdf

    此外,长按电源键还会显示更多选项,如关机、重启、飞行模式和静音等。 解锁Android设备通常采用滑动解锁方式,用户需按住屏幕中央的圆形图标,拖动到解锁图案上。为了增加设备的安全性,还可以设置图案、PIN码或...

    PasswordLock:android数字锁UI

    2. **触摸事件处理**:为了响应用户的触摸输入,需要实现`OnClickListener`和`OnTouchListener`接口,处理点击事件和滑动事件。这包括记录用户按下的顺序,以及验证输入的密码是否与预设的相符。 3. **动画效果**:...

    Android音乐播放器

    - **RecyclerView**:展示歌曲列表,支持滚动和触摸交互。 5. **多媒体格式支持**: - 支持多种音频格式,如MP3、AAC、FLAC等,可能需要第三方库如ExoPlayer来处理不常见的音频格式。 6. **状态保存和恢复**: ...

    RetroMusicPlayer,最佳材料设计Android音乐播放器.zip

    - **触控反馈**:对用户的触摸操作提供及时的视觉和听觉反馈,增强交互性。 2. **开源项目** - **代码透明**:RetroMusicPlayer的源代码可供开发者查看和学习,有助于技术交流和社区成长。 - **贡献与改进**:...

    N308Android系统设置界面汇总.docx

    在Android系统中,设置界面是用户管理和自定义设备的核心途径,涵盖了从网络连接到个性化设置的方方面面。在"N308Android系统设置界面汇总"中,我们可以看到一系列关键的设置选项,下面将对这些功能进行详细说明。 ...

    行业分类-设备装置-关闭多媒体文件播放的方法、终端、穿戴设备及播放装置.zip

    10. **系统级控制**:在操作系统层面,也有全局的多媒体控制中心,如iOS的控制中心和Android的通知中心,用户可以在任何应用界面快速切换或停止多媒体播放。 总之,关闭多媒体文件播放是一个涉及硬件、软件和用户...

    三星GT-I9000中文说明书

    - **安装SIM卡和电池**:首先需打开手机后盖,将SIM卡或USIM卡正确放置在指定位置,然后装入电池并关闭后盖。 - **为电池充电**:通过原装充电器连接手机与电源插座进行充电,首次充电建议充满后再使用。 - **安装...

    安卓4.2时钟

    此外,还有滑动关闭闹钟的触摸手势,提升了用户体验。 3. **计时器** 计时器功能对于烹饪、运动或者学习等活动非常实用。用户可以设定任意时间段,计时结束后会发出提示音。计时器同样支持多种自定义设置,例如...

    NetSupport School 课堂管理软件(简体中文版)

    为了方便访问该模式和其他连接模式,在最初加载教师端程序和重新开始一个班级时,将会显示新的“班级向导”。 通过“班级向导”,教师可以选择最适合其需求的模式,并在向导的指引下确定该班级所需的学生。可按教室...

Global site tag (gtag.js) - Google Analytics