2016-04-15 196 views
-4

我真的需要幫助的人,我試圖讓敬酒出現在特定的時間與來自android的報警管理器。我做了一些研究,我做了這個代碼,但我不知道什麼是不正常......我什麼都試過如何在android studio上設置鬧鐘?

public void start() { 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     Date dat = new Date(); 
     Calendar cal_alarm = Calendar.getInstance(); 
     Calendar cal_now = Calendar.getInstance(); 
     cal_now.setTime(dat); 
     cal_alarm.setTime(dat); 
     cal_alarm.set(Calendar.HOUR_OF_DAY,12); 
     cal_alarm.set(Calendar.MINUTE,13); 
     cal_alarm.set(Calendar.SECOND,0); 
     if(cal_alarm.before(cal_now)){ 
      cal_alarm.add(Calendar.DATE,1); 
     } 
     manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(),pendingIntent); 
    } 

如果我使用cal_alarm - 在manager.set cal_now這5秒後關閉觸發。

+0

Google for it。有一個完整的Android開發者可下載的例子。 –

+0

檢查此http://stackoverflow.com/a/8801990/4414887和http://stackoverflow.com/a/12124955/4414887 – anAmaka

+1

可能重複的[Alarm Manager示例](http://stackoverflow.com/questions/ 4459058/alarm-manager-example) –

回答

2

您需要添加一個接收器得到的結果

在你AndroidManifest.xml中添加此

<receiver android:name=".AlarmReceiver" /> 

創建這個廣播接收器AlarmReceiver.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "ALARM", Toast.LENGTH_LONG).show(); 
    } 
} 

和最後,修復你的方法開始

public void start() { 
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Date dat = new Date(); 
    Calendar cal_alarm = Calendar.getInstance(); 
    Calendar cal_now = Calendar.getInstance(); 
    cal_now.setTime(dat); 
    cal_alarm.setTime(dat); 
    cal_alarm.set(Calendar.HOUR_OF_DAY,14); 
    cal_alarm.set(Calendar.MINUTE,18); 
    cal_alarm.set(Calendar.SECOND,0); 
    if(cal_alarm.before(cal_now)){ 
     cal_alarm.add(Calendar.DATE,1); 
    } 

    Intent myIntent = new Intent(context, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0); 

    manager.set(AlarmManager.RTC_WAKEUP,cal_alarm.getTimeInMillis(), pendingIntent); 
} 
+0

我有清單中的聲明,我也有alarmreceiver.java。但仍然沒有。 –

+0

在manifest中,你不需要添加擴展名.java來檢查它。使用CTRL +空格來幫助你選擇你的BroadcastReceiver裏面的標籤 – Gorio

+0

我下載了一個完整的項目的鬧鐘管理器,它仍然不起作用 –