Внутри моего приложения мне нужно установить сигналы тревоги, и когда они срабатывают, я пытаюсь вызвать их в моем приемнике.
Для того, чтобы справиться с режимом Dozo из зефира 6.0, если версия устройства больше илиравный 6.0 Я использую метод alarmManger.setAlarmClock ().Это прекрасно работает практически на всех устройствах, кроме устройств OPPO
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(fireDate.getTime(), pendingIntent);
alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
//alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, fireDate.getTime(), pendingIntent);
} else {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, fireDate.getTime(), pendingIntent);
}
=========================================================================== из терминала, я получил логи, используя: adb shellтревога dumpsys.
1.для других брендов (результат моего метода alarmManager.setAlarmClock ()):
Batch{b778e8c num=1 start=35988972 end=35988972 flgs=0x3}:
RTC_WAKEUP #0: Alarm{b9e89d5 type 0 when 1547501400600 ######.######}
tag=*walarm*:######.######.Reminder
type=0 whenElapsed=+9h49m0s741ms when=2019-01-15 03:00:00
window=0 repeatInterval=0 count=0 flags=0x3
Alarm clock:
triggerTime=2019-01-15 03:00:00
showIntent=PendingIntent{3dc5ea: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
operation=PendingIntent{996c0db: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
пакет уникален, а значение флага установлено на 0x3, так будет и для alarmClocks.Для большинства брендов результат тот же, но в противоположность этому флаг установлен в 0x8
2.для телефона oppo (результат моего метода alarmManager.setAlarmClock ()):
Batch{b778e8c num=1 start=35988972 end=35988972 flgs=0x8}:
RTC_WAKEUP #0: Alarm{b9e89d5 type 0 when 1547501400600 ######.######}
tag=*walarm*:######.######.Reminder
type=0 whenElapsed=+9h49m0s741ms when=2019-01-15 03:00:00
window=0 repeatInterval=0 count=0 flags=0x8
Alarm clock:
triggerTime=2019-01-15 03:00:00
showIntent=PendingIntent{3dc5ea: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
operation=PendingIntent{996c0db: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
3.для телефона OPPO (приложение тревоги по умолчанию для OPPO):
Batch{3450b8d num=1 start=464582537 end=464582537 flgs=0x9}:
RTC_WAKEUP #0: Alarm{32536c5 type 0 when 1547690400000 ######.###### whenElapsed 464582537 windowLength 0 maxWhenElapsed 464582537 repeatInterval 0 action }
tag=*walarm*:######.######.ALARM_ALERT
type=0 whenElapsed=+17h4m45s187ms when=2019-01-17 07:30:00
window=0 repeatInterval=0 count=0 flags=0x9
Alarm clock:
triggerTime=2019-01-17 07:30:00
showIntent=PendingIntent{ee6881a: PendingIntentRecord{97c18f0 ######.###### startActivity (whitelist: 902f275:+30s0ms)}}
operation=PendingIntent{3bc0f4b: PendingIntentRecord{2bd8d28 ######.###### broadcastIntent}}
Внутри телефонов OPP для получения сигналов тревоги должен быть один пакет, а для флага должен быть установлен 0x9
Заключение
ДРУГИЕ Телефоны: flag = 0x3 требуется, чтобы вызвать его как тревогу, alarmManager.setAlarmClock () устанавливает флаг = 0x3, работает нормально.
OPPO Телефоны: flag = 0x9 требуется, чтобы вызвать его как сигнал тревоги.Но alarmManager.setAlarmClock () устанавливает флаг = 0x8.
Какой метод мне следует вызвать, чтобы установить флаг = 0x9 на устройствах с противоположными устройствами?