2012-02-09 7 views
7

Я попытался разработать пример приложения Alarm. Я искал Google и SC, большинство их примеров запутались. Как я могу создать приложение сигнализации со следующими требованиями,Как разработать приложение Android Alarm

  1. В Мой главный экран У меня есть кнопка, как «START ALARM», когда я нажимаю на кнопку время выбора необходимо включить.

  2. Я выбираю время по своему желанию, как только я выберу время, значок виджета будет включен в виджет. (Например, если мы установили будильник в приложении мобильной связи по умолчанию, значок будет включен, что означает, что установлен будильник).

  3. Когда достигнуто заданное время (время, установленное в приложении TimePicker), будильник подаст звуковой сигнал.

Это мои требования, я закончил первые два очка, но я все еще пытаюсь установить будильник.

+0

я, но я изо всех сил в том, что из последних 2-х дней, – Aerrow

+0

Чувак, просто создать одно приложение. Во-первых, узнайте о создании какого-либо виджета из приложения. И, разместите там время. И сохраните время (как миллисекунды) в базе данных, которое вы хотите поднять. В это время просто вызовите это время из базы данных и проверьте это на текущее время (в миллисекундах). В требуемое время просто поднимите будильник из диспетчера аварийных сигналов или извещения из диспетчера уведомлений. – Praveenkumar

+0

у вас есть образцы для этого, becoz у меня нет идеи, как это сделать. – Aerrow

ответ

7

Посмотрите на AlarmManager. И, если вы хотите использовать будильник одновременно, вы должны использовать для этого класс Service. И, см. Ниже пример кода -

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); 
    } 

Это повторит сигнал тревоги каждые 6 минут. См. Документ Scheduling Repeating Alarms.

+0

Я загрузил код из ссылки, как вы дали, как только я запустил этот код ничего не случится, есть ли какая-нибудь процедура для запуска этого кода, скажите, пожалуйста, – Aerrow

+0

См., вывод будет помещен на ваш журнал cat & Your DDMS, просто посмотрите, что в коде. Вы только модифицируете это как свои потребности. – Praveenkumar

+0

@Aerrow добавить <приемник android: process = ": remote" android: name = ". OnBootReceiver"> в ваш файл. – computerquest

0

Чтобы закончить свою последнюю точку вы должны сделать Date Comparision и использовать AlaramManager Alaram Doc и снова вы должны использовать Service для сравнения следующей даты и времени. Надеюсь, это поможет вам.

+0

Я пробовал несколько примеров кода, но это не очень эффективно, работы хорошо, но нет звукового сигнала и индикации – Aerrow

+0

OK. затем используйте уведомление. или использовать менеджер рингтонов или использовать uri для доступа к тонам, см. это может помочь вам http://developer.android.com/reference/android/media/RingtoneManager.html – OnkarDhane

0

Вы должны использовать RingtoneManager или NotificationManager (показать текст или изображение для пользователя для уведомления в верхней части экрана), или вы можете использовать MediaPlayer установить для воспроизведения звука при достижении времени срабатывания будильника. Вы должны установить тег <receiver> в файле манифеста, который должен включать класс, распространяющийся на BroadCastReceiver. В классе приемника вы можете написать свой код, чтобы разбудить устройство.

3

При включении будильника вы должны вызвать встроенный диспетчер аварийных сигналов и использовать alarmmanager.set для установки времени будильника в диспетчере. После того, как время сигнала (в миллисекундах) задается менеджер сигнализации он будет посылать сообщение, и вы можете retrive сообщение через Ресивер класс

//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); 

Для ПОЛУЧАТЬ тревоги вы должны сделать новый класс, который расширяет приемник где в onrecieve вы можете установить намерение на активность, которую хотите вызывать на время будильника, вы также можете предоставить уведомление.

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(); 
}} 

Если вы все еще получаете любую проблему переспрашивать .. :)

Смежные вопросы