Rexsee API介绍:Android WakeLock进程持续
?
在Android中,WakeLock可以让进程持续执行,即使手机关屏、进入睡眠模式。。基于Rexsee的WakeLock扩展可以使用JS实现。。
?
【函数】void acquire(boolean onAfterRelease)
【说明】点亮屏幕直到release()被调用。
【参数】onAfterRelease:在release()被调用后是否继续点亮至默认的屏幕超时。
【示例】
?
Html代码??
【函数】void release()
【说明】允许黑屏,如果调用的acquire()函数携带了参数true则仍需等待默认的屏幕超时时间后才会黑屏。
【示例】
?
Html代码??
?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; } } }