65 lines
3.0 KiB
Java
65 lines
3.0 KiB
Java
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|