2013-11-13 4 views
0

Я использую AlarmManager, чтобы установить будильник, и я хочу сохранить его id в моем sqlite db, всякий раз, когда я устанавливаю будильник, он срабатывает немедленно, я googled решение, но did'nt найти в соответствии с моим требованием, может быть, я получать неправильную дату и время из моего времени выбора даты виджетов,
Я использую даты и времени сборщиков, как:Выбор времени выбора времени для диспетчера аварийных сигналов?

final DatePicker datePicker = (DatePicker)dialog.findViewById(R.id.datePicker); 
final TimePicker timePicker = (TimePicker)dialog.findViewById(R.id.timePicker); 

затем появляется Dialoge, я изменить дату и время, а затем затем получить его как:

Calendar calendar = Calendar.getInstance(); 
calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 
timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0); 
timeSetForAlert = calendar.getTimeInMillis()/1000; 

И затем я передаю это сервисному обработчику, как,

Intent myIntent = new Intent(thisContext, MyReceiver.class); 
myIntent.putExtra("timeSetForAlert", timeSetForAlert); 
pendingIntent = PendingIntent.getBroadcast(thisContext, 0, myIntent,0); 

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC, timeSetForAlert, pendingIntent); 

Я пропуская широковещательный приемник здесь, который принимает намерение и начать обслуживание сигнализации, в то время как служба сигнализации как:

public void onStart(Intent intent, int startId) 
{ 
     super.onStart(intent, startId); 

    long timeSetForAlert = intent.getLongExtra("timeSetForAlert", 0); 
    mManager = (NotificationManager) thisContext.getSystemService(thisContext.NOTIFICATION_SERVICE); 

    Intent intent1 = new Intent(thisContext,MainActivity.class); 

    Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", timeSetForAlert); 

    intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(thisContext,0, intent1,PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.setLatestEventInfo(thisContext, "Notification..", "This is a test message!", pendingNotificationIntent); 

    mManager.notify(startId, notification); 
    Toast.makeText(thisContext, startId+"", Toast.LENGTH_SHORT).show(); 
} 

Пожалуйста, укажите:
1) - Почему сигнализация срабатывает сразу
2) - где я должен сохранить его в моем дб

ответ

1

попробуйте использовать этот

Calendar calendar = Calendar.getInstance(); 
calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 
timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0); 
timeSetForAlert = calendar.getTimeInMillis();//try without dividing with 1000 
+0

oops ..! @nikhil, Это сработало, но немного проблема, когда я установил два предупреждения, он перезаписывает первую, любую идею? он должен быть в классе AlarmService –

0

ya можно решить так. принимают оба ответы .. код: Вместо этого

 pendingIntent = PendingIntent.getBroadcast(thisContext, 0, myIntent,0); 

     PendingIntent pi = PendingIntent.getBroadcast(
       getApplicationContext(), uniqueValue, intent, 0); 

вместо «0» использовать уникальное значение в качестве второго параметра, чтобы получить multipleBroadcast.

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