Pergunta sobre android, android-alarms, service, alarmmanager – Android: alarme para jogar a cada 30 minutos e começar a partir das 12:30

1

Aqui eu vou usar o serviço de alarme para tocar o alarme a cada 30 minutos. Agora eu o configurei para jogá-lo a cada 10 segundos desde o início do Every.

Aqui está o código:

<code>@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings_layout);


    Intent myIntent = new Intent(SettingsActivity.this, MyAlarmService.class);
    pendingIntent = PendingIntent.getService(SettingsActivity.this, 0, myIntent, 0);

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);

}
</code>

Agora, o problema é que eu quero iniciar o alarme a partir das 12h30, não a partir do início do aplicativo de tempo, e ele deve reproduzir repetidamente a cada 30 minutos. como 1:00, 1:30, 2:00. . . etc

Então, quais mudanças eu tenho que fazer no meu código?

@iDroidExplorer: isso é ótimo. Sinto muito pela resposta tardia, eu não recebi o seu texto bez u miss my name after @ ρяσѕρєя K
@iDroidExplorer: Obrigado, o que está acontecendo neste caso: se eu definir a hora como 12 e minuto como 30 e se eu instalar o aplicativo no dispositivo às 1:29, será que o alarme será acionado às 1:30? ρяσѕρєя K
@Tenho atualizado o código pouco e agora ele roda como eu quero. Eu também defini a condição como enquanto o serviço vai chamar, lá eu coloquei a condição do tempo como se o tempo é 12:30, então ele vai jogar o alarme caso contrário não. Então eu resolvi o problema assim. iDroid Explorer
@Suvam Roy eu sei que tudo. Mas quero saber como definir que o alarme deve começar a partir das 12:30 e jogar a cada 30 minutos. iDroid Explorer

Sua resposta

5   a resposta
1

Definir método.

Quando o alarme disparar, configure a próxima hora do alarme e continue fazendo isso até não desejar mais o alarme.

Você não precisa de um serviço para fazer uma tarefa tão simples. O AlarmManager é mais do que capaz de lidar com isso.

Obrigado pela resposta. iDroid Explorer
2
Obrigado pela resposta. Funciona como eu quero. iDroid Explorer
1

Tente

E use a primeira vez -

Tente outro

obrigado pela resposta. iDroid Explorer
1

Inicie um contexto que sempre será executado, como umFio em umServiço.Calcular o timestamp da hora em que você deseja que o próximo alerta toque usandoEncontro e colocá-lo em "longo alertTimestamp".Em um loop, calcule o timestamp agora usandoEncontro e colocá-lo em "long nowTimestamp".Se nowTimestamp <alertTimestamp, coloque o thread paradormir para (alertTimestamp - nowTimestamp).Senão soar o alerta e recalcular alertaTimestamp, repita.

Certifique-se de capturar interrupções de notificação para o piso graciosamente, que é a chave para abortar o temporizador.

Espero que isso tenha sido útil.

Obrigado pela resposta. iDroid Explorer
0

você precisará adicionar isso ao seu código:

<code>alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*30, pendingIntent); //millisecs*seconds*minutes
</code>

Mas ainda não descobri como começar em um horário específico.

Perguntas relacionadas