-
实验目的和要求
在Android Studio中,通过AlarmManager实现闹钟提醒。
点击“SET ALARM”后,采用Toast方式提示用于设定的闹钟成功,并包含设定的闹钟启用时间。
当闹钟生效时,采用AlertDialog实现闹钟题型,并通过AlertDialog支持的setItems方式[1],提示用户选择三种后续动作:(1)自动设定在当前时间的1分钟生效的闹钟,(2)自动设定在当前时间的2分钟生效的闹钟,(3)不再设定新的闹钟。
当用户选定“(1)自动设定在当前时间的1分钟生效的闹钟”或“(2)自动设定在当前时间的2分钟生效的闹钟”后,闹钟生效后,仍按照以上方式提供给用户上述三种选择。
当用户选定“(3)不再设定新的闹钟”后,通过AlertDialog提供的setMessage方式,询问用户是否确认不再设定新的闹钟并提供“是”和“否”两个操作按钮,如果用户选择“否”,则跳转到使用AlarmManager设定闹钟的页面,如果用户选择“是”,则通过Notification方式为用户提供通知[1],在用户下拉点击通知消息后,跳转到第三次实验的主页面,并要求该页面能够正确完成第三次实验的各项要求。
-
实验环境
Win11 Androidstudio
-
实验内容与过程(实验题目和代码)
创建一个新的Java类,命名为"AlarmReceiver",并将以下代码添加到该类中:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 在这里添加你要执行的操作,比如播放音乐或者弹出通知等
}
}
MainActivity.java类中添加以下代码:
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private TimePickertimePicker;
private Button btnSetAlarm;
private AlarmManageralarmManager;
private PendingIntentpendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePicker = findViewById(R.id.timePicker);
btnSetAlarm = findViewById(R.id.btnSetAlarm);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
btnSetAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
long alarmTime = calendar.getTimeInMillis();
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);
Toast.makeText(MainActivity.this, "闹钟设置成功!", Toast.LENGTH_SHORT).show();
}
});
}
}
最后,在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.VIBRATE" />
注册AlarmReceiver类:
<receiver android:name=".AlarmReceiver" />
-
实验结果与分析(实验结果截图)