您的位置:首页 > 移动开发 > Android开发

Rexsee API介绍:Android屏幕锁定,Keyguard函数与扩展源码

2012-03-16 09:56 519 查看
Android锁屏时会先调用onPause();解锁时调用onResume,读入保存的应用程序的资源。如果运行程序时已经锁屏,应用程序会先调用onCreate(),然后onResume(),再则onPause()。

取消锁屏:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
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源码
/*
* 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.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%,且全部开放:http://www.rexsee.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息