Advertisement
Mujiburrohman

Realease Reminder

Aug 6th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.88 KB | None | 0 0
  1. package com.zeeb.moviecataloguelocalstorage.reminder;
  2.  
  3. import android.app.AlarmManager;
  4. import android.app.NotificationChannel;
  5. import android.app.NotificationManager;
  6. import android.app.PendingIntent;
  7. import android.content.BroadcastReceiver;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.graphics.Color;
  11. import android.media.RingtoneManager;
  12. import android.net.Uri;
  13. import android.os.Build;
  14. import android.support.v4.app.NotificationCompat;
  15. import android.support.v4.content.ContextCompat;
  16. import android.util.Log;
  17.  
  18. import com.zeeb.moviecataloguelocalstorage.R;
  19. import com.zeeb.moviecataloguelocalstorage.activity.DetailMovieActivity;
  20. import com.zeeb.moviecataloguelocalstorage.data.remote.model.movie.ResultsItemMovie;
  21.  
  22. import java.util.Calendar;
  23. import java.util.List;
  24.  
  25. public class ReleaseTodayReminder extends BroadcastReceiver {
  26.  
  27.  
  28. private static final int NOTIFICATION_ID = 101;
  29.  
  30. public static final String NOTIFICATION_CHANNEL_ID = "10001";
  31.  
  32. private static int notifId = 1000;
  33.  
  34. @Override
  35. public void onReceive(Context context, Intent intent) {
  36.  
  37. int notifId = intent.getIntExtra("id", 0);
  38. String title = intent.getStringExtra("title");
  39.  
  40.  
  41. showAlarmNotification(context, title, notifId);
  42. }
  43.  
  44. private void showAlarmNotification(Context context, String title, int notifId) {
  45. NotificationManager notificationManager = (NotificationManager) context.getSystemService(
  46. Context.NOTIFICATION_SERVICE);
  47.  
  48. Intent intent = new Intent(context, DetailMovieActivity.class);
  49. // intent.putExtra(DetailActivity.MOVIE_INTENT, movie);
  50. PendingIntent pendingIntent = PendingIntent.getActivity(context, notifId, intent,
  51. PendingIntent.FLAG_UPDATE_CURRENT);
  52.  
  53. Uri alarmRingtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
  54. NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
  55. .setSmallIcon(R.drawable.ic_alarm_black_24dp)
  56. .setContentTitle(title)
  57. .setContentText(String.valueOf(String.format(context.getString(R.string.upcoming_reminder_msg), title)))
  58. .setContentIntent(pendingIntent)
  59. .setPriority(NotificationCompat.PRIORITY_HIGH)
  60. .setAutoCancel(true)
  61. .setColor(ContextCompat.getColor(context, android.R.color.transparent))
  62. .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
  63. .setSound(alarmRingtone);
  64.  
  65. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
  66. int importance = NotificationManager.IMPORTANCE_HIGH;
  67. NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
  68. notificationChannel.enableLights(true);
  69. notificationChannel.setLightColor(Color.RED);
  70. notificationChannel.enableVibration(true);
  71. notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
  72.  
  73. builder.setChannelId(NOTIFICATION_CHANNEL_ID);
  74. notificationManager.createNotificationChannel(notificationChannel);
  75. }
  76.  
  77. notificationManager.notify(notifId, builder.build());
  78. }
  79.  
  80. public void setRepeatingAlarm(Context context, List<ResultsItemMovie> movies) {
  81.  
  82. int delay = 0;
  83.  
  84. for (ResultsItemMovie movie : movies) {
  85. cancelAlarm(context);
  86. AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  87. Intent intent = new Intent(context, ReleaseTodayReminder.class);
  88. intent.putExtra("title", movie.getTitle());
  89. intent.putExtra("id", notifId);
  90.  
  91. PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  92.  
  93. Calendar calendar = Calendar.getInstance();
  94. calendar.set(Calendar.HOUR_OF_DAY, 15);
  95. calendar.set(Calendar.MINUTE, 16);
  96. calendar.set(Calendar.SECOND, 0);
  97.  
  98. int SDK_INT = Build.VERSION.SDK_INT;
  99. if (SDK_INT < Build.VERSION_CODES.KITKAT) {
  100. alarmManager.set(AlarmManager.RTC_WAKEUP,
  101. calendar.getTimeInMillis() + delay, pendingIntent);
  102. } else if (SDK_INT > Build.VERSION_CODES.KITKAT && SDK_INT < Build.VERSION_CODES.M) {
  103. alarmManager.setInexactRepeating(
  104. AlarmManager.RTC_WAKEUP,
  105. calendar.getTimeInMillis() + delay,
  106. AlarmManager.INTERVAL_DAY,
  107. pendingIntent
  108. );
  109. } else if (SDK_INT >= Build.VERSION_CODES.M) {
  110. alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
  111. calendar.getTimeInMillis() + delay, pendingIntent);
  112. }
  113.  
  114. notifId += 1;
  115. delay += 5000;
  116. Log.e("title", movie.getTitle());
  117. }
  118. }
  119.  
  120. public void cancelAlarm(Context context) {
  121. AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  122. alarmManager.cancel(getPendingIntent(context));
  123. }
  124.  
  125. private static PendingIntent getPendingIntent(Context context) {
  126. /* get the application context */
  127. Intent alarmIntent = new Intent(context, ReleaseTodayReminder.class);
  128.  
  129. boolean isAlarmOn = (PendingIntent.getBroadcast(context, notifId, alarmIntent,
  130. PendingIntent.FLAG_NO_CREATE) != null);
  131.  
  132. Log.e("isAlarmOn : ", String.valueOf(isAlarmOn));
  133.  
  134. Log.e("id_when_cancel", String.valueOf(notifId));
  135.  
  136. return PendingIntent.getBroadcast(context, 101, alarmIntent,
  137. PendingIntent.FLAG_UPDATE_CURRENT);
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement