一.首先设计“设置闹钟”的界面
创建activity_set_alarm.xml文件,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入闹钟时间(如:'1时2分',应在时钟处输入'01',分钟处输入'02'"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时钟"/>
<EditText
android:id="@+id/hour"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textStyle="italic"
android:inputType="number"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分钟"/>
<EditText
android:id="@+id/minute"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textStyle="italic"
android:inputType="number"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请设置闹钟标题"/>
<EditText
android:id="@+id/alarmTitle"
android:minWidth="180dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="italic"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<CheckBox
android:id="@+id/Monday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期一"/>
<CheckBox
android:id="@+id/Tuesday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期二"/>
<CheckBox
android:id="@+id/Wednesday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期三"/>
<CheckBox
android:id="@+id/Thursday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期四"/>
<CheckBox
android:id="@+id/Friday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期五"/>
<CheckBox
android:id="@+id/Saturday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期六"/>
<CheckBox
android:id="@+id/Sunday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="星期天"/>
</LinearLayout>
<Button
android:id="@+id/StartAlarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开启闹钟"/>
</LinearLayout>
然后写该xml文件对应的Activity文件:SetAlarmActivity.java文件,如下:
public class SetAlarmActivity extends AppCompatActivity {
private ArrayList<Integer> Time=new ArrayList<Integer>();
private CheckBox Monday;
private CheckBox Tuesday;
private CheckBox Wednesday;
private CheckBox Thursday;
private CheckBox Friday;
private CheckBox Saturday;
private CheckBox Sunday;
private EditText hour;
private EditText minute;
private EditText alarmTitle;
private Button StartAlarm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_alarm);
init();//初始化
//监听开始闹钟按钮
StartAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setAlarmTime();
}
});
}
/**
* 初始化控件
*/
private void init(){
Monday=findViewById(R.id.Monday);
Tuesday=findViewById(R.id.Tuesday);
Wednesday=findViewById(R.id.Wednesday);
Thursday=findViewById(R.id.Thursday);
Friday=findViewById(R.id.Friday);
Saturday=findViewById(R.id.Saturday);
Sunday=findViewById(R.id.Sunday);
hour=findViewById(R.id.hour);
minute=findViewById(R.id.minute);
alarmTitle=findViewById(R.id.alarmTitle);
StartAlarm=findViewById(R.id.StartAlarm);
}
/**
* 设置闹钟时间
*/
private void setAlarmTime(){
Intent intent=new Intent();
intent.setAction("android.intent.action.SET_ALARM");
//获取用户输入的时间及标题
int Hour=Integer.parseInt(hour.getText().toString());
int Minute= Integer.parseInt(minute.getText().toString());
String Title=alarmTitle.getText().toString();
if(Monday.isChecked())
Time.add(Calendar.MONDAY);
if(Tuesday.isChecked())
Time.add(Calendar.TUESDAY);
if(Wednesday.isChecked())
Time.add(Calendar.WEDNESDAY);
if(Thursday.isChecked())
Time.add(Calendar.THURSDAY);
if(Friday.isChecked())
Time.add(Calendar.FRIDAY);
if(Saturday.isChecked())
Time.add(Calendar.SATURDAY);
if(Sunday.isChecked())
Time.add(Calendar.SUNDAY);
//设置闹钟时间
intent.putExtra(AlarmClock.EXTRA_DAYS,Time);//设置闹钟日子
intent.putExtra(AlarmClock.EXTRA_HOUR,Hour);//设置时钟
intent.putExtra(AlarmClock.EXTRA_MINUTES,Minute);//设置分钟
intent.putExtra(AlarmClock.EXTRA_MESSAGE,Title);//设置闹钟标题
intent.putExtra(AlarmClock.EXTRA_SKIP_UI,true);//跳过UI
//判断手机上是否有用于接收该intent的应用
if(intent.resolveActivity(getPackageManager())!=null){
startActivity(intent);
}
else{
Toast.makeText(SetAlarmActivity.this,"没有合适的应用设置闹钟",Toast.LENGTH_SHORT);
}
}
}
当你系统自带的闹钟应用有下面的intent-filter时才可以启动闹钟。
<intent-filter>
<action android:name="android.intent.action.SET_ALARM" />
<category android:name="android.intent.category.DEFAULT" />
<!-- 由于对应的intent是隐式的,故必须加上category:"android.intent.category.DEFAULT" -->
</intent-filter>
如果你的手机上没有这样的应用,可以自行编写。