From 7d111cab699aa24b3991fe4223426315d0724d8d Mon Sep 17 00:00:00 2001 From: jayeshkjain25 Date: Mon, 11 Mar 2024 20:42:20 +0530 Subject: [PATCH] . --- .idea/deploymentTargetDropDown.xml | 15 +----- app/src/main/AndroidManifest.xml | 4 ++ .../patient_dashboard/DashBoardActivity.java | 54 +++++++++++++++++-- .../patient_dashboard/FoodAlarmReceiver.java | 35 ++++++++++++ 4 files changed, 91 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/app/simplitend/patient_dashboard/FoodAlarmReceiver.java diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 789cc16..0c0c338 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -3,20 +3,7 @@ - - - - - - - - - - - - - - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd32d58..ddbf8d1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java b/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java index 14baa25..de6c707 100644 --- a/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java +++ b/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java @@ -5,6 +5,8 @@ import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY; import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG; import android.Manifest; +import android.app.AlarmManager; +import android.app.PendingIntent; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; @@ -12,6 +14,7 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; +import android.provider.Settings; import android.telecom.TelecomManager; import android.util.Log; @@ -20,6 +23,7 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import androidx.lifecycle.ViewModelProvider; import com.app.simplitend.BuildConfig; @@ -30,6 +34,9 @@ import com.app.simplitend.apputils.PatientDataCache; import com.app.simplitend.caregiverdashboard.mvvm.CgHomeContracts; import com.app.simplitend.caregiverdashboard.mvvm.models.GeoFenceDetails; +import java.util.Calendar; +import java.util.TimeZone; + import io.socket.client.IO; import io.socket.client.Socket; @@ -40,9 +47,12 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra protected PatientMainViewModel viewModel; protected ActivityResultLauncher finePermissionLauncher; + protected ActivityResultLauncher alarmPermissionLauncher; private Socket mSocket; + private AlarmManager alarmManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -50,10 +60,30 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra viewModel = new ViewModelProvider(this).get(PatientMainViewModel.class); + alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); + updateGeofenceDetails(); + alarmPermissionLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + isGranted -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + if (alarmManager != null && alarmManager.canScheduleExactAlarms()) { + scheduleFoodAlarms(); + } + } + }); + finePermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S + && alarmManager != null + && !alarmManager.canScheduleExactAlarms()) { + Intent intent = new Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM); + alarmPermissionLauncher.launch(intent); + } else { + scheduleFoodAlarms(); + } + if (isGranted) { // getting location updates if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { @@ -102,6 +132,24 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra }, false); } + private void scheduleFoodAlarms() { + if (alarmManager == null) return; + if (true) return; + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S || alarmManager.canScheduleExactAlarms()) { + alarmManager.setExact( + AlarmManager.RTC_WAKEUP, + System.currentTimeMillis() + 10_000, + PendingIntent.getBroadcast(this, + 0, + new Intent(getApplicationContext(), FoodAlarmReceiver.class), + PendingIntent.FLAG_IMMUTABLE) + ); + + Log.d("FoodAlarmReceiver", "ALARM SCHEDULED for "); + } + } + @Override protected void attachBaseContext(Context newBase) { final Configuration configuration = new Configuration(newBase.getResources().getConfiguration()); @@ -113,7 +161,7 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra @Override protected void onDestroy() { super.onDestroy(); - if (mSocket != null){ + if (mSocket != null) { mSocket.disconnect(); } @@ -136,11 +184,11 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra String content_type = (String) args[0]; Log.d(TAG, "call: " + content_type); Intent broadcastIntent = new Intent(NOTIFICATION_ACTION); - if ("0".equals(content_type)){ + if ("0".equals(content_type)) { // medications PatientMainViewModel.remindersList = null; broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.MEDICINE_TIME); - }else if ("1".equals(content_type)){ + } else if ("1".equals(content_type)) { // activities PatientMainViewModel.activityList = null; broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.ACTIVITY_TIME); diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/FoodAlarmReceiver.java b/app/src/main/java/com/app/simplitend/patient_dashboard/FoodAlarmReceiver.java new file mode 100644 index 0000000..6914cba --- /dev/null +++ b/app/src/main/java/com/app/simplitend/patient_dashboard/FoodAlarmReceiver.java @@ -0,0 +1,35 @@ +package com.app.simplitend.patient_dashboard; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.util.Log; + +public class FoodAlarmReceiver extends BroadcastReceiver { + + private static final String TAG = "FoodAlarmReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + Log.d(TAG, "onReceive: "); + AlarmManager alarmManager = context.getSystemService(AlarmManager.class); + + if (alarmManager == null) return; + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S || alarmManager.canScheduleExactAlarms()) { + alarmManager.setExact( + AlarmManager.RTC_WAKEUP, + System.currentTimeMillis() + 10_000, + PendingIntent.getBroadcast(context, + 0, + new Intent(context, FoodAlarmReceiver.class), + PendingIntent.FLAG_IMMUTABLE) + ); + + Log.d("FoodAlarmReceiver", "ALARM SCHEDULED"); + } + } +}