Я просто пытаюсь получить несколько счетчиков обратного отсчета, когда он достигает индивидуального значения до 0, я хочу подать сигнал тревоги (без какого-либо взаимодействия пользователя между одним и следующим).
Обратный отсчет запрограммировано, например, на 5, 4 и 7 минут. Если это секунды, и приложение работает с включенным экраном, или только секунды, то проблем нет, но как только наступают минуты, экран выключается и телефон переходит в режим ожидания (я думаю), в результате получаем: 5, 6: 26 и 9:58 (вместо 5,4 и 7).
Я читал много пользовательских решений, которые обсуждались здесь, но у меня это не работает. Телефон работает Android v10.
Код для программирования сигнала тревоги с SetExactAndAllowWhileIdle:
public void ProgAlarm(int nIntervalo) {
var alarmIntent = new Intent(MainActivity.Instance, typeof(AlarmReceiver));
alarmIntent.PutExtra("Contador", nIntervalo);
var pending = PendingIntent.GetBroadcast(MainActivity.Instance, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
MainActivity.alarM.SetExactAndAllowWhileIdle(AlarmType.ElapsedRealtimeWakeup,
SystemClock.ElapsedRealtime()+tiempos[nIntervalo]*1000, pending);
}
И событие, инициированное для перепрограммирования сигнала тревоги:
[BroadcastReceiver]
public class AlarmReceiver: BroadcastReceiver {
public override void OnReceive(Context context, Intent intent) {
DependencyService.Get<IVarios>().Beep();
int actual=intent.GetIntExtra("Contador",-1);
if (actual!=-1) DependencyService.Get<IVarios>().ProgAlarm(++actual);
}
}
До тревоги я пытался с PowerManager:
PowerManager pM = (PowerManager)GetSystemService(PowerService);
wakeLock=pM.NewWakeLock(WakeLockFlags.Partial, "CronoMultiple");
[...]
wakeLock.Acquire();
[...]
wakeLock.Release();
и с флагом: WakeLockFlags.AcquireCausesWakeup
Но это работает, только когда экран всегда был включен, с флагом .Partial, экран поворачивается выкл и приложение останавливается и счетчик не работает В эмуляторе P C он работает (даже с командами adb), но не на телефоне.
Любое решение без использования Сервиса? (Я новичок в Xamarin.forms).