在Android中,WakeLock可以让进程持续执行,即使手机关屏、进入睡眠模式。。基于Rexsee的WakeLock扩展可以使用JS实现。。
【函数】 void acquire(boolean onAfterRelease) 【说明】 点亮屏幕直到release()被调用。 【参数】 onAfterRelease:在release()被调用后是否继续点亮至默认的屏幕超时。 【示例】
window.setTimeout('rexseeKeyguard.disable();rexseeWakeLock.acquire(false);alert(\'点亮屏幕!\');',5000);alert('请按电源键关屏,5秒后自动亮屏。');

【函数】 void release() 【说明】 允许黑屏,如果调用的acquire()函数携带了参数true则仍需等待默认的屏幕超时时间后才会黑屏。 【示例】
rexseeWakeLock.release();

rexseeWakeLock.java源码
/* * 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 * *      http://www.rexsee.com/CN/legal/license.html * * 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.content.Context;  import android.os.PowerManager;   public class RexseeWakeLock implements JavascriptInterface {          private static final String INTERFACE_NAME = "WakeLock";         @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 RexseeWakeLock(childBrowser);         }          private final Context mContext;         private final RexseeBrowser mBrowser;         private PowerManager.WakeLock mWakeLock = null;          public RexseeWakeLock(RexseeBrowser browser) {                 mBrowser = browser;                 mContext = browser.getContext();         }         public RexseeWakeLock(Context context) {                 mBrowser = null;                 mContext = context;         }          //JavaScript interface         public void acquire(boolean onAfterRelease) {                 release();                 PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);                 int mode = PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;                 if (onAfterRelease) {                         mode = mode | PowerManager.ON_AFTER_RELEASE;                 }                 mWakeLock = pm.newWakeLock(mode, "");                 mWakeLock.acquire();         }         public void release() {                 if (mWakeLock != null) {                         mWakeLock.release();                         mWakeLock = null;                 }         }   }

仅对Rexsee的源码和函数事件做了整理,相关的demo或源码解析可以在Rexsee社区了解,目前Rexsee已提供了近2000个扩展,覆盖Android原生功能超过90%,且全部开放: http://www.rexsee.com/

更多相关文章

  1. C语言函数的递归(上)
  2. android webkit 网页标签的解析与预下载的实现
  3. Android关于Activity屏蔽/拦截Home键
  4. android手机屏幕横竖屏切换禁止调用生命周期函数方法
  5. Android(安卓)5.0(Lollipop)中的SurfaceTexture,TextureView, Sur
  6. Ruby实现Android自动化屏幕适配
  7. Android判断机器默认屏幕方向
  8. Android(安卓)HttpURLConnection及HttpClient选择
  9. android中Bitmap数据如何释放

随机推荐

  1. SQL MSSQL 常用代码大全
  2. MSSQL数据库迁移之用户名问题
  3. sqlserver 数据库被注入解决方案
  4. win2003 安装 sqlserver 2005的方法
  5. sql 版本详解 让你认识跟sql2000的区别
  6. SQLSERVER 时间格式大全
  7. sqlserver replace函数 批量替换数据库中
  8. sql 中 case when 语法使用方法
  9. 将MS SQL SERVER数据库运行在普通用户(独
  10. SQLServer 优化SQL语句 in 和not in的替