Code Monkey home page Code Monkey logo

android-alarmmanagerclock's Introduction

Android-AlarmManagerClock

设置闹钟的一个封装的比较全面的demo

前些时候,有人在我「非著名程序员」公众号的后台问我有没有设置闹钟的demo,我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧。确实设置闹钟是一个比较麻烦的东西。我在这里写的这个demo抽出来了封装了一个类库,大家直接调用其中的设置闹钟和取消闹钟的方法即可。可以设置每天的闹钟,周一到星期天之间多选的闹钟,也可以设置选择一次性闹钟,跟系统设置闹钟的方式基本差不多吧。

具体的详情和解释请看这篇文章:

具体使用方法和详解

效果图

来看分析和讲解之前,先看看效果吧,效果图如下:

设置界面

闹钟提醒界面

使用方法介绍:

设置闹钟的方法:

setAlarm(Context context, int flag, int hour, int minute, int id, int
            week, String tips, int soundOrVibrator)

参数介绍:

@param flag 周期性时间间隔的标志,flag = 0 表示一次性的闹钟, flag = 1 表示每天提醒的闹钟(1天的时间间隔),flag = 2 表示按周每周提醒的闹钟(一周的周期性时间间隔)

@param hour 时

@param minute 分

@param id 闹钟的id

@param week week=0表示一次性闹钟或者按天的周期性闹钟,非0 的情况下是几就代表以周为周期性的周几的闹钟

@param tips 闹钟提示信息

@param soundOrVibrator 2表示声音和震动都执行,1表示只有铃声提醒,0表示只有震动提醒

取消闹钟的方法:

canceAlarm(Context context, String action, int id) 

参数介绍:

action:自定义广播的action

id:设置闹钟时的id

公众号

欢迎大家关注我的微信公众号:非著名程序员(smart_android),更多好的原创文章均首发于微信订阅号:非著名程序员

License

Copyright 2017 loonggg

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

android-alarmmanagerclock's People

Contributors

loonggg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-alarmmanagerclock's Issues

关于修改系统时间,闹钟不正确的问题

因为前段时间,也做了个闹钟的功能,也遇到了这些问题,也是这样搞定的。
如果用户,修改了系统的时间,如果我们设置之前就设置一个时间,那么就会触发这个过期闹钟任务。
我的解决方案如下:
    在我们触发的Receive中,加一个时间差的比较:
    代码如下:
    private final static int STALE_WINDOW = 60;//60秒
long now = System.currentTimeMillis();
  if (intent.hasExtra("time")) {
  long sendTime = intent.getLongExtra("time", -1);//闹钟触发的时间
  if (now > sendTime + STALE_WINDOW * 1000) {
  return;
  }

还有一个是如果用户修改系统的时间,我们应试在清单中注册一下几个广播,得新设置一个闹钟。

"ANDROID.INTENT.ACTION.BOOT_COMPLETED"
"android.intent.action.TIME_SET"
"ANDROID.INTENT.ACTION.TIME_TICK"
"ANDROID.INTENT.ACTION.TIMEZONE_CHANGED"

取消闹钟不起作用

测试貌似取消闹钟不起作用,传入三个参数,第一个是activity(context),第二个是设置的action名(肯定没错,设置闹钟的时候也是这个action名成功了,写到一个静态变量里的),第三个参数就是id号

设置时间倒时不起作用

我想设置明天7点的闹钟,不起作用,比如现在时间是10点,我设置10点5分的就没有问题,不能设置第二天的吗,

关于重复提醒的问题。

如果涉及到每周的周一到周五提醒,那个week应该怎么传值?还是说要设置五个闹钟,周一到周五的,一周为周期

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.