Android: la alarma se jugará cada 30 minutos y comenzará a las 12:30.

Aquí voy a utilizar el servicio de alarma para reproducir la alarma cada 30 minutos. Ahora mismo lo he configurado para que lo reproduzca cada 10 segundos desde cada inicio.

Aquí está el 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>

Ahora el problema es que quiero iniciar la alarma a partir de las 12:30 y no desde el momento en que se inició la aplicación, y debería reproducirse repetidamente a los 30 minutos. como 1:00, 1:30, 2:00. . . etc

Entonces, ¿qué cambios tengo que hacer en mi código?

 iDroid Explorer06 abr. 2012 11:59
@He actualizado poco el código y ahora se ejecuta como quiero. También he establecido la condición como si el servicio llamara, allí he puesto la condición de la hora como si fuera la hora 12:30, entonces la alarma no se activará. Así que he resuelto el problema de esa manera.
 Suvam Roy06 abr. 2012 07:45
Tienes que crear un servicio que se ejecutará en el fondo de tu aplicación. Por lo tanto, si sale de la aplicación, el servicio seguirá funcionando y ejecutará su código de acuerdo con su lógica.
 iDroid Explorer06 abr. 2012 08:29
@imrankhan: hey, gracias. Creo que serán obras. Pero solo pregúntale a tu pregunta. si he configurado la hora como 12 y los minutos como 30 y si instalo la aplicación en el dispositivo a la 1:29, ¿se activará la alarma a la 1:30?
 ρяσѕρєя K07 abr. 2012 00:14
@iDroidExplorer: eso es genial. Lo lamento por una respuesta tardía, no he recibido su texto. No se ha perdido mi nombre después de @
 ρяσѕρєя K06 abr. 2012 11:39
@iDroidExplorer: Gracias, ¿qué sucede en este caso: si configuré la hora como 12 y los minutos como 30 y si instalo la aplicación en el dispositivo a la 1:29, entonces la alarma se activará a la 1:30?
 iDroid Explorer06 abr. 2012 07:50
@Suvam Roy, lo sé todo. Pero quiero saber cómo configurar que la alarma comience a las 12:30 y juegue cada 30 minutos.
 ρяσѕρєя K06 abr. 2012 07:52
@iDroidExplorer: ver esta publicación puede ser útilUso de Alarmmanager para iniciar un servicio en un momento específico
 iDroid Explorer06 abr. 2012 11:36
@imrankhan: Por favor, ponga su respuesta, escuche para que pueda aceptarlo.

Respuestas a la pregunta(5)

Solución de preguntas

Para iniciar un servicio a una hora determinada. ver esta publicación puede ser útil:

Uso de Alarmmanager para iniciar un servicio en un momento específico

 iDroid Explorer07 abr. 2012 06:24
Gracias por la respuesta. Funciona como yo quiero.

Para repetir cada 30 minutos, deberá agregar esto a su código:

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

Pero aún no he descubierto cómo empezar en un momento específico.

Intentalo

Y uso por primera vez -

Prueba otro

 iDroid Explorer07 abr. 2012 06:23
gracias por la respuesta.

Establezca su hora de alarma inicial a las 12:30 usando elMétodo de ajuste.

Cuando se active la alarma, configure la siguiente hora de la alarma y continúe haciéndolo hasta que ya no desee que suene la alarma.

No necesitas un servicio para hacer una tarea tan simple. AlarmManager es más que capaz de manejar esto.

 iDroid Explorer07 abr. 2012 06:22
Gracias por la respuesta.

Un enfoque ingenuo sería:

Iniciar un contexto que siempre se ejecutará, como unHilo en unServicio.Calcule la marca de tiempo de la hora que desea que suene la próxima alerta conFecha y ponerlo en "long alertTimestamp".En un bucle, calcula la marca de tiempo en este momento usandoFecha y ponerlo en "long nowTimestamp".Si nowTimestamp <alertTimestamp, ponga el hilo adormir para (alertTimestamp - nowTimestamp).De lo contrario, haga sonar la alerta y vuelva a calcular alertTimestamp, repita.

Asegúrese de detectar las interrupciones de la banda de rodadura con gracia, esa es la clave para abortar el temporizador.

Espero que esto haya sido útil.

 iDroid Explorer07 abr. 2012 06:23
Gracias por la respuesta.

Su respuesta a la pregunta