我正在研究不同类型的警报应用程序,似乎无法弄清楚如何使用它,以便当警报响起并收到时,如果屏幕关闭,它将打开并打开直到应用程序活动以关闭警报。
基本上与常规谷歌时钟相同。
我将这些添加到我的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,它处理实际警报声的播放。然后该活动被触发以打开另一个活动,其中包含所有标志,这些标志将打开屏幕并覆盖锁定屏幕。