Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1071531
  • 博文数量: 403
  • 博客积分: 10272
  • 博客等级: 上将
  • 技术积分: 4407
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:22
文章分类

全部博文(403)

文章存档

2012年(403)

分类: 嵌入式

2012-03-16 15:31:12

Android锁屏时会先调用onPause();解锁时调用onResume,读入保存的应用程序的资源。如果运行程序时已经锁屏,应用程序会先调用onCreate(),然后onResume(),再则onPause()。

取消锁屏:

Html代码 复制代码 收藏代码
  1. <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
  2. KeyguardManager mKeyGuardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
  3. KeyguardLock mLock = mKeyGuardManager.newKeyguardLock("自己Activity名字");
  4. mLock.disableKeyguard();
KeyguardManager mKeyGuardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); KeyguardLock mLock = mKeyGuardManager.newKeyguardLock("自己Activity名字"); mLock.disableKeyguard();也是相当的简单了,但基于Rexsee的API,可以通过一句话搞定。

1. 取消锁屏:window.setTimeout('rexseeKeyguard.disable();alert(\'自动解锁!\');',10000);

alert('请按电源键关屏再开屏看到锁屏画面,10秒后自动解锁。')

2. 启动锁屏:rexseeKeyguard.reEnable();

如下是rexseeKeyguard.java源码:

Java代码 复制代码 收藏代码
  1. /*
  2. * Copyright (C) 2011 The Rexsee Open Source Project
  3. *
  4. * Licensed under the Rexsee License, Version 1.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. *
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package rexsee.core.alarm;
  17. import rexsee.core.browser.JavascriptInterface;
  18. import rexsee.core.browser.RexseeBrowser;
  19. import android.app.KeyguardManager;
  20. import android.app.KeyguardManager.KeyguardLock;
  21. import android.content.Context;
  22. public class RexseeKeyguard implements JavascriptInterface {
  23. private static final String INTERFACE_NAME = "Keyguard";
  24. @Override
  25. public String getInterfaceName() {
  26. return mBrowser.application.resources.prefix + INTERFACE_NAME;
  27. }
  28. @Override
  29. public JavascriptInterface getInheritInterface(RexseeBrowser childBrowser) {
  30. return this;
  31. }
  32. @Override
  33. public JavascriptInterface getNewInterface(RexseeBrowser childBrowser) {
  34. return new RexseeKeyguard(childBrowser);
  35. }
  36. private final Context mContext;
  37. private final RexseeBrowser mBrowser;
  38. private KeyguardLock mKeyguardLock = null;
  39. public RexseeKeyguard(RexseeBrowser browser) {
  40. mBrowser = browser;
  41. mContext = browser.getContext();
  42. }
  43. public RexseeKeyguard(Context context) {
  44. mBrowser = null;
  45. mContext = context;
  46. }
  47. //JavaScript Interface
  48. public void enable() {
  49. /*
  50. try {
  51. DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
  52. dpm.lockNow();
  53. } catch (Exception e) {
  54. mBrowser.exception(getInterfaceName(), e);
  55. }
  56. */
  57. }
  58. public void reEnable() {
  59. if (mKeyguardLock != null) {
  60. mKeyguardLock.reenableKeyguard();
  61. mKeyguardLock = null;
  62. }
  63. }
  64. public void disable() {
  65. KeyguardManager keyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
  66. mKeyguardLock = keyguardManager.newKeyguardLock("");
  67. mKeyguardLock.disableKeyguard();
  68. }
  69. }
/* * Copyright (C) 2011 The Rexsee Open Source Project * * Licensed under the Rexsee License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package rexsee.core.alarm; import rexsee.core.browser.JavascriptInterface; import rexsee.core.browser.RexseeBrowser; import android.app.KeyguardManager; import android.app.KeyguardManager.KeyguardLock; import android.content.Context; public class RexseeKeyguard implements JavascriptInterface { private static final String INTERFACE_NAME = "Keyguard"; @Override public String getInterfaceName() { return mBrowser.application.resources.prefix + INTERFACE_NAME; } @Override public JavascriptInterface getInheritInterface(RexseeBrowser childBrowser) { return this; } @Override public JavascriptInterface getNewInterface(RexseeBrowser childBrowser) { return new RexseeKeyguard(childBrowser); } private final Context mContext; private final RexseeBrowser mBrowser; private KeyguardLock mKeyguardLock = null; public RexseeKeyguard(RexseeBrowser browser) { mBrowser = browser; mContext = browser.getContext(); } public RexseeKeyguard(Context context) { mBrowser = null; mContext = context; } //JavaScript Interface public void enable() { /* try { DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); dpm.lockNow(); } catch (Exception e) { mBrowser.exception(getInterfaceName(), e); } */ } public void reEnable() { if (mKeyguardLock != null) { mKeyguardLock.reenableKeyguard(); mKeyguardLock = null; } } public void disable() { KeyguardManager keyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mKeyguardLock = keyguardManager.newKeyguardLock(""); mKeyguardLock.disableKeyguard(); } } 仅对Rexsee的源码和函数事件做了整理,相关的demo或源码解析可以在Rexsee社区了解,目前Rexsee已提供了近2000个扩展,覆盖Android原生功能超过90%,且全部开放:
阅读(765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~