覆盖具有警报应用活动的锁定屏幕

时间:2016-06-11 03:11:27

标签: android service broadcastreceiver alarm receiver

我正在研究不同类型的警报应用程序,似乎无法弄清楚如何使用它,以便当警报响起并收到时,如果屏幕关闭,它将打开并打开直到应用程序活动以关闭警报。

基本上与常规谷歌时钟相同。

我将这些添加到我的Manifest文件以及正确的接收器和服务标签。

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

我有警报接收器类来处理接收并调用唤醒锁类; 这是下面的接收器。

@Override
public void onReceive(Context context, Intent intent) {
  WakeLocker.acquire(context);
  Intent serviceIntent = new Intent(context, RingtonePlayingService.class);
  context.startService(serviceIntent);
}

这是RingtonPlayingService类的开头,它在收到后调用。我在本课程的后期处理声音播放,但感觉不需要显示。

NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Intent intentMain = new Intent(this.getApplicationContext(), MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intentMain, 0);

然后在 MainActivity 中添加了这些似乎适用于很多人的标志。

getWindow().addFlags(
  WindowManager.LayoutParams.FLAG_FULLSCREEN
  | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
  | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

我把它们放在setContentView调用之前。

我想我不确定所有内容需要处理的流程和顺序,以便实现这一目标。

我认为是在mainActivity中创建了待处理的意图,并且一旦发出警报,接收器就会将其拾起并触发RingtonePlayingService,它处理实际警报声的播放。然后该活动被触发以打开另一个活动,其中包含所有标志,这些标志将打开屏幕并覆盖锁定屏幕。

0 个答案:

没有答案