Massive/android/app/src/main/java/com/massive/AlarmWorker.java

65 lines
3.0 KiB
Java
Raw Normal View History

2022-07-03 06:25:21 +00:00
package com.massive;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Vibrator;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
public class AlarmWorker extends Worker {
private static final String CHANNEL_ID = "MassiveAlarms";
public AlarmWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
Log.d("AlarmWorker", "Doing work...");
createNotificationChannel();
Intent intent = new Intent(getApplicationContext(), AlarmModule.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
.setSmallIcon(R.drawable.autofill_inline_suggestion_chip_background)
.setContentTitle("Rest complete.")
.setContentText("Break time is over!")
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
notificationManager.notify(1, builder.build());
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.argon);
mediaPlayer.start(); // no need to call prepare(); create() does that for you
Vibrator vibrator = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(400);
return Result.success();
}
private void createNotificationChannel() {
Log.d("AlarmWorker", "Creating notification channel...");
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "MassiveAlarms", importance);
channel.setDescription("Alarms for the Massive application");
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getApplicationContext().getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
}