如何解决如何在警报上创建AlertDialog
(((我在SO或Internet上找不到此处描述的内容)
我有一个TimePicker,选择了时间后,便会激活警报。 (假设现在是11:00,我在TimePicker中选择11.05,11:05,则触发警报。)
这部分代码运行正常。我从this link处获取了警报代码。
现在,我的问题:
当警报响起时(作为声音+吐司),我实际上想要一个声音+ AlertDialog。当我单击“确定”以关闭AlertDialog时,它将关闭AlertDialog并停止警报声音。
我尝试了几种解决方案,但没有成功:我知道如何正确地编写AlertDialog,但是我无法使用alarmManager.cancel(pendingIntent);
将此代码部分正确地放置在当前代码中以在PositiveButton中取消警报AlertDialog。
有人知道在这里怎么做吗?
这是我的代码:
<receiver android:name=".AlarmReceiver"></receiver>
这是我打电话的主要班级:
public class MyAlarm extends AppCompatActivity {
TimePickerDialog picker2;
EditText eText2;
TimePicker alarmTimePicker;
PendingIntent pendingIntent;
AlarmManager alarmManager;
Long time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_alarm);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
eText2 = (EditText) findViewById(R.id.editText2);
eText2.setInputType(InputType.TYPE_NULL);
eText2.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar cldr = Calendar.getInstance();
int hour = cldr.get(Calendar.HOUR_OF_DAY);
int minutes = cldr.get(Calendar.MINUTE);
picker2 = new TimePickerDialog(MyAlarm.this,new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker tp,int sHour,int sMinute) {
String sTime = String.format("%02d",sHour) + "." + String.format("%02d",sMinute) + " Uhr";
eText2.setText(sTime);
//Alarm -----------------------------------------------------------------
Toast.makeText(MyAlarm.this,"ALARM ON",Toast.LENGTH_SHORT).show();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,sHour);
calendar.set(Calendar.MINUTE,sMinute);
Intent intent = new Intent(MyAlarm.this,AlarmReceiver.class);
pendingIntent = PendingIntent.getbroadcast(MyAlarm.this,intent,0);
time = (calendar.getTimeInMillis() - (calendar.getTimeInMillis() % 60000));
if (System.currentTimeMillis() > time) {
if (calendar.AM_PM == 0)
time = time + (1000 * 60 * 60 * 12);
else
time = time + (1000 * 60 * 60 * 24);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,time,pendingIntent);
}
},hour,minutes,true);
picker2.show();
}
});
}
}
以及相应的接收器类:
public class AlarmReceiver extends broadcastReceiver {
@Override
public void onReceive(Context context,Intent intent) {
Toast.makeText(context,"Alarm!",Toast.LENGTH_LONG).show();
Uri alarmUri = ringtoneManager.getDefaultUri(ringtoneManager.TYPE_ALARM);
if (alarmUri == null) {
alarmUri = ringtoneManager.getDefaultUri(ringtoneManager.TYPE_NOTIFICATION);
}
ringtone ringtone = ringtoneManager.getringtone(context,alarmUri);
ringtone.play();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。