设置闹钟

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

@Override

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

SPUtil.setNotificationTime(Tools.getNotificationTime(hourOfDay, minute));

Calendar calendar1 = Calendar.getInstance();

calendar1.setTimeInMillis(System.currentTimeMillis());

calendar1.set(Calendar.HOUR_OF_DAY, hourOfDay);

calendar1.set(Calendar.MINUTE, minute);

calendar1.set(Calendar.SECOND, 0);

calendar1.set(Calendar.MILLISECOND, 0);

am = (AlarmManager) getSystemService(ALARM_SERVICE);

start_alarm = new Intent(MessageActivity.this, ToastActivity.class);

sender = PendingIntent.getActivity(MessageActivity.this, 1, start_alarm, 0);

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(), repeat_time, sender);

String s =Tools.changeTimeStyle(calendar1.get(Calendar.HOUR_OF_DAY),calendar1.get(Calendar.MINUTE));

showTimeTxt.setText(s);

SPUtil.setNotificationTime(s);

can_cancle = true;

}

},

calendar.get(Calendar.HOUR_OF_DAY),

calendar.get(Calendar.MINUTE), true).show();

ToastActivity

public class ToastActivity extends AppCompatActivity {

private Uri ringUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);

private final MediaPlayer mp = new MediaPlayer();

private Vibrator vibrator;

private PowerManager.WakeLock mWakelock;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);//hide title

Window win = getWindow();

WindowManager.LayoutParams winParams = win.getAttributes();

winParams.flags |= (WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON

| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

startMedia();//播放音乐

startVibrator();//震动

showAlarmDialog();

}

@Override

protected void onResume() {

super.onResume();

if (mWakelock == null) {

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP

| PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass()

.getCanonicalName());

mWakelock.acquire();

}

}

@Override

protected void onPause() {

super.onPause();

if (mWakelock != null && mWakelock.isHeld()) {

mWakelock.release();

mWakelock = null;

}

}

private void showAlarmDialog() {

new AlertDialog.Builder(this).setTitle("闹钟响了")

.setMessage(Tools.getSharedWeather(MyApplication.getCityData(SPUtil.getGPSCity())))

.setPositiveButton("关闭闹钟", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

mp.stop();

vibrator.cancel();

ToastActivity.this.finish();

}

}).show();

}

private void startVibrator() {

long[] pattern = {500, 1000, 500, 1000};//停止 开始 停止 开始

vibrator.vibrate(pattern, 0);

}

private void startMedia() {

try {

mp.setDataSource(this, ringUri);

mp.prepare();

mp.start();

} catch (IOException e) {

e.printStackTrace();

}

}

添加唤醒锁屏权限:

android 开源闹钟,Android闹钟 - huiyun-yoyo的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. android注销广播接收器,使用广播接收器 - chuiyuan的个人页面 - OSCHINA - 中文开源技术交流社区...

    之前 的用Intent 在不同的Activity之间跳转,可以说是直接 Intent,因为指定 了明确 的目标. 广播则是相当于间接Intent. 间接intent就是没有指定具体目标的Intent, ...

  2. ireader android 源码,仿ireader书架 - androidCode的个人空间 - OSCHINA - 中文开源技术交流社区...

    public class ReaderActivity extends Activity { private ShelfAdapter mAdapter; // 书架列表 private ListVi ...

  3. mtk android 关机充电,MTK 关机充电 - yueqiulijun的个人空间 - OSCHINA - 中文开源技术交流社区...

    充电相关文件目录 alps\vendor\mediatek\proprietary\external\charger\ 充电控制函数:charging_control.cpp // total_tim ...

  4. 黑白球JAVA_桶中取黑白球 - jiacut的个人页面 - OSCHINA - 中文开源技术交流社区

    题目 有一个桶,里面有白球.黑球各100个,现在按下述规则取球: 每次从桶里面拿出来两个球: 如果是两个同色的球,就再放入一个黑球: 如果是两个异色的球,就再放入一个白球. 问:最后桶里面只剩下一个黑 ...

  5. mysql mcd date_mysql升级5.5 - ifeixiang的个人页面 - OSCHINA - 中文开源技术交流社区

    对付Linux的问题,其实很多都是权限问题,细心想一下即可. centos6.4默认装的是mysql5.1,使用 yum update 也update不了.google了一下,找到个yum安装的方法: ...

  6. maven 公用仓库_maven公共仓库 - yizhichao的个人页面 - OSCHINA - 中文开源技术交流社区...

    1.maven包查询: http://mvnrepository.com/ 2.maven公共仓库: http://maven.aliyun.com/nexus/content/groups/publ ...

  7. java 锁的类型_Java锁的种类 - shawnplaying的个人页面 - OSCHINA - 中文开源技术交流社区...

    Java锁和并发需要结合在一块了理解,涉及到了多个话题. 本文主要参考了 http://ifeve.com/java_lock_see1/ 但是我认为原文中有某些错误,我在下面的代码中做了修改. 公平 ...

  8. java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...

    编写程序显示一个时钟.示例输出如图所示. 代码: package com.DisplayClock; import javax.swing.*; import java.awt.*; import j ...

  9. long logn的大小c语言,基本排序(C语言版) - ________MX的个人页面 - OSCHINA - 中文开源技术交流社区...

    ###冒泡排序 /** * 冒泡排序 logN^2 * 基本思路:每次从数组底端将最小的数"冒"上来 * **/ void BubbleSort(int *p, int len){ ...

最新文章

  1. 计算机等级必须在学校考吗,计算机等级考试可以跳过一级考二级吗
  2. 物联网智能硬件设备身份验证机制
  3. python下载文件的11种方式_Python下载文件的11种方式
  4. 在非UI线程中显示Toast
  5. 英语作文 计算机新技术对生活的影响,急求一篇电脑对于未来生活影响的英语作文,50分 200词左右...
  6. 在python是什么意思_python 的 表示什么
  7. Mongoose aggregate 多表关联查询
  8. 虚构合同、虚开发票套取高校配套科研经费,一副教授被公诉!
  9. full outer join 与full join的区别_基础小白的SQL的JOIN语法解析
  10. linux下查看进程与线程
  11. 数据通信技术初级工程师证题库
  12. 使用J-link+J-Flash给STM32芯片烧写序列号
  13. 生成条形码(jsbarcode、vue-barcode)
  14. Unity 实用小技巧(更新ing)
  15. Student‘s t分布
  16. Elasticsearch 实现类似SQL语句中like %关键字% 的单纯模糊查询(不进行分词)
  17. asp.net房屋出租销售网
  18. 商标变更的重要性不及时变更的损失
  19. 茧数SCRM营销自动化行业案例 | 教育行业
  20. 手把手教你做20道菜全套教程

热门文章

  1. 【转】Flash mmorpg地图问题
  2. 2023-JavaSE最新整理面试题-面向对象异常集合专题
  3. 职高计算机基础知识视频,职高数学全部讲解视频
  4. 掌控板触摸按键的使用
  5. 实现GitHub第三方登陆详细过程
  6. Android拍照及从相册选择图片传详解(终极版)
  7. 超详细的 github 账号申请与 git 安装教程
  8. BCELoss(binary_crossentropy)的初级使用
  9. 体验文心一言AI大模型生成马云、马化腾和马东敏简介
  10. ERP系统开发中使用FineUI那些事