2016-04-15 333 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

我下载了一个完整的项目的闹钟管理器,它仍然不起作用 –