Android – как настроить будильник на определенную дату

Я видел много учебников и пробовал уже 2 часа, хотя что-то по-прежнему не так. Я очень нервничаю сейчас 🙂 Я хочу настроить будильник, например, до 16:25, чтобы уйти, но ничего не происходит. У меня есть этот код:

Calendar cur_cal = new GregorianCalendar(); cur_cal.setTimeInMillis(System.currentTimeMillis()); Calendar cal = new GregorianCalendar(); cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR)); cal.set(Calendar.HOUR_OF_DAY, 16); cal.set(Calendar.MINUTE, 25); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 

Я также пробовал это:

  cal.set(Calendar.AM_PM, cur_cal.get(Calendar.AM_PM)); cal.set(Calendar.HOUR, 4); 

Моя конечная цель – сделать его повторяющимся сигналом тревоги, например, он должен уходить каждый день в установленное время.

Обновление 01.17.2011. Все еще не работает. У меня есть этот код:

  Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2011); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DAY_OF_MONTH, 17); cal.set(Calendar.HOUR_OF_DAY, 16); cal.set(Calendar.MINUTE, 58); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); 

Я также пробовал это:

  cal.set(Calendar.HOUR, 4); cal.set(Calendar.AM_PM, Calendar.PM); 

и это:

 cal.set(Calendar.HOUR_OF_DAY, 4 ); cal.set(Calendar.AM_PM, Calendar.PM); 

Solutions Collecting From Web of "Android – как настроить будильник на определенную дату"

 package your.pack.name; import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; public class AlarmActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(System.currentTimeMillis()); cal.clear(); cal.set(2012,2,8,18,16); AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); // cal.add(Calendar.SECOND, 5); alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); } } 

Обычно вы не должны получать Calendar как и вы, для этого есть способ Calendar.getInstance() :

 Calendar cal = Calendar.getInstance(); 

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

 cal.set(Calendar.HOUR_OF_DAY, 16); cal.set(Calendar.MINUTE, 25); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 

Следующий код отлично работает для тревоги. Дата и время, о которых я упоминал здесь: 2012- 28 июня, 11:20:00. И самое главное, месяц указывается только с 0 t0 11. Средства июнь должны быть указаны на 5.

  AlarmManager objAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Calendar objCalendar = Calendar.getInstance(); objCalendar.set(Calendar.YEAR, 2012); //objCalendar.set(Calendar.YEAR, objCalendar.get(Calendar.YEAR)); objCalendar.set(Calendar.MONTH, 5); objCalendar.set(Calendar.DAY_OF_MONTH, 28); objCalendar.set(Calendar.HOUR_OF_DAY, 11); objCalendar.set(Calendar.MINUTE, 20); objCalendar.set(Calendar.SECOND, 0); objCalendar.set(Calendar.MILLISECOND, 0); objCalendar.set(Calendar.AM_PM, Calendar.AM); Intent alamShowIntent = new Intent(this,AlarmActivity.class); PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0,alamShowIntent,0 ); objAlarmManager.set(AlarmManager.RTC_WAKEUP,objCalendar.getTimeInMillis(), alarmPendingIntent); 

Вы не устанавливаете год в своем Calendar объекте.

Также обратите внимание, что new GregorianCalendar() уже устанавливает значение текущей даты и времени.