打开和关闭手机屏幕方法:
1.关闭屏幕
//设备管理者
private DevicePolicyManager mDevicePolicyManager;
//关屏组件
private ComponentName mCompName;
onCreate()
{
mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
// 申请权限
mCompName = new ComponentName(this, YNAdminReceiver.class);
}
//点击按钮关闭屏幕
public void onScreenOff(View view) {
// 判断该组件是否有系统管理员的权限
if (!mDevicePolicyManager.isAdminActive(mCompName)) {//这一句一定要有...
Intent intent = new Intent();
//指定动作
intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//指定给那个组件授权
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mCompName);
startActivity(intent);
} else {
//立即关闭屏幕
mDevicePolicyManager.lockNow();
// devicePolicyManager.resetPassword("123321", 0);
Log.i(TAG, "具有权限,将进行锁屏....");
Log.i(TAG, "going to shutdown screen");
}
}
其中,组件mCompName是一个DeviceAdminReceiver:
package com.yn.receivers;
public class YNAdminReceiver extends DeviceAdminReceiver {
}
以上就是关屏的代码部分,剩下还需配置:
//res/xml/yndeviceadmin.xml
//AndroidMainfest.xml
android:resource="@xml/yndeviceadmin/>
通过以上配置,就可以实现关屏了。
2.打开屏幕(打开屏幕,只需一个wakelock即可)
private PowerManager mPowerManager;
private PowerManager.WakeLock mScreenLock;
onCreate()
{
mPowerManager = ((PowerManager) getSystemService(POWER_SERVICE));
mScreenLock = mPowerManager.newWakeLock(
PowerManager.ACQUIRE_CAUSES_WAKEUP //该flag使能屏幕关闭时,也能点亮屏幕(通常的wakelock只能维持屏幕处于一直开启状态,如果灭屏时,是不会自动点亮的)
| PowerManager.SCREEN_DIM_WAKE_LOCK
| PowerManager.ON_AFTER_RELEASE, "screenOnWakeLock");
}
//点击按钮,5s后获取锁(如果此时屏幕处于关闭状态,5s后获取锁时,会点亮屏幕)
public void onScreenOn(View View) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//isHeld(),判断是否获取锁,false未获取锁
if (!mScreenLock.isHeld()) {
mScreenLock.acquire();
Toast.makeText(MainActivity.this, "acquire", Toast.LENGTH_SHORT).show();
} else {
mScreenLock.release();
Toast.makeText(MainActivity.this, "release", Toast.LENGTH_SHORT).show();
}
}
}, 5000);
}
最后,还需要在AndroidManifest.xml中配置权限
通过以上步骤,就可以实现开启屏幕了。