gpt4 book ai didi

安卓报警类

转载 作者:行者123 更新时间:2023-11-30 04:53:10 27 4
gpt4 key购买 nike

我有一个设置闹钟的类(class),但我需要再设置大约 10 个这样的闹钟。有没有一种方法可以创建类的新实例并设置闹钟时间,而不是复制类?

这是我的代码。

  import java.util.Calendar;

import java.lang.String;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.ListActivity;
import android.app.PendingIntent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

import android.content.Intent;
import android.widget.Button;
import android.widget.Toast;


public class Alarm extends Activity {
/* for logging - see my tutorial on debuggin Android apps for more detail */
private static final String TAG = "SomeApp ";
protected Toast mToast;

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


setAlarm();
}





public void setAlarm() {


try {

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DAY_OF_YEAR, 0);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 01);
cal.set(Calendar.SECOND, 0);


Intent intent = new Intent(Alarm.this, Alarm1.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 1234567, intent, 0);
PendingIntent sende2 = PendingIntent.getBroadcast(this, 123123, intent, 0);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); // to be alerted 30 seconds from now
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sende2); // to be alerted 15 seconds from now

/* To show how alarms are cancelled we will create a new Intent and a new PendingIntent with the
* same requestCode as the PendingIntent alarm we want to cancel. In this case, it is 1234567.
* Note: The intent and PendingIntent have to be the same as the ones used to create the alarms.
*/
Intent intent1 = new Intent(Alarm.this, Alarm1.class);
PendingIntent sender1 = PendingIntent.getBroadcast(this, 1234567, intent1, 0);
AlarmManager am1 = (AlarmManager) getSystemService(ALARM_SERVICE);
am1.cancel(sender1);


} catch (Exception e) {
Log.e(TAG, "ERROR IN CODE:"+e.toString());
}
}

};





b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {


// Intent i = new Intent(getContext(),Alarm.class);



//Code below is from another class which is where im calling the alarm application



// ctx.startActivity (i);// start the Alarm class activity (class)public void onClick(View v) {

Alarm a = new Alarm ();

a.setAlarm();


b1.setText(prod);


}
});

上面的代码来自另一个类,在按钮上单击用户可以设置提醒(按钮调用警报类,唯一让它工作的是使用 Intent 。我只是尝试调用 setAlarm 方法但是那没有用。也许我可以创建一个新的日历实例并在按钮处理程序中设置时间。然后我必须将该实例传递给警报类。你知道这是否可能吗?

最佳答案

您不能只在 onCreate() 中创建一个 Calendar 实例,设置它的参数,然后将实例传递给 setAlarm(),修改实例,调用 setAlarm() 等,还是我遗漏了什么?

例如-

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DAY_OF_YEAR, 0);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 01);
cal.set(Calendar.SECOND, 0);
setAlarm(cal);

cal.set(Calendar.HOUR_OF_DAY, 12);
cal.set(Calendar.MINUTE, 30);
setAlarm(cal);

//etc

}

public void setAlarm(Calendar cal) {

try {

Intent intent = new Intent(Alarm.this, Alarm1.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 1234567, intent, 0);
PendingIntent sende2 = PendingIntent.getBroadcast(this, 123123, intent, 0);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); // to be alerted 30 seconds from now
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sende2); // to be alerted 15 seconds from now

/* To show how alarms are cancelled we will create a new Intent and a new PendingIntent with the
* same requestCode as the PendingIntent alarm we want to cancel. In this case, it is 1234567.
* Note: The intent and PendingIntent have to be the same as the ones used to create the alarms.
*/
Intent intent1 = new Intent(Alarm.this, Alarm1.class);
PendingIntent sender1 = PendingIntent.getBroadcast(this, 1234567, intent1, 0);
AlarmManager am1 = (AlarmManager) getSystemService(ALARM_SERVICE);
am1.cancel(sender1);


} catch (Exception e) {
Log.e(TAG, "ERROR IN CODE:"+e.toString());
}
}

关于安卓报警类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com