2013-07-29 79 views
0

這是我的onclick()功能。本會設定的目標報警我想使用報警管理器在特定時間設置報警,但立即發起報警?

 
     SA=(Button)findViewById(R.id.button1); 
     SA.setOnClickListener(new OnClickListener() { 

     @SuppressWarnings("deprecation") 
     @Override 
      public void onClick(View v) { 
       showDialog(id); 


      } 
     }); 

    } 
     @Override 
     protected Dialog onCreateDialog(int id1) { 
     switch (id1) { 
     case id: 
      // set time picker as current time 

      return new TimePickerDialog(this, 
             timePickerListener, hour, min,false); 
     } 
     return null; 
    } 

     private TimePickerDialog.OnTimeSetListener timePickerListener = 
      new TimePickerDialog.OnTimeSetListener() { 
     public void onTimeSet(TimePicker view, int selectedHour, 
       int selectedMinute) { 
      Calendar calnow=Calendar.getInstance(); 
      calnow.setTimeInMillis(System.currentTimeMillis()); 
      calnow.set(Calendar.HOUR_OF_DAY,selectedHour); 
      calnow.set(Calendar.MINUTE,selectedMinute); 
      calnow.set(Calendar.SECOND, 0); 
      Intent intent=new Intent(getBaseContext(),alarm.class); 
      PendingIntent pendingintent= PendingIntent.getBroadcast(getBaseContext(),0,  intent, 0); 
      AlarmManager alarmManager =  (AlarmManager)getSystemService(Context.ALARM_SERVICE); 

       alarmManager.set(AlarmManager.RTC_WAKEUP, calnow.getTimeInMillis(),pendingintent); 
       Toast.makeText(getBaseContext(), "alarm set", Toast.LENGTH_SHORT).show(); 

     } 
    }; 

 

    public void onReceive(Context arg0, Intent arg1) { 
     AlarmManager mgr = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE); 

      Toast.makeText(arg0,"Alarm Started.....", Toast.LENGTH_LONG).show(); 

這裏的問題是,我得到兩個吐司「報警設置」和「報警開始」只要我按一下按鈕,設置在達到目標警報前發出警報

+0

當你在這裏放置一個斷點時,'alarmManager.set(AlarmManager.RTC_WAKEUP,calnow.getTimeInMillis(),pendingintent); ','calnow.getTimeInMillis()'的價值是什麼? – codeMagic

+0

什麼是你從哪裏獲得時間的TP? – Opiatefuchs

+0

你如何設定TP的價值?你有沒有檢查過它絕對是未來的一個時間?你看到的結果意味着這是過去或現在的時間。 – user1676075

回答

0

這裏的問題是,來自TP的值似乎是當前時間。如果您顯示更多的代碼,這將有所幫助。讓我給你一個延遲5秒設置鬧鐘時間的例子。請試試這個,這是一個骯髒的方式,我只想解釋一下。這是你做了什麼:

 calnow.set(Calendar.HOUR_OF_DAY,TP.getCurrentHour()); 
      calnow.set(Calendar.MINUTE,TP.getCurrentMinute()); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, calnow.getTimeInMillis(),pendingintent); 

獲得五秒鐘的延遲,將其更改爲

alarmManager.set(AlarmManager.RTC_WAKEUP, calnow.getTimeInMillis()+5000,pendingintent); 

就像我說的,這只是顯示其價值,你必須設置爲alarmManager。必須以毫秒爲單位,當您想要啓動警報時。爲此,您必須確保從您的TP中獲得正確的值。所以,如果你希望我們幫助你,這將是一個很好的方式向我們展示完整的代碼

+0

Thanx爲您的幫助,我剛剛上傳了新的代碼,請檢查並幫助我 –