我正在尝试创建一个在特定时间播放Youtube视频的闹钟。当我使用唤醒锁时,它会使用以下代码在锁定屏幕后面播放Youtube视频:
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "")
我希望应用程序唤醒手机并在锁定屏幕前播放Youtube视频,就像本机闹钟应用程序在锁定屏幕前响起一样。
有谁知道怎么做?谢谢!
答案 0 :(得分:4)
您可以创建系统叠加层并在其上播放视频。创建服务并添加以下代码:
@Override
public void onCreate() {
super.onCreate();
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(yourView, params);
}
别忘了在清单中添加SYSTEM_ALERT_WINDOW
权限。
编辑:您还可以试用TYPE_SYSTEM_ALERT
和TYPE_SYSTEM_ERROR
代替TYPE_SYSTEM_OVERLAY
。
答案 1 :(得分:2)
即使屏幕被锁定睡眠,您也可以请求显示活动,将此添加到onCreate:
this.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);