yahyaaa

MovieUpcomingReceiver

Sep 20th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.01 KB | None | 0 0
  1. package com.rtikcirebonkota.thecataloguemovie.notification;
  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.util.Log;
  15. import androidx.core.app.NotificationCompat;
  16. import androidx.core.content.ContextCompat;
  17.  
  18. import com.rtikcirebonkota.thecataloguemovie.DetailMovieActivity;
  19. import com.rtikcirebonkota.thecataloguemovie.R;
  20. import com.rtikcirebonkota.thecataloguemovie.model.MovieResult;
  21.  
  22. import java.util.Calendar;
  23. import java.util.List;
  24. import static com.rtikcirebonkota.thecataloguemovie.utils.Constanta.DETAIL_MOVIE;
  25. import static com.rtikcirebonkota.thecataloguemovie.utils.Constanta.NOTIFICATION_CHANNEL_ID;
  26. import static com.rtikcirebonkota.thecataloguemovie.utils.Constanta.NOTIFICATION_ID;
  27.  
  28. public class MovieUpcomingReceiver extends BroadcastReceiver{
  29.     private static int notifId = 1000;
  30.  
  31.     @Override
  32.     public void onReceive(Context context, Intent intent) {
  33.         String movieTitle = intent.getStringExtra("movietitle");
  34.         int id = intent.getIntExtra("id", 0);
  35.         MovieResult movieResult = new MovieResult();
  36.         String desc = String.format(context.getString(R.string.release_today_msg), movieTitle);
  37.         sendNotification(context, context.getString(R.string.app_name), desc, id, movieResult);
  38.     }
  39.     private void sendNotification(Context context, String title, String desc, int id, MovieResult movieResult) {
  40.         NotificationManager notificationManager = (NotificationManager) context.getSystemService(
  41.                 Context.NOTIFICATION_SERVICE);
  42.         Intent intent = new Intent(context, DetailMovieActivity.class);
  43.         intent.putExtra(DETAIL_MOVIE, movieResult);
  44.  
  45.         PendingIntent pendingIntent = PendingIntent.getActivity(context, id, intent,
  46.                 PendingIntent.FLAG_UPDATE_CURRENT);
  47.  
  48.         Uri uriTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
  49.         NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
  50.                 .setSmallIcon(R.drawable.ic_movie_black_24dp)
  51.                 .setContentTitle(title)
  52.                 .setContentText(desc)
  53.                 .setContentIntent(pendingIntent)
  54.                 .setColor(ContextCompat.getColor(context, android.R.color.transparent))
  55.                 .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000})
  56.                 .setPriority(NotificationCompat.PRIORITY_HIGH)
  57.                 .setAutoCancel(true)
  58.                 .setSound(uriTone);
  59.  
  60.         if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
  61.             NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID,
  62.                     "NOTIFICATION_CHANNEL_NAME", NotificationManager.IMPORTANCE_HIGH);
  63.             notificationChannel.enableLights(true);
  64.             notificationChannel.setLightColor(Color.YELLOW);
  65.             notificationChannel.enableVibration(true);
  66.             notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
  67.  
  68.             builder.setChannelId(NOTIFICATION_CHANNEL_ID);
  69.             notificationManager.createNotificationChannel(notificationChannel);
  70.         }
  71.         notificationManager.notify(id, builder.build());
  72.     }
  73.     public void setAlarm(Context context, List<MovieResult> movieResults) {
  74.         int delay = 0;
  75.  
  76.         for (MovieResult movie : movieResults) {
  77.             cancelAlarm(context);
  78.             AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  79.             Intent intent = new Intent(context, MovieUpcomingReceiver.class);
  80.             intent.putExtra("movietitle", movie.getTitle());
  81.             intent.putExtra("movieid", movie.getId());
  82.             intent.putExtra("movieposter", movie.getPosterPath());
  83.             intent.putExtra("movieback", movie.getBackdropPath());
  84.             intent.putExtra("moviedate", movie.getReleaseDate());
  85.             intent.putExtra("movierating", movie.getVoteAverage());
  86.             intent.putExtra("movieover", movie.getOverview());
  87.             intent.putExtra("moviecount",movie.getVoteCount());
  88.             intent.putExtra("moviepopular",movie.getPopularity());
  89.             intent.putExtra("id", notifId);
  90.             PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
  91.                     100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  92.  
  93.             Calendar calendar = Calendar.getInstance();
  94.             calendar.set(Calendar.HOUR_OF_DAY, 8);
  95.             calendar.set(Calendar.MINUTE, 0);
  96.             calendar.set(Calendar.SECOND, 0);
  97.  
  98.             if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
  99.                 alarmManager.setInexactRepeating(
  100.                         AlarmManager.RTC_WAKEUP,
  101.                         calendar.getTimeInMillis() + delay,
  102.                         AlarmManager.INTERVAL_DAY,
  103.                         pendingIntent
  104.                 );
  105.             } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  106.                 alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
  107.                         calendar.getTimeInMillis() + delay, pendingIntent);
  108.             }
  109.             notifId += 1;
  110.             delay += 3000;
  111.             Log.v("title", movie.getTitle());
  112.         }
  113.     }
  114.     public void cancelAlarm(Context context) {
  115.         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  116.         alarmManager.cancel(getPendingIntent(context));
  117.     }
  118.     private static PendingIntent getPendingIntent(Context context) {
  119.         Intent intent = new Intent(context, MovieUpcomingReceiver.class);
  120.         return PendingIntent.getBroadcast(context, NOTIFICATION_ID, intent,
  121.                 PendingIntent.FLAG_UPDATE_CURRENT);
  122.     }
  123. }
Add Comment
Please, Sign In to add comment