java以编程方式设置安卓闹钟
我正在尝试构建一个个人应用程序,可以在DeskClock应用程序中设置闹钟。我可以让它在当天的任何时候设置闹钟,但我该如何设置第二天或本周晚些时候的闹钟呢。通过查看安卓中的AlarmClock api,我看不到一种正常的方法来实现这一点。这可能吗
顺便说一句,这是我设置闹钟的代码,可能不太好看,但我正在学习
package com.netwokz.setit;
import java.util.Calendar;
import java.util.GregorianCalendar;
import 安卓.app.Activity;
import 安卓.content.Intent;
import 安卓.os.Bundle;
import 安卓.provider.AlarmClock;
import 安卓.view.Menu;
import 安卓.view.View;
import 安卓.view.View.OnClickListener;
import 安卓.widget.Button;
import 安卓.widget.EditText;
public class MainActivity extends Activity implements OnClickListener {
Button btnSetAlarm;
EditText etHour, etMinute;
int minute, hour, day;
Calendar cal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
btnSetAlarm = (Button) findViewById(R.id.btn_set_alarm);
etHour = (EditText) findViewById(R.id.etHour);
etMinute = (EditText) findViewById(R.id.etMinute);
btnSetAlarm.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_set_alarm:
setAlarm();
break;
}
}
private void setAlarm() {
cal = new GregorianCalendar();
cal.setTimeInMillis(System.currentTimeMillis());
day = cal.get(Calendar.DAY_OF_WEEK);
hour = cal.get(Calendar.HOUR_OF_DAY);
minute = cal.get(Calendar.MINUTE);
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_HOUR, hour + Integer.parseInt(etHour.getText().toString()));
i.putExtra(AlarmClock.EXTRA_MINUTES, minute + Integer.parseInt(etMinute.getText().toString()));
i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
startActivity(i);
}
}
# 1 楼答案
主要活动。爪哇
接受者。爪哇
主要活动。xml
舱单。xml
# 2 楼答案
试一试悬而未决的意图如何
只需将日历值更改为提前几天左右
# 3 楼答案
就像一个真正的闹钟,我看不到为未来的约会设置闹钟的方法。我认为这需要两种选择之一:
AlarmManager(在所需的未来日期触发应用程序服务,在AlarmClock中创建闹钟)和AlarmClock(实际处理闹钟)的组合。不要忘记收听BOOT_COMPLETED broadcast以重置AlarmManager警报,因为它们在重新启动后不会持续
使用AlarmManager触发模拟报警的应用程序服务和UI。这将要求你考虑电话状态等你不必担心的警报时钟。
我认为你可以让你的应用程序只打开AlarmClock对话框,允许用户设置重复出现的警报和其他无法通过意图执行的选项