android亮屏解锁demo
2016-06-23 17:13
471 查看
公司之前有个项目需要将待机的移动设备先进行亮屏和解锁再进行其他功能的操作,如是写了一个测试demo,将亮屏和解锁的代码部分写在service中,测试代码通过点击按钮,锁屏后10s发送消息启动服务,亮屏并解锁,实际项目中是通过广播的方式启动服务的.
代码展示如下:
1、布局文件wake_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/wake_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/start" />
</RelativeLayout>
2、服务WakLockService.java
package cn.wakelock.demo;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;
import android.util.Log;
public class WakLockService extends Service {
private static final String TAG="WakLockService";
// 键盘管理器
KeyguardManager keyguardManager;
// 键盘锁
private KeyguardLock keyguardLock;
// 电源管理器
private PowerManager powerManager;
// 唤醒锁
private PowerManager.WakeLock wakeLock;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
powerManager=(PowerManager) getSystemService(Context.POWER_SERVICE);
keyguardManager=(KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
}
@Override
@Deprecated
public void onStart(Intent intent, int startId) {
Log.e(TAG, "Service start--------------");
// 点亮亮屏
wakeLock = powerManager.newWakeLock
(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "Tag");
wakeLock.acquire();
keyguardLock = keyguardManager.newKeyguardLock("");
// 键盘解锁
keyguardLock.disableKeyguard();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAG, "Service onDestroy--------------");
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
if (keyguardLock!=null) {
keyguardLock.reenableKeyguard();
}
}
}
注意服务需要添加权限且在布局文件中进行注册
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<permission android:name="android.permission.DEVICE_POWER"/>
......
<service android:name="cn.wakelock.demo.WakLockService"></service>
3、WakeActivity.java
package cn.wakelock.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import cn.jon.demo.R;
public class WakeActivity extends Activity implements OnClickListener{
public static final int WAKE_UNLOCK=0x1123;
private Handler mHandler=new Handler()
{
public void handleMessage(android.os.Message msg)
{
switch (msg.what) {
case WAKE_UNLOCK:
Log.e("WakeActivity", "handleMessage begin----------");
Intent mIntent=new Intent();
mIntent.setClass(WakeActivity.this, WakLockService.class);
startService(mIntent);
break;
default:
break;
}
};
};
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.wake_main);
initViews();
}
private void initViews() {
mButton=(Button) findViewById(R.id.wake_start);
mButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.wake_start:
Message msg=new Message();
msg.what=WAKE_UNLOCK;
mHandler.sendMessageDelayed(msg, 10000);
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("WakeActivity", "stop service----------");
Intent mIntent=new Intent();
mIntent.setClass(WakeActivity.this, WakLockService.class);
stopService(mIntent);
}
}
测试时,点击按钮,锁屏,10s后屏幕会通过服务亮屏并解锁,项目中需要用到上述功能的可以嵌入上面代码部分.
代码展示如下:
1、布局文件wake_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/wake_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/start" />
</RelativeLayout>
2、服务WakLockService.java
package cn.wakelock.demo;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;
import android.util.Log;
public class WakLockService extends Service {
private static final String TAG="WakLockService";
// 键盘管理器
KeyguardManager keyguardManager;
// 键盘锁
private KeyguardLock keyguardLock;
// 电源管理器
private PowerManager powerManager;
// 唤醒锁
private PowerManager.WakeLock wakeLock;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
powerManager=(PowerManager) getSystemService(Context.POWER_SERVICE);
keyguardManager=(KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
}
@Override
@Deprecated
public void onStart(Intent intent, int startId) {
Log.e(TAG, "Service start--------------");
// 点亮亮屏
wakeLock = powerManager.newWakeLock
(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "Tag");
wakeLock.acquire();
keyguardLock = keyguardManager.newKeyguardLock("");
// 键盘解锁
keyguardLock.disableKeyguard();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAG, "Service onDestroy--------------");
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
if (keyguardLock!=null) {
keyguardLock.reenableKeyguard();
}
}
}
注意服务需要添加权限且在布局文件中进行注册
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<permission android:name="android.permission.DEVICE_POWER"/>
......
<service android:name="cn.wakelock.demo.WakLockService"></service>
3、WakeActivity.java
package cn.wakelock.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import cn.jon.demo.R;
public class WakeActivity extends Activity implements OnClickListener{
public static final int WAKE_UNLOCK=0x1123;
private Handler mHandler=new Handler()
{
public void handleMessage(android.os.Message msg)
{
switch (msg.what) {
case WAKE_UNLOCK:
Log.e("WakeActivity", "handleMessage begin----------");
Intent mIntent=new Intent();
mIntent.setClass(WakeActivity.this, WakLockService.class);
startService(mIntent);
break;
default:
break;
}
};
};
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.wake_main);
initViews();
}
private void initViews() {
mButton=(Button) findViewById(R.id.wake_start);
mButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.wake_start:
Message msg=new Message();
msg.what=WAKE_UNLOCK;
mHandler.sendMessageDelayed(msg, 10000);
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("WakeActivity", "stop service----------");
Intent mIntent=new Intent();
mIntent.setClass(WakeActivity.this, WakLockService.class);
stopService(mIntent);
}
}
测试时,点击按钮,锁屏,10s后屏幕会通过服务亮屏并解锁,项目中需要用到上述功能的可以嵌入上面代码部分.
相关文章推荐
- Android进程间通信(三):使用Messenger实现进程间通信
- Android重要的组件--Intent
- android 调试工具ADB命令详解
- android 调试工具ADB命令详解
- 基础总结篇之二:Activity的四种launchMode
- android获取内存信息
- Android工具类系列-SDCardUtil
- MPAndroidChart之lineChart中的诡异属性
- 语言名称客制化问题
- android 使用多个接口
- 解决Android Studio测试版降级运行报错
- android单例模式
- Android应用层View绘制流程
- Android工具类系列-LogUtil
- Android工具类系列-ToastUtil
- Android Studio教程--从Github 下载一个Repository
- 移动混合开发之android文件管理demo
- android 时间控件+选取本地照片
- Android工具类系列-DensityUtil(尺寸单位转换)
- Android消息机制---Looper工作原理