java - Android闹钟应用程序使用时间选择器来选择时间和 Intent

标签 java android alarmmanager

任何人都可以帮助我制作一个普通的闹钟应用程序,它使用 TimePicker 来设置时间..并且还使用 Intent 等而不是正常的比较。这是我之前完成的代码现在。但这不起作用。 “TimePicker”设置时间,按下“ToggleButton”时,“TextVew”显示闹钟已打开。但是当达到闹钟时间时,不会显示闹钟响铃消息。请有人帮助我。 这是主要 Activity 的代码

public  class FullscreenActivity extends Activity implements OnClickListener  {
        TimePicker TimePickerForGettingTime;
        TextView AlarmSet;
        TextView AlarmOnOff;



        ToggleButton ConfirmButton;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fullscreen);


       TimePickerForGettingTime=   (TimePicker)findViewById(R.id.TimePickerForGettingTime);
       ConfirmButton = (ToggleButton) findViewById(R.id.ConfirmButton);




        ConfirmButton.setOnClickListener(new OnClickListener(){

               @Override
            public void onClick(View v)
            {      boolean on=((ToggleButton) v).isChecked() ;
                  AlarmOnOff=(TextView)findViewById(R.id.AlarmOnOff);

                  if(on)
                  {     
                   AlarmOnOff.setText("Alarm on");

                    Calendar cal = Calendar.getInstance();
                            cal.set(TimePickerForGettingTime.getCurrentHour(),TimePickerForGettingTime.getCurrentMinute(),00);

                        setAlarm(cal);

                  }
                  else
                  { 
                      AlarmOnOff.setText("Alarm off");
                  }
                  }

        });
     }
      private void setAlarm(Calendar targetCal)
      {


          Intent alarmintent = new Intent(FullscreenActivity.this, AlarmReceiver.class);
          PendingIntent sender = PendingIntent.getBroadcast(FullscreenActivity.this, 0, alarmintent, 0);
          AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
          alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), sender);   


        }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

 }

这是 onbootreceiver 类

   public class OnBootReceiver extends BroadcastReceiver {
      private static final int PERIOD=10000;  // 10sec

      @Override
      public void onReceive(Context context, Intent intent) {
      AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
      Intent i=new Intent(context, AlarmReceiver.class);
      PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0);

      mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), PERIOD, pi);
 }
}

这是警报接收器类

   public class AlarmReceiver extends BroadcastReceiver {

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



 PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
 NotificationManager manager =    (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
    Notification noti = new Notification(android.R.drawable.stat_notify_more, "Wake up alarm", System.currentTimeMillis());
    noti.setLatestEventInfo(context, "My Alarm", "WAKE UP...!!!", sender);
    noti.flags = Notification.FLAG_AUTO_CANCEL;
    manager.notify(R.string.app_name, noti); 

    //intent to call the activity which shows on ringing
    Intent myIntent = new Intent(context, FullscreenActivity.class);
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(myIntent);

    //display that alarm is ringing
    Toast.makeText(context, "Alarm Ringing...!!!", Toast.LENGTH_LONG).show();
}
 }

最佳答案

您是否在 list 中注册了警报接收器?

您的 list 中应该包含此内容。

 <application>
   .
   .
   .
 <receiver android:name=".AlarmReceiver" android:process=":remote" />
</application>

另外,我不确定这是否是日历设置的正确方法,但我可能是错的。我这样做并且对我来说效果很好

            Calendar cal = Calendar.getInstance();

           cal.set (Calendar.HOUR_OF_DAY, time_picker.getCurrentHour());
           cal.set (Calendar.MINUTE, time_picker.getCurrentMinute());

关于java - Android闹钟应用程序使用时间选择器来选择时间和 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798459/

相关文章:

java - Java 中的 lambdaj 和多重排序条件

java - Android 后台服务中的线程

android - 我可以从 Dart 调用 Kotlin 函数吗

java - 闹钟服务在手机的省电模式下无法工作

android - Android:警报管理器和 Intent 过滤器不起作用

java - 是否有用于在 Java 中设置默认日志级别的命令行选项

java - 将两个 Java Maven 项目合并为一个

java - 本地主机 :8080 requires login and password - tomcat + h2

android - 将宽度和高度增加 2 倍后宽度缩小 openGL C++

android - 警报设置后立即显示警报通知,即使时间是 future 时间