android 点亮屏幕,解锁,保持常量



public class MainActivity extends Activity {

	String TAG = "tag";
	PowerManager mPowerManager; // 电源控制管理器,比如防锁屏
	WakeLock mWakeLock; // 唤醒锁

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 点亮屏幕
		acquireWakeLock(30000);
		// 解锁屏幕
		disableKeyguard(true);
	}

	// 解锁屏幕
	private void disableKeyguard(boolean isDis) {
		KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

		KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("123");
		if (isDis) {
			// 解锁
			keyguardLock.disableKeyguard();
		} else {
			// 屏幕锁定
			keyguardLock.reenableKeyguard();
		}
	}

	// 点亮屏幕
	public void acquireWakeLock(long milltime) {
		if (mWakeLock == null) {
			PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
			mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
					| PowerManager.ACQUIRE_CAUSES_WAKEUP
					| PowerManager.ON_AFTER_RELEASE, TAG);

			mWakeLock.acquire(milltime);
		}
	}

	// 关闭屏幕
	public void releaseWakeLock() {
		if (mWakeLock != null && mWakeLock.isHeld()) {
			mWakeLock.release();
			mWakeLock = null;
		}
	}

	// 屏幕保持常量
	private void screenWakeUp(boolean isWakeUp) {
		if (null == mPowerManager) {
			mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
		}
		if (null == mWakeLock) {
			mWakeLock = mPowerManager.newWakeLock(
					PowerManager.SCREEN_DIM_WAKE_LOCK, getClass().getName());
		}
		if (!mWakeLock.isHeld() && isWakeUp) {
			mWakeLock.acquire();
		}
		if (mWakeLock.isHeld() && !isWakeUp) {
			mWakeLock.release();
		}
	}


权限:
    <!-- 保持唤醒 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

猜你喜欢

转载自zheyiw.iteye.com/blog/1852366