Как создать Уведомление с таймером внутри - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь сделать уведомление с таймером обратного отсчета.Я делаю не так?

Я пытаюсь обновить информацию в уведомлении, используя таймер обратного отсчета.Если экран не блокируется, он работает правильно.Но в случае блокировки мой экран включает каждое уведомление (так каждую секунду).Так что таймер работает правильно, но очень раздражает, что каждую секунду мой экран включается.

package com.example.yanec.schedulekpi;

import android.app.Notification;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.CountDownTimer;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;

import com.example.yanec.schedulekpi.Activities.MainActivity;
import com.example.yanec.schedulekpi.Fragments.DetailScheduleInfoFragment;


public class ServiceShowNotification extends BroadcastReceiver {

    CountDownTimer countDownTimer;
    long timeLeft;
    NotificationCompat.Builder mBuilder;
    NotificationManagerCompat notificationManager;

    @Override
    public void onReceive(final Context context, final Intent intent) {
        Log.d("myLogs", "OnReceive");
        timeLeft = intent.getLongExtra(Constants.INTENT_PASS_DATE, 0);

        showNotification(intent, context, Parser.toStringFrom(timeLeft));

        countDownTimer = new CountDownTimer(timeLeft, Constants.COUNT_DOWN_INTERVAL) {
            @Override
            public void onTick(long millisUntilFinished) {
                timeLeft -= Constants.COUNT_DOWN_INTERVAL;
                mBuilder.setContentText(Parser.toStringFrom(timeLeft));
                mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
                notificationManager.notify(Constants.NOTIFICATION_ID, mBuilder.build());

            }

            @Override
            public void onFinish() {
                DetailScheduleInfoFragment.isServiceWorking = false;
            }
        };

        countDownTimer.start();
    }

    private void showNotification(Intent intent, Context context, String time){
        Intent intent1 = new Intent(context, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent1, 0);

        mBuilder = new NotificationCompat.Builder(context, Constants.CHANNEL_ID)
                .setSmallIcon(R.drawable.ic_bar)
                .setContentTitle(intent.getStringExtra(Constants.INTENT_PASS_NAME))
                .setContentText(time)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setContentIntent(pendingIntent)
                .setAutoCancel(true);

        mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
        notificationManager = NotificationManagerCompat.from(context);
        notificationManager.notify(Constants.NOTIFICATION_ID, mBuilder.build());
    }

}

Если мой экран заблокирован, и я обновляю уведомление, мой экран не просыпается.Но если я просыпаюсь от экрана самостоятельно (не разблокируйте, просто просыпайтесь с помощью кнопки wakeUp), он показывает мне обновленную информацию.Спасибо.

...