2012-02-09 22 views
7

Intenté desarrollar una aplicación de alarma de muestra. Busqué en Google y SC, la mayoría de sus ejemplos confundidos. ¿Cómo puedo crear una aplicación de alarma con los siguientes requisitos,Cómo desarrollar la aplicación de alarma de Android

  1. En la pantalla Mi casa tengo un botón, como "START ALARMA", cuando hago clic en el botón selector de un tiempo debe habilitar.

  2. Selecciono la hora como lo desee, una vez que elijo la hora, el icono de la alarma se habilitará en el widget. (Por ejemplo, si configuramos la alarma en la aplicación de alarma móvil predeterminada, el icono estará habilitado, lo que indica que la alarma está activada).

  3. Cuando se alcanza el tiempo establecido (el tiempo que se configura desde la aplicación TimePicker), la alarma emitirá un pitido.

Estos son mis requisitos, terminé los dos primeros puntos, pero todavía estoy luchando para configurar la alarma.

+0

ya, pero tuvo problemas en que a partir de los 2 últimos días, – Aerrow

+0

Amigo, Basta con crear una aplicación. Primero, conoce la creación de un widget desde una aplicación. Y, coloque el timepicket allí. Y, almacene el tiempo (como milisegundos) en la base de datos que desea activar la alarma. En ese momento, simplemente llame a esa hora desde la base de datos y verifique la hora actual (en milisegundos). En el tiempo requerido, solo levante la alarma desde el Administrador de alarmas o Notificación desde el Administrador de notificaciones. – Praveenkumar

+0

tiene muestras para esto, porque no tengo idea de cómo hacerlo. – Aerrow

Respuesta

7

Eche un vistazo a AlarmManager. Y, si desea usar la alarma simultáneamente, debe usar la clase Service para eso. Y, ver código de muestra a continuación -

public class OnBootReceiver extends BroadcastReceiver { 
    private static final int PERIOD=300000; // 5 minutes 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    AlarmManager mgr = 
     (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i=new Intent(context, OnAlarmReceiver.class); 
    PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0); 
    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
     SystemClock.elapsedRealtime()+60000, PERIOD, pi); 
    } 

Esto repetirá la alarma cada 6 minutos. Vea el documento Scheduling Repeating Alarms.

+0

He descargado el código del enlace como me dio, una vez que corro ese código no pasará nada, ¿hay algún procedimiento para ejecutar este código, por favor dígame – Aerrow

+0

Ver, la salida se colocará en su registro de gato y su DDMS acaba de ver que en el código. Usted solo modifica esto según sus necesidades. – Praveenkumar

+0

@Aerrow add al archivo más completo. – computerquest

0

para terminar su último punto que hay que hacer y usar Date Comparision AlaramManager Alaram Doc y otra vez tiene que utilizar Service comparar próxima fecha y hora. Espero que te sea útil.

+0

Probé algunos códigos de muestra, pero no es muy efectivo, las obras bien, pero no hay pitidos de alarma e indicaciones – Aerrow

+0

OK. luego usa notificaciones allí. o use el Administrador de tonos o use uri para acceder a los tonos, vea esto puede ayudarlo http://developer.android.com/reference/android/media/RingtoneManager.html – OnkarDhane

0

Es necesario utilizar RingtoneManager o la NotificationManager (para mostrar cualquier texto o imagen al usuario para la notificación en la parte superior de la pantalla), o se puede utilizar para establecer MediaPlayer para reproducir sonido cuando se alcanza la hora de alarma. Debe establecer la etiqueta <receiver> en el archivo de manifiesto, que debe incluir una clase que extienda BroadCastReceiver. En la clase de receptor puede escribir su código para activar su dispositivo.

3

cuando habilita la alarma, debe llamar al administrador de alarmas incorporado y usar alarmmanager.set para establecer la hora de la alarma en el administrador. Una vez que se da el tiempo de alarma (en milisegundos) que el gestor de alarma se enviará el mensaje y se puede retrive el mensaje a través de clases receptor

//creating and assigning value to alarm manager class 
    Intent AlarmIntent = new Intent(MainActivity.this, AlarmReciever.class); 
    AlarmManager AlmMgr = (AlarmManager)getSystemService(ALARM_SERVICE); 
    PendingIntent Sender = PendingIntent.getBroadcast(MainActivity.this, 0, AlarmIntent, 0);  
    AlmMgr.set(AlarmManager.RTC_WAKEUP, Alarm.getTimeInMillis(), Sender); 

Para que recibe la alarma que tiene que hacer una nueva clase que se extiende receptor, donde en onrecieve puede establecer la intención de la actividad a la que desea llamar en tiempo de alarma, también puede proporcionar una notificación.

public class AlarmReciever extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) 
{ //Build pending intent from calling information to display Notification 
    PendingIntent Sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
    NotificationManager manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 
    Notification noti = new Notification(android.R.drawable.stat_notify_more, "Wake up alarm", System.currentTimeMillis()); 
    noti.setLatestEventInfo(context, "My Alarm", "WAKE UP...!!!", Sender); 
    noti.flags = Notification.FLAG_AUTO_CANCEL; 
    manager.notify(R.string.app_name, noti); 

    //intent to call the activity which shows on ringing 
    Intent myIntent = new Intent(context, Alarmring.class); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(myIntent); 

    //display that alarm is ringing 
    Toast.makeText(context, "Alarm Ringing...!!!", Toast.LENGTH_LONG).show(); 
}} 

Si, a pesar de cualquier problema de volver a preguntar .. :)

Cuestiones relacionadas