-
实验目的和要求
在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 {@Overridepublic 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;@Overrideprotected 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() {@Overridepublic 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" />
-
实验结果与分析(实验结果截图)