Я установил повторяющийся будильник на 3:55. Предположим, в полдень в 13:00 я нажимаю кнопку будильника из приложения. Мгновенно я получаю уведомление о будильнике в 3:55. но почему это? На следующий день я получаю уведомление в точное время.
Я конвертирую время будильника в миллисекунды. 1-й получить строку в этом формате гггг / ММ / дд "" ЧЧ: мм: сс ... затем преобразуйте его в миллисекунды с помощью функции местного времени. И установите это время в миллисекундах в методе am.setRepeating.
val d: DateFormat = SimpleDateFormat("yyyy/MM/dd")
val currenttime: DateFormat = SimpleDateFormat("HH:mm:ss")
val timeformate: DateFormat = SimpleDateFormat("hh:mm")
var time = timeformate.parse(singletime)
//alarm_localtime
val now: String = d.format(Date())
//current_localtime
// var currenttim = now + " " + currenttime.format(Date())
// var current_local_time = localtime(currenttim)
var alarmtime = (now + " " + singletime)
var alarm_local_Time = localtime(alarmtime)
val notificationmassage = Intent(applicationContext, Notificationmassage::class.java)
notificationmassage.putExtra("time", timeformate.format(time));
val pendingintent = PendingIntent.getBroadcast(
mContext,
pos,
notificationmassage,
PendingIntent.FLAG_UPDATE_CURRENT
)
val am = mContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
//Log.e("currenttime",Calendar.getInstance().getTimeInMillis().toString() )
// Log.e("alarmttime",alarm_local_Time.toString() )
am.setRepeating(
AlarmManager.RTC_WAKEUP,
alarm_local_Time,
AlarmManager.INTERVAL_DAY,
pendingintent
)
@RequiresApi(Build.VERSION_CODES.O)
fun localtime(time: String): Long {
var local_time =
LocalDateTime.parse(time.replace(" ", "T").replace("/", "-"))
.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli()
return local_time
}