实现效果:点击主活动上的按钮,弹出一个带有时间选择器的对话框(TimePickerDialog),设置时间后Toast"设置成功"。到设置的时间后在AlarmActivity弹出显示时间到的对话框。

实现原理:使用AlarmManager类向系统请求一个定时任务,到时间时系统会发送一个广播,接受这个广播并做相应的操作即可。

1.主活动代码

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.app.TimePickerDialog;

import java.util.Calendar;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TimePicker;

import android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener{

private Button btnSetTime;

private AlarmManager manager;

private Calendar calender;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//当前时间

calender = Calendar.getInstance();

manager = (AlarmManager) getSystemService(ALARM_SERVICE);

btnSetTime = (Button) findViewById(R.id.btnSetTime);

btnSetTime.setOnClickListener(this);

}

@Override

public void onClick(View view) {

switch (view.getId()){

case R.id.btnSetTime:

showAlertDialog();

break;

}

}

private void showAlertDialog() {

TimePickerDialog dialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {

Calendar c = Calendar.getInstance();

c.setTimeInMillis(System.currentTimeMillis()); //设置Calendar对象

c.set(Calendar.HOUR_OF_DAY, hourOfDay); //设置闹钟小时数

c.set(Calendar.MINUTE, minute); //设置闹钟的分钟数

c.set(Calendar.SECOND, 0); //设置闹钟的秒数

c.set(Calendar.MILLISECOND, 0); //设置闹钟的毫秒数

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); //创建Intent对象

PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); //创建PendingIntent

manager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); //设置闹钟

Toast.makeText(MainActivity.this, "闹钟设置成功", Toast.LENGTH_SHORT).show();//提示用户

}

}, calender.get(Calendar.HOUR_OF_DAY), calender.get(Calendar.MINUTE),false);

dialog.show();

}

}

注意:calender是用来设置弹出框默认显示时间的,c才是我们设置的时间。这里c.set(Calendar.HOUR_OF_DAY, hourOfDay);里的参数不要错写成HOUR,HOUR是十二小时制,HOUR_OF_DAY才是24小时制。(我会说我给他加12什么的完全没用吗)。关键代码是manager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);第一个参数是闹钟的类型,第二个是执行时间,从我们设置的c获取,第三个就是要执行的任务。还有,看看Calender导的是哪个包,如果calender的代码红了基本就是导错了。

2.广播接收器:

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

public class AlarmReceiver extends BroadcastReceiver {

public AlarmReceiver() {

}

@Override

public void onReceive(Context context, Intent intent) {

Intent i = new Intent(context,AlarmActivity.class);

//使用context开启Aty时要开启新的task,所以要加一个flag

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(i);

}

}注意别忘了加那个FLAG。

之后在AlarmActivity中弹出对话框就可以了。

android 简易闹钟,android简易小闹钟相关推荐

  1. android小闹钟课程设计,小闹钟的教学设计

    小闹钟的教学设计 小闹钟的教学设计 第一课时 教学目标:1.掌握字的.间架结构,能在田字格中正确书写. 2.能根据汉语拼音正确书写词语,巩固汉语拼音. 3.培养学生时间观念,从小养成爱惜时间的好习惯. ...

  2. 开心小闹钟_开心小闹钟下载

    下载之家 → 地图导航 → 桌面工具 → 闹铃时钟 → 开心小闹钟 2.8 beta3 软件大小:3.38 MB 软件语言:简体中文 软件授权:共享版 软件类别:桌面工具 - 闹铃时钟 应用平台:Wi ...

  3. php 网页闹钟,120.页面小闹钟 - Lucky_Me的个人空间 - OSCHINA - 中文开源技术交流社区...

    var getCurrentTime= function(){ var span = document.getElementById("clock"); var time = ne ...

  4. android小闹钟课程设计,《小闹钟》教学设计

    <小闹钟>教学设计 作为一名为他人授业解惑的教育工作者,编写教学设计是必不可少的,借助教学设计可以提高教学质量,收到预期的教学效果.那要怎么写好教学设计呢?下面是小编整理的<小闹钟& ...

  5. Android菜鸟的成长笔记(25)——可爱的小闹钟

    摘要: 这一篇主要使用系统为我们提供的一个服务AlarmManager来制作一个Android小闹钟,同时还涉及到了自定义主题.判断第一次启动应用.自定义动画.对话框.制作指导滑动页面等方面.最后形成 ...

  6. android闹钟的需求分析,手机小闹钟需求分析

    Android 手机小闹钟 日常生活工作中,时常会有一些重要事情或日程安排,而闹钟作为一种提醒人们的工具,成为很多人生活中不可或缺的一部分. 本软件包括的功能有闹钟设置.闹钟创建.闹钟关闭等模块.本应 ...

  7. TimePicker,SharedPreferences实现android小闹钟

    博客园 首页 新随笔 联系 管理 订阅 随笔- 137  文章- 6  评论- 145  TimePicker,SharedPreferences实现android小闹钟 简述: 使用TimePick ...

  8. 【Android笔记41】使用Android实现一个简易版本的购物车小案例

    这篇文章,主要是使用Android实现一个简易版本的购物车小案例. 目录 一.购物车案例 1.1.创建主界面 (1)主界面布局样式 (2)商品列表Fragment

  9. Android小闹钟程序【安卓进化十三】

    最近写了个闹钟的程序,看到SharedPreferences在一个程序中可以共享数据,SharedPreferences是一个轻量级的键值存储机制,只可以存储基本数据类型.我就拿来用用,没想到Shar ...

  10. android小闹钟课程设计,教学案例与反思:WINDOWS画图“设计一个小闹钟”

    教学案例与反思:WINDOWS画图"设计一个小闹钟" 并不是很难,今天我们就是要解决使用哪些绘图工具来进行创作的问题? 1.布置任务 我给5分钟让同学们自己尝试一下,为小蜗牛设计一 ...

最新文章

  1. Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据
  2. 设置gbk_我的gVim设置
  3. Python入门教程之Python保留字符大全
  4. python的excell库_Python中使用第三方库xlrd来写入Excel文件示例
  5. “嫌贫爱富”之人,从一顿饭局当中便可看出
  6. PRML5-神经网络(1)
  7. 简单了解Java语言
  8. 用计算机如何算瓷砖菱形加工,瓷砖菱形铺贴怎么计算面积
  9. 抖音视频评论获取系统,获取抖音评论的系统
  10. PHP 对接阿里云短信
  11. eth java_eth钱包开发--java(附带eth离线交易工具类)
  12. 北航超算运行matlab,计算性能超50万亿次破纪录,北航荣获ASC19世界大学生超算竞赛最高计算性能奖...
  13. Canvas: trying to use a recycled bitmap android.graphics.Bitmap
  14. css在文字前面设置带颜色的小方块样式
  15. antd 组件库upload使用时onChange只会执行到 uploading状态 解决办法
  16. 8.0魔兽服务器维护时间,《魔兽世界》8.0上线时间公布 取消PVE、PVP服务器之分...
  17. 关于eclipse中js文件没有提示代码的解决
  18. 线性代数之矩阵的属性和运算
  19. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第48讲:PHP绘图技术
  20. 2018 考研 408 经验贴——数学一

热门文章

  1. 吴恩达机器学习--线性回归
  2. 电厂数字化仪控系统功能测试工具ETest设计与实现
  3. k8s的etcd部署以及实现pod通信
  4. 《网络、群体和市场》习题答案
  5. 怎样把一个价值0.5元苹果卖到100万元(转)
  6. GBase 8c V3.0.0数据类型——HLL函数和操作符(日志函数)
  7. windows10密钥激活失败 0x80072efe
  8. Wi-Fi语音技术浅析
  9. 实用新型专利的年费一览
  10. 【前端】汉字转拼音首字母