1、要实现灭屏和唤醒,需要在Manifest文件添加如下权限:
<!-- 屏幕唤醒 --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 屏幕熄灭 --> <user-permission android:name="android.permission.DEVICE_POWER" />
2、以下是封装的一个工具类,实现屏幕唤醒和熄灭
package testWakeAndLock; import android.content.Context; import android.os.PowerManager; import android.os.SystemClock; import com.example.testshellcmd.SharedApplication; public class WakeAndLock { Context context; PowerManager pm; PowerManager.WakeLock wakeLock; public WakeAndLock() { context = SharedApplication.context; pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock"); } /** * 唤醒屏幕 */ public void screenOn() { wakeLock.acquire(); android.util.Log.i("cxq", "screenOn"); } /** * 熄灭屏幕 */ public void screenOff() { pm.goToSleep(SystemClock.uptimeMillis()); android.util.Log.i("cxq", "screenOff"); } }
3、自定义广播,用于控制屏幕的唤醒和熄灭,这样做的好处是可以在其他APP中也实现屏幕的控制
package testWakeAndLock; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class ScreenControlBroadcast extends BroadcastReceiver { private String op = "on"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub android.util.Log.i("cxq", "ScreenControlBroadcast"); op = intent.getStringExtra("screen"); WakeAndLock wakeAndLock = new WakeAndLock(); if (op.equals("off")) { wakeAndLock.screenOff(); } else { wakeAndLock.screenOn(); } } }
4、在Manifest文件中注册广播
<receiver android:name="testWakeAndLock.ScreenControlBroadcast" > <intent-filter> <action android:name="testWakeAndLock.ScreenControlBroadcast" /> </intent-filter> </receiver>
5、怎么在其他APP中调用?
其实有很多中方式,但是本文介绍一种方便快捷的方法,直接通过adb命令调用 格式如下:
亮屏
am broadcast -a testWakeAndLock.ScreenControlBroadcast --es screen on
灭屏
am broadcast -a testWakeAndLock.ScreenControlBroadcast --es screen off