android打开关闭屏幕
2016-10-21 18:04
302 查看
打开和关闭手机屏幕方法:
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
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>
//AndroidMainfest.xml
<!-- 配置权限 -->
<uses-permission android:name="android.permission.USES_POLICY_FORCE_LOCK" />
<!-- 声明关屏组件 -->
<receiver android:name="com.yn.receivers.YNAdminReceiver" >
<meta-data android:name="android.app.device_admin"
<!-- 指定组件配置 -->
android:resource="@xml/yndeviceadmin/>
<intent-filter >
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>
通过以上配置,就可以实现关屏了。
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中配置权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
通过以上步骤,就可以实现开启屏幕了。
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
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>
//AndroidMainfest.xml
<!-- 配置权限 -->
<uses-permission android:name="android.permission.USES_POLICY_FORCE_LOCK" />
<!-- 声明关屏组件 -->
<receiver android:name="com.yn.receivers.YNAdminReceiver" >
<meta-data android:name="android.app.device_admin"
<!-- 指定组件配置 -->
android:resource="@xml/yndeviceadmin/>
<intent-filter >
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>
通过以上配置,就可以实现关屏了。
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中配置权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
通过以上步骤,就可以实现开启屏幕了。
相关文章推荐
- 如何在Android中获知屏幕打开或者关闭
- Android 在程序中关闭和打开屏幕
- Android设备关闭或打开屏幕时调用的函数
- android监听屏幕打开关闭广播无响应的情况
- android屏幕全屏下判断软键盘打开关闭,软键盘打开关闭不好用
- Android 在程序中关闭和打开屏幕
- android 打开/关闭 移动网络
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间+修改usb debug默认关闭+mtk修改默认字体大小
- Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据
- 后台打开一个子窗口,显示在屏幕中间,关闭子窗体刷新子窗体代码 .
- Android 打开关闭闪光灯(里程碑2.1)
- [Android]开启、关闭GPS/Wifi/Bluetooth/Sync,调节屏幕亮度
- Android程序打开和关闭输入法
- eclipse中开发android程序时,打开layout配置文件eclipse关闭
- Android GPRS的自动打开与关闭。
- 关闭和打开屏幕的实用代码
- 9.1、Android中得到新打开Activity 关闭后返回的数据
- Android下打开/关闭wifi 及 状态(5个)的监视
- 开发板移植android屏幕关闭
- android 之得到新打开Activity 关闭后返回的数据