移动应用开发实验四AlarmManager实现闹钟提醒

  • 实验目的和要求

在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" />
  • 实验结果与分析(实验结果截图)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/698620.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React脚手架,配置环境变量(生产模式,开发模式)

项目搭建方式&#xff1a;react脚手架(create-react-app) 1. 下载依赖&#xff1a; npm install dotenv npm install dotenv-expandnpm install dotenv-cli -S 2.配置环境变量&#xff1a; 项目根部录下创建文件.env .env.pro .env.dev 配置package.json - scripts…

ANSYS Workbench中如何从面选择创建节点集合named selection?

点击选中一个面&#xff0c;右键named selection&#xff1a;

轮式机器人简介

迄今为止,轮子一般是移动机器人学和人造交通车辆中最流行的运动机构。它可达到很高的效率, 如图所示, 而且用比较简单的机械就可实现它的制作。 另外,在轮式机器人设计中,平衡通常不是一个研究问题。 因为在所有时间里,轮式机器人一般都被设计成在任何时间里所有轮子均与地接…

MemoryModule - exp - test

文章目录 MemoryModule - exp - test概述笔记测试环境GetModuleFileName不能正常执行GetModuleFileNameWntdll_LdrGetDllFullName猜测原因用LoadLibrary载入的DLL中功能是正常的 gLog可以正常使用内存载入DLL无法支持的功能的折中方法COM操作正常调用方代码接口代码 接口入参测…

笔记:完善python selenium 讯飞写作的整体自动化

昨天做得不太好,今天再来一次,我发现,只要写得多,一定会有发现。 1、加入本地目录,不要一直登录。 # 定义Edge浏览器的用户数据目录edge_user_data_dir = r"C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default"# 设置Edge选项edge_optio…

Spring AI默认gpt版本源码探究

Spring AI默认gpt版本源码探究 调试代码 通过调试&#xff0c;可以看到默认mdel为gpt-3.5-turbo 源码探究 进入OpenAiChatClient类查看具体的代码信息 可以看到如下代码&#xff0c;在有参构造方法中可以看到&#xff0c;model默认使用OpenAiApi.DEFAULT_CHAT_MODELpublic…

【unity小技巧】减少Unity中的构建打包大小

文章目录 正常默认打包查看编辑器打包日志压缩图片压缩网格模型压缩贴图压缩音频文件只打64位包最终大小完结 正常默认打包 这里以安卓为例。先什么都不干&#xff0c;直接打包安卓apk&#xff0c;查看包大小 查看编辑器打包日志 搜索build report构建报告。构建报告我们应该…

压力给到 Google,OpenAI 发布 GPT-4o 来了

北京时间5月14日凌晨1点&#xff0c;OpenAI 开启了今年的第一次直播&#xff0c;根据官方消息&#xff0c;这次旨在演示 ChatGPT 和 GPT-4 的升级内容。在早些时候 Sam Altman 在 X 上已经明确&#xff0c;「我们一直在努力开发一些我们认为人们会喜欢的新东西&#xff0c;对我…

26版SPSS操作教程(高级教程第二十章)

目录 前言 粉丝及官方意见说明 第二十章一些学习笔记 第二十章一些操作方法 神经网络与支持向量机 人工神经网络&#xff08;artificial neural network&#xff0c;ANN&#xff09; 假设数据 具体操作 结果解释 对案例的进一步分析 结果解释 ​编辑 尝试将模型复…

如何让机器理解人类语言?Embedding技术详解

如何让机器理解人类语言&#xff1f;Embedding技术详解 文章目录 如何让机器理解人类语言&#xff1f;Embedding技术详解介绍什么是词嵌入&#xff1f;什么是句子嵌入&#xff1f;句子嵌入模型实现句子嵌入的方法值得尝试的句子嵌入模型 句子嵌入库实践Step 1Step 2Step 3 Doc2…

【其他学习参考文档记录】

交叉编译学习参考 nodejs 交叉编译-cliff工作室

ComfyUI相见恨晚的提示词插件,简直堪称神器!

之前我曾介绍过一款专为SD设计的中文提示词插件——prompt-all-in-one&#xff0c;想必使用过的小伙伴们都已经感受到了它的便捷与实用吧。 不过&#xff0c;那款插件是基于webUI版本的&#xff0c;而现在&#xff0c;越来越多的朋友开始探索ComfyUI这一新选择。 假如在Comfy…