精华内容
下载资源
问答
  • 本设计是简单定时闹钟系统,不仅能实现系统要求的功能:(1)能显示时时-分分,(2)能设定和修改定时时间,(3)定时时间到后能发出报警声;而且还有附加功能,即还能设定和修改当前所显示的时间。 本设计采用单片机AT89S...
  • 漂亮的定时闹钟漂亮的定时闹钟漂亮的定时闹钟
  • 定时功能,绿点定时闹钟类似于闹钟的功能.简单易用.
  • 易语言定时闹钟源码

    2020-07-22 14:22:43
    易语言定时闹钟源码,定时闹钟
  • 春晓定时闹 可以设定多个时间,有闹铃音乐 ,支持MP3格式。而且占用小。
  • VB 定时闹钟

    2010-06-07 13:13:41
    VB 定时闹钟 VB 定时闹钟 VB 定时闹钟
  • 定时闹铃+源码

    2014-08-23 11:14:54
    定时闹铃+源码
  • 安卓 定时闹钟

    2015-02-01 15:37:06
    使用AlarmManager实现安卓定时闹钟,包括反复定时,延时提醒以及各种定时事务
  • 易语言定时闹钟源码.rar 易语言定时闹钟源码.rar 易语言定时闹钟源码.rar 易语言定时闹钟源码.rar 易语言定时闹钟源码.rar 易语言定时闹钟源码.rar
  • 定时闹钟

    2015-03-20 22:15:47
    定时闹钟目标: - 设定一个定时闹钟,比如2015-03-19 14:25.时间到了的时候,启动自定义的某个Activity。 - Activity启动后能够得到之前设定闹钟的信息,例如TODO_ID.然后根据ID得到闹钟对于的信息。并展示信息。 ...

    定时闹钟

    目标:
    - 设定一个定时闹钟,比如2015-03-19 14:25.时间到了的时候,启动自定义的某个Activity。
    - Activity启动后能够得到之前设定闹钟的信息,例如TODO_ID.然后根据ID得到闹钟对于的信息。并展示信息。
    - 可以删除改闹钟

    注意事项:

    1. receiver的onReceive()执行结束之后,系统会不会继续进入睡眠?如何解决?
    2. 自定义的闹钟关机后是否还在,如何保证?

    自定义闹钟的设定主要是用到AlarmManager,AlarmManager可以使用系统的闹钟服务。其主要原理是,通过设定一个PendingIntent 给AlarmManager 。AlarmManager 会在预设时间到达后,发送这个PendingIntent。而这个PendingIntent是注册了一个BroadcastReceiver。BroadcastReceiver接收Intent并处理。

    因为根据AlarmManager的文档可以知道:
    AlarmManager会在BroadcastReceiver的onReceive() 方法执行的时候持有唤醒锁,保持设备不进入睡眠。但是一旦onReceive() 方法返回,唤醒锁会被释放,因此可能进入睡眠。所以如果你的BroadcastReceiver调用Context.startService()启动某个服务来进行操作。可能会在服务还没起来设备就睡眠了。所以你的BroadcastReceiver和Service需要实现特定的唤醒锁机制来避免这种问题。
    所以有了前面的注意事项1.

    闹钟的基本实现过程。

    1,获得AlarmManager对象—– Context.getSystemService(Context.ALARM_SERVICE)
    2,创建BroadcastReceiver,并在onReceive中做对应处理。—-注意在manifest中声明
    3,根据BroadcastReceiver创建一个启动该BroadcastReceiver的Intent。
    4,通过PendingIntent.getBroadcast创建一个发送该Intent的PendingIntent。
    5,AlarmManager的set方法设定什么时候触发该PendingIntent。—计算触发时间可以借助Calendar 类

    取消闹钟

    1,创建一个一样的Intent。和对应的PendingIntent。(一样的标准是action, data, type, class, categories都一样 )
    2,通过AlarmManager 的cancel(PendingIntent operation) 方法取消该闹钟。

    注意:
    action, data, type, class, categories都一样的Intent。所设的闹钟后一个会吧前一个替代,所以如果设定两个闹钟,并且需要两个闹钟都生效,就需要两个Intent不同。(Intent.filterEquals(android.content.Intent))来判断)

    下面写一个简单的例子,并不一定实现了上面所说的功能,只是简单的讲解AlarmManager的使用。

    manifest

    <receiver android:name="com.example.alarm.ShowAlarm"></receiver>

    布局

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button1"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/timePicker1"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="22dp"
            android:text="SetAlarm" />
    
        <TimePicker
            android:id="@+id/timePicker1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="20dp"
            android:layout_marginTop="113dp" />
    
        <Button
            android:id="@+id/button2"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/button1"
            android:layout_toRightOf="@+id/button1"
            android:text="CancelAlarm" />
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/timePicker1"
            android:layout_below="@+id/timePicker1"
            android:layout_marginTop="25dp"
            android:ems="10"
            android:hint="Enter Comments" >
    
            <requestFocus />
        </EditText>
    
    </RelativeLayout>

    BroadcastReceiver

    package com.example.alarm;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    import android.widget.Toast;
    
    //接收AlarmManager的Intent
    public class ShowAlarm extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String comments=intent.getType();
            Toast toast=Toast.makeText(context, comments, Toast.LENGTH_LONG);
            toast.show();
            Log.e("whatever", "I am waked");
        }
    
    }
    

    MainActivity

    package com.example.alarm;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TimePicker;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        Button setAlarm, cancelAlarm;
        TimePicker timePicker;
        EditText editText;
        AlarmManager am;
        Calendar calendar;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            timePicker = (TimePicker) findViewById(R.id.timePicker1);
            timePicker.setIs24HourView(true);
            setAlarm = (Button) findViewById(R.id.button1);
            cancelAlarm = (Button) findViewById(R.id.button2);
            editText=(EditText) findViewById(R.id.editText1);
    
            am = (AlarmManager)getSystemService(ALARM_SERVICE);
    
            setAlarm.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    int hour = timePicker.getCurrentHour();
                    int min = timePicker.getCurrentMinute();
                    // 时间转换为Calendar实例
                    calendar = Calendar.getInstance();
                    // 设定当前时间
                    calendar.setTimeInMillis(System.currentTimeMillis());
                    // 如果闹铃时间在当前时间前,设为后一天闹铃,否则设为今天闹铃
                    if (calendar.get(Calendar.HOUR_OF_DAY) > hour
                            || calendar.get(Calendar.HOUR_OF_DAY) == hour
                            && calendar.get(Calendar.MINUTE) > min) {
                        calendar.add(Calendar.DAY_OF_YEAR, 1);
                        calendar.set(calendar.get(Calendar.YEAR),
                                calendar.get(Calendar.MONTH),
                                calendar.get(Calendar.DAY_OF_MONTH), hour, min);
                    } else {
                        calendar.set(calendar.get(Calendar.YEAR),
                                calendar.get(Calendar.MONTH),
                                calendar.get(Calendar.DAY_OF_MONTH), hour, min);
                    }
                    setAlarm(calendar,editText.getText().toString());
                }
            });
            cancelAlarm.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    cancelAlarm(editText.getText().toString());
    
                }
            });
        }
    
        private void setAlarm(Calendar time, String comments) {
    
            Intent intent=new Intent(this,ShowAlarm.class);
            if(comments!=null)  intent.setType(comments);
    
            PendingIntent sender=PendingIntent.getBroadcast(this, 0, intent, 0);
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
    
            SimpleDateFormat alarmTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String TimeString = alarmTime.format(calendar.getTime());
            Toast toast=Toast.makeText(this,TimeString , Toast.LENGTH_LONG);
            toast.show();
        }
    
        private void cancelAlarm(String comments) {
            Intent intent=new Intent(MainActivity.this,ShowAlarm.class);
            if(comments!=null)  intent.setType(comments);
    
            PendingIntent sender=PendingIntent.getBroadcast(this, 0, intent, 0);
            am.cancel(sender);
        }
    
    }
    

    需要改进如下:
    1,想设定多个闹钟,可以定义独特的action, data或type来区分Intent。在extra里也可以添加信息,不过extra不能算作Intent的识别特征。
    2,想要取消闹钟,就应该从持久化的存储里拿到之前设定的闹钟的Intent参数,然后再取消掉。
    3,如果想重启后闹钟依旧存在,则需要增加一个接受android.intent.action.BOOT_COMPLETED动作的receiver。启动后从持久层读取之前存在的闹铃,如果没有过期则重新注册这些闹钟。

    效果:
    这里写图片描述

    AlarmManager函数及属性说明

    展开全文
  • 定时闹钟与定时任务

    2019-05-09 19:32:57
    2. 定时闹钟实现 3. 可通过os模块拓展其他定时任务 开发环境: windows, pycharm, tkinter, threading, datetime, time, ctypes 涉及知识点: 1. GUI界面tkinter模块的使用 2. 函数定义与使用 3. 基本语法结构的使用 4...

    功能描述:

    1. 当前时间展示
    2. 定时闹钟实现
    3. 可通过os模块拓展其他定时任务

    开发环境:

    • windows, pycharm, tkinter, threading, datetime, time, ctypes

    涉及知识点:

    1. GUI界面tkinter模块的使用
    2. 函数定义与使用
    3. 基本语法结构的使用
    4. 字符串,列表,元组的使用
    5. 多线程使用
    6. 时间模块的使用
    7. 类型转换
    • 学习交流,老鸟指导,直播学习可以进我的python学习交流群 1093619026
      代码实现
    import os
    import tkinter
    import time
    from threading import Thread
    from datetime import datetime
    import tkinter.messagebox as ms
    
    import ctypes
    player = ctypes.windll.kernel32
    
    root = tkinter.Tk()
    root.title("我的时钟")
    root.minsize(width=300, height=400)
    
    now_time_hour = datetime.now().hour
    now_time_min = datetime.now().minute
    now_time_sec = datetime.now().second
    
    hour = tkinter.StringVar(value=now_time_hour)
    minute = tkinter.StringVar(value=now_time_min)
    second = tkinter.StringVar(value=now_time_sec)
    clock_hour = 0
    clock_minute = 0
    clock_second = 0
    clock_flag = False
    
    def clock_set():
        global clock_hour, clock_minute, clock_second
        clock_hour = int(hour_entry.get())
        clock_minute = int(minute_entry.get())
        clock_second = int(second_entry.get())
        ms.showwarning("重置闹钟", "闹钟已重置!\n")
    
    
    def start_set():
        global clock_flag
        clock_flag = not clock_flag
        if clock_flag:
            ms.showwarning("闹钟开启", "闹钟成功开启!\n{}时{}分{}秒响铃".format(clock_hour, clock_minute, clock_second))
    
    
    def timer():
        while True:
            second_num = int(second.get())
            minute_num = int(minute.get())
            hour_num = int(hour.get())
    
            if clock_flag:
                confirm_bt["text"] = "ON"
            else:
                confirm_bt["text"] = "OFF"
    
            if clock_flag and (hour_num, minute_num, second_num) == (clock_hour, clock_minute, clock_second):
                for i in range(3):
                    player.Beep(2000, 1000)
                # 这里可以添加其他定时任务,关机,启动桌面应用....
                print("叮 叮 叮 . . .")
                os.system("shutdown -s -t 600")
    
            second_num += 1
            if second_num == 60:
                second_num = 0
                minute_num += 1
                if minute_num == 60:
                    minute_num = 0
                    hour_num += 1
                    if hour_num == 24:
                        hour_num = 0
    
            hour.set("%02d" % hour_num)
            minute.set("%02d" % minute_num)
            second.set("%02d" % second_num)
            time.sleep(1)
    
    if __name__ == '__main__':
        current_time_lab = tkinter.Label(root, width=10, height=1, text="现在时间:", font=3)
        current_time_lab.place(x=10, y=5)
    
        hour_lab = tkinter.Label(root, width=3, height=1, textvariable=hour, bg="#D6EAF8", font=1)
        minute_lab = tkinter.Label(root, width=3, height=1, textvariable=minute, bg="#D6EAF8", font=1)
        second_lab = tkinter.Label(root, width=3, height=1, textvariable=second, bg="#D6EAF8", font=1)
        sep_lab1 = tkinter.Label(root, width=1, height=1, text=":", font=1)
        sep_lab2 = tkinter.Label(root, width=1, height=1, text=":", font=1)
        hour_lab.place(x=40, y=40)
        sep_lab1.place(x=75, y=40)
        minute_lab.place(x=90, y=40)
        sep_lab2.place(x=125, y=40)
        second_lab.place(x=140, y=40)
    
        clock_set_lab = tkinter.Label(root, width=10, height=1, text="闹钟设置:", font=3)
        clock_set_lab.place(x=10, y=80)
    
        hour_entry = tkinter.Entry(root, width=3, bg="#00CC00", justify="center", font=1)
        minute_entry = tkinter.Entry(root, width=3, bg="#00CC00", justify="center", font=1)
        second_entry = tkinter.Entry(root, width=3, bg="#00CC00", justify="center", font=1)
        sep_lab3 = tkinter.Label(root, width=1, height=1, text=":", font=1)
        sep_lab14 = tkinter.Label(root, width=1, height=1, text=":", font=1)
        hour_entry.place(x=40, y=120)
        sep_lab3.place(x=75, y=120)
        minute_entry.place(x=90, y=120)
        sep_lab14.place(x=125, y=120)
        second_entry.place(x=140, y=120)
        hour_entry.insert("end", "00")
        minute_entry.insert("end", "00")
        second_entry.insert("end", "00")
    
        set_bt = tkinter.Button(root, text="重置闹钟", width=10, height=1, bg="#F5CBA7", command=clock_set)
        confirm_bt = tkinter.Button(root, text="OFF", width=10, height=1, bg="#D35400", command=start_set)
        set_bt.place(x=35, y=160)
        confirm_bt.place(x=135, y=160)
    
        clock_t = Thread(target=timer)
        clock_t.start()
    
        root.mainloop()
    
    展开全文
  • 电脑定时闹钟

    2013-08-05 09:50:24
    一个可以在电脑上定时闹钟的软件,可以自定义MP3文件做为铃声。方便快捷
  • 定时闹钟

    2012-06-04 18:45:19
    定时闹钟,可自己设定时间,到了该时间后,回报告通知
  • 定时闹钟原理图

    2015-04-07 20:49:24
    定时闹钟proteus仿真图,需要的可以看一下
  • HappyWork_定时闹钟.exe

    2020-04-06 16:54:19
    HappyWork_定时闹钟
  • 小巧的电脑定时闹钟

    2014-03-09 13:06:23
    小巧的电脑定时闹钟 定时提醒起床 睡觉 吃饭
  • 日历源码 定时闹钟

    2016-06-02 12:00:09
    日历源码 定时闹钟
  • 刷怪用的定时闹钟.rar

    2021-04-14 17:57:59
    刷怪用的定时闹钟
  • 定时闹钟单次闹钟重复闹钟2.定时情景模式切换 1.定时闹钟 单次闹钟 单次闹钟只要响音button,设置sender跳转至OnShotAlarm广播,通过alarmmanager.set设置单次单次闹钟,响应sender。 private View....

    1.定时闹钟

    单次闹钟

    单次闹钟只要响音button,设置sender跳转至OnShotAlarm广播,通过alarmmanager.set设置单次单次闹钟,响应sender。

    private View.OnClickListener mOneShortLisener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                start_Music = 0;
                Intent intent = new Intent(main.this, OneShotAlarm.class);
                PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);
                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis());
                calendar.add(Calendar.SECOND, 5);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
            }
        };
    

    重复闹钟

    设置重复闹钟的操作和单次闹钟差别不大,只是要设置重复的间隔,再利用alarmmanager.setRepeating响音重复的广播跳转。

     private View.OnClickListener mStartReaptingLisener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                start_Music=0;
                Intent intent = new Intent(main.this, RepeatingAlarm.class);
                PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);
                long firstTime = SystemClock.elapsedRealtime();
                firstTime += 1000;
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 1000, sender);
            }
        };
    

    取消重复闹钟,只要利用alarmmanager.cancel即可。

    private View.OnClickListener mStopReaptingLisener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(main.this, RepeatingAlarm.class);
                PendingIntent sender = PendingIntent.getBroadcast(main.this, 0, intent, 0);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.cancel(sender);
            }
        };
    

    2.定时情景模式切换

    (作为一只Android小白,我感觉我的做法好水)

    用EditText获取用户所要循环的周期(没有用TimePicker,感觉很不人性话,以后会改进的),然后用RadioGroup设置单选,最后在主活动中获取,定时还是借助强大的AlarmManager,然后作为小白的我竟然忽略了一个严重的问题,BroadcastReceiver类不是View类,不能直接对RadioGroup操作于是。。。。:

    在主活动中获取RadioGroup,然后通过Intent传值处理。

    //读取RadioGroup
    RadioGroup radioGroup = findViewById(R.id.radiogroup);
                if(Contrasl_Visal==0)
                ((RadioButton)radioGroup.getChildAt(0)).setChecked(true);
                Contrasl_Visal=+1;
                int changeId = 0;
                int m=0;
                for(int i=0;i<radioGroup.getChildCount();i++)
                {
                    RadioButton radioButton= (RadioButton) radioGroup.getChildAt(i);
                    if(radioButton.isChecked())
                    {
                        changeId=m;
                        break;
                    }
                    m=m+1;
                }
                Intent intent= new Intent(main.this,AlarmReceiver.class);
                intent.putExtra("changId",changeId);
    
    //通过传值分析用户所选的情景模式,然后直接用AudioManager改变情景模式。
     public void onReceive(Context context, Intent intent) {
            int changeId=0;
            Intent intent1= new Intent();
            intent1.putExtra("changId",changeId);
            switch (changeId)
            {
                case RINGER_MODE_NORMAL1:
                {
                    AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                    audioManager.setStreamVolume(AudioManager.RINGER_MODE_NORMAL,50,0);
                }break;
                case RINGER_MODE_VIBRATE1:
                {
                    AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                    audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                }break;
                case RINGER_MODE_SILENT1:
                {
                    AudioManager audioManager= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                    audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                }break;
            }
        }
    

    注意: 在这中间遇到了很多空指针问题。
    RadioGroup radioGroup = findViewById(R.id.radiogroup);
    最后发现是我把他写在了最前面,在RadioGroup没有输入的时候就给读取了,当然是空的了,只得给他初始化,默认第一个RadioButton选中。((RadioButton)radioGroup.getChildAt(0)).setChecked(true);

    虽然是一个非常简单的项目,然而没有熟练运用debug的我还是费了点功夫,从中更是学到了许多学习基本知识无法得到的经验,明白了做项目才能锻炼出能力,我会多加练习。小白进阶中。。。

    展开全文
  • 52单片机制作万年历LCD1602显示,定时闹钟,定时数据写入EERPOM,掉电保存数据
  • 51单片机定时闹钟

    2015-10-25 09:26:26
    51开发板 定时闹钟程序 keil4编写 支持市面上大部分51开发板儿 注释详细
  • 易语言定时闹钟源码
  • 单片机--定时闹钟

    2014-07-06 13:20:49
    主要完成了一个简单地定时闹钟设计,主要功能包括: 键盘或串口设置时钟和闹钟时间,可以再时钟、闹钟即秒之间切换, 并提供手动开启和关闭闹钟功能。
  • 基于-单片机定时闹铃设计.doc
  • 单片机在定时闹铃中应用.doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,627
精华内容 3,850
关键字:

下载定时闹钟