【问题标题】:How to show notification with ringing alarm in background?如何在后台显示带有响铃警报的通知?
【发布时间】:2020-07-02 10:23:31
【问题描述】:

伙计们,我正在开发一个警报应用程序,其中警报在正确的时间触发良好,但缺点是当警报响起时有活动,然后当我们按下主页按钮时它正在响起真正的问题是什么时候应用程序通过按下主页按钮并按下或滑动关闭所有应用程序关闭应用程序被破坏我需要像谷歌这样的东西,即使应用程序关闭也能显示通知和播放声音。

所以我认为有人对这个问题有想法。

这是来自 Google 时钟的内容

Googel Clock image

由于 android Q,我开发了一些东西,当用户在警报时还活着时,我们只是在此帮助下显示通知。

public class DismissAlarmNotificationController {

public final int NOTIFICATION_ID = 1;
public static final String INTENT_KEY_NOTIFICATION_ID = "notificationId";
public final String CHANNEL_ID = "channel-01";
private NotificationManager notificationManager;
private Context context;
private final int IMPORTANCE = NotificationManager.IMPORTANCE_HIGH;

public DismissAlarmNotificationController(Context context) {
    notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    this.context = context;
}

public void showNotification() {

    Intent fullScreenIntent = new Intent(context, DismissAlarmActivity.class);
    PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(context, 0,
            fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel = new NotificationChannel(
                CHANNEL_ID, getChannelName(), IMPORTANCE);
        notificationManager.createNotificationChannel(notificationChannel);
    }

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_alarm_on_notification)
            .setContentTitle(context.getString(R.string.dismiss_alarm_notification_title))
            .setContentText(context.getString(R.string.dismiss_alarm_notification_body, getCurrentTime()))
            .setAutoCancel(true)
            .addAction(getDismissNotificationAction())
            .setFullScreenIntent(fullScreenPendingIntent, true);

    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());

}

public String getChannelName() {
    return context.getString(R.string.app_name) + "Channel";
}

public void cancelNotification() {
    notificationManager.cancelAll();
}

private NotificationCompat.Action getDismissNotificationAction() {
    Intent dismissIntent = new Intent(context, DismissNotificationReceiver.class);
    dismissIntent.putExtra(INTENT_KEY_NOTIFICATION_ID, NOTIFICATION_ID);

    PendingIntent dismissNotificationPendingIntent = PendingIntent.getBroadcast(context, 0, dismissIntent, PendingIntent.FLAG_CANCEL_CURRENT);

    return new NotificationCompat.Action.Builder(
            0,
            context.getString(R.string.dismiss_alarm_notification_dismiss_button_title),
            dismissNotificationPendingIntent)
            .build();
}

private String getCurrentTime() {
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
    Date currentTime = new Date();
    return dateFormat.format(currentTime);
}
}

提前致谢。

【问题讨论】:

    标签: java android android-notifications android-preferences android-alarms


    【解决方案1】:

    试试Android's WorkManager

    即使应用程序关闭或手机已重新启动,它也可以让您运行后台工作。 希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多