Если пользователь находится в пределах своего рабочего дня и часов, звук перерыва воспроизводится на 25 и 55 минутах, а если минуты равны 00 или 30, звучит рабочий звук. Часы и дни хранятся в SharedPreferences, и после первого входа в систему пользователь всегда перенаправляется в «ProActivity».
Программа работает хорошо и правильно, но я хочу, чтобы она продолжала работать. даже после того, как пользователь полностью закроет приложение, как будильник!
Код для упомянутого действия я предоставил ниже:
private void checkWorkStatus() {
// گرفتن تاریخ و ساعت فعلی
Calendar calendar = Calendar.getInstance();
String currentDay = new SimpleDateFormat("EEEE", new Locale("fa")).format(calendar.getTime());
String currentHour = String.format("%02d:00 - %02d:00",
calendar.get(Calendar.HOUR_OF_DAY),
(calendar.get(Calendar.HOUR_OF_DAY) + 1) % 24);
int currentMinute = calendar.get(Calendar.MINUTE);
// گرفتن ساعات کاری ذخیرهشده برای روز جاری
Set workHours = sharedPreferences.getStringSet(currentDay, null);
if (workHours == null || workHours.isEmpty()) {
tvStatus.setText("تعطیل");
} else if (!workHours.contains(currentHour)) {
tvStatus.setText("کار شروع نشده");
resetFlags(); // ریست پرچمها اگر ساعت فعلی در ساعت کاری نباشد
} else {
// بررسی دقیقههای مختلف و تغییر متن لیبل
if (currentMinute == 25 || currentMinute == 29 || currentMinute == 55 || currentMinute == 59) {
tvStatus.setText("استراحت
// فقط یکبار در دقیقههای مشخص شده آهنگ استراحت پخش میشود
playOnceAtMinute(currentMinute, "rest");
} else if (currentMinute == 0 || currentMinute == 24 || currentMinute == 30 || currentMinute == 54) {
tvStatus.setText("کار
// فقط یکبار در دقیقههای مشخص شده آهنگ کار پخش میشود
playOnceAtMinute(currentMinute, "work");
} else {
tvStatus.setText("کار");
resetFlags(); // ریست پرچمها وقتی دقیقه مشخص نیست
}
}
}
private void playOnceAtMinute(int minute, String soundType) {
if ("rest".equals(soundType)) {
if ((minute == 25 && !isPlayedAt25) || (minute == 55 && !isPlayedAt55)) {
restPlayer.start(); // پخش آهنگ استراحت
if (minute == 25) {
isPlayedAt25 = true;
} else if (minute == 55) {
isPlayedAt55 = true;
}
}
} else if ("work".equals(soundType)) {
if ((minute == 30 && !isPlayedAt30) || (minute == 0 && !isPlayedAt00)) {
workPlayer.start(); // پخش آهنگ کار
if (minute == 30) {
isPlayedAt30 = true;
} else if (minute == 0) {
isPlayedAt00 = true;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... oid-studio
Мобильная версия