广告
返回顶部
首页 > 资讯 > 移动开发 >Android自定义定时闹钟开发
  • 845
分享到

Android自定义定时闹钟开发

2024-04-02 19:04:59 845人浏览 薄情痞子
摘要

本文实例为大家分享了Android开发之自定义闹钟实现,供大家参考,具体内容如下 闹钟时间设置及显示 闹钟的布局很简单,就是一个简单时间设置,所以自己写一个简单的布局按钮之类的也可以

本文实例为大家分享了Android开发之自定义闹钟实现,供大家参考,具体内容如下

闹钟时间设置及显示

闹钟的布局很简单,就是一个简单时间设置,所以自己写一个简单的布局按钮之类的也可以了,不过多赘述。另外使用时间对话框TimePickerDialog 去设置时间,用Calendar可获取当前系统的时间。AlertDialog.THEME_HOLO_LIGHT是设置dialog的样式,不设置的话就是一个默认的圆形时钟,设置这个之后是一个可滚动上下滑动的时钟样式。代码展示:

//设置时间事件的点击
Calendar c = Calendar.getInstance();
// 创建一个TimePickerDialog实例,并把它显示出来。
new TimePickerDialog(mContext,  AlertDialog.THEME_HOLO_LIGHT,
      // 绑定监听器
      (tp, hourOfDay, minute) -> {
             try {
                if (hourOfDay > 22 || hourOfDay < 5) {
                 Toast.makeText(mContext,"23:00~04:59,要好好睡觉的,这是长身体的黄金时间哦~", Toast.LENGTH_LONG).show();
                 } else {
        //一个补全显示的时间
                  if(hourOfDay < 10 && minute > 10) {
                  String times = "0" + hourOfDay + ":" + minute;
                  tv_play.setText(times);
                  }else if(minute < 10 && hourOfDay < 10) {
                  String times = "0" + hourOfDay + ":" +  "0"+ minute;
                  tv_play.setText(times);
                  } else if(minute < 10) {
                  String times = hourOfDay + ":" +  "0" + minute;
                  tv_play.setText(times);
                    } else {
                  String times = hourOfDay + ":" + minute;
                  tv_play.setText(times);
                    }
                   mDate = tv_play.getText().toString();
                    }
                 } catch (Exception e) {
                  e.printStackTrace();
            }
      }
    //设置初始时间
        , c.get(Calendar.HOUR_OF_DAY)
        , c.get(Calendar.MINUTE)
      //true表示采用24小时制
  , true).show();

默认样式

可滚动样式

设定好的时钟布局显示,在这个主页面上看个人喜欢怎样的布局,可用listview或recycleview实现。在这里我使用的是recycleView+gridlayoutManager显示网格布局,一行两个卡片展示。使用适配器去匹配recycleview会更好,因为这样操作方便且美观。

闹钟增删改查

sqlite是一个安卓自带的轻量级数据库。增删改查都是对数据库的操作行为,另外使用sqlite去存储时钟的数据,就可以防止数据的丢失,因此可以在时钟的基础上做一个计划提醒之类的,可以把计划里的内容存储进数据库里,还有时间。可以在建立数据表的时候自带一个自增的id,方便操作。数据库的建表这些可以去搜索编写,很简单,因此不多赘述。


private void insertData(SQLiteDatabase sqLiteDatabase, String context, String repeat,
                       String date, String count){
    try {
        ContentValues values = new ContentValues();
        values.put("context", context);
        values.put("repeat", repeat);
        values.put("time", date);
        values.put("count", count);
        sqLiteDatabase.insert("data",null, values);//新增功能
    } catch (Exception e) {
        e.printStackTrace();
    }
}


private void updateData(SQLiteDatabase sqLiteDatabase, String context, String repeat,
                       String date, String count){
    try {
        ContentValues values = new ContentValues();
        values.put("context", context);
        values.put("repeat", repeat);
        values.put("time", date);
        values.put("count", count);
      sqLiteDatabase.update("data",values,"id=?",new String[]{String.valueOf(mId)});//修改功能
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void deleteData(SQLiteDatabase sqLiteDatabase, int id) {
    try {
        sqLiteDatabase.delete("data","id=?",new String[]{String.valueOf(id)});
    } catch (Exception e) {
        e.printStackTrace();
    }
}

闹钟开启

在上面的布局里,可以看到有个按键,点击它即可开启闹钟提醒,关闭它即可关闭闹钟提醒。开启闹钟的提示函数如下,将获取的时间去与系统当前时间比较,AlarmManager设置提醒。关闭闹钟就是一个简单的AlarmManager取消行为。那个提醒类就是平时见到的那种简单的dialog提醒,所以不再次赘述。


private void startAlarm(ViewGroup parent, int hour, int minute, int position) {
    try {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());//获取当前时间
        //获取当前毫秒值
        long systemTime = System.currentTimeMillis();
        c.setTimeZone(TimeZone.getTimeZone("GMT+8"));//设置时区
        c.set(Calendar.HOUR_OF_DAY, hour);//设置几点提醒
        c.set(Calendar.MINUTE, minute);//设置几分提醒
        //获取上面设置的时间
        long selectTime = c.getTimeInMillis();
        // 如果当前时间大于设置的时间,那么就从第二天的设定时间开始
        if (systemTime > selectTime) {
            c.add(Calendar.DAY_OF_MONTH, 1);
        }
        
        Intent intent = new Intent(parent.getContext(), ListenerActivity.class);
        @SuppressLint("UnspecifiedImmutableFlag")
        PendingIntent pi = PendingIntent.getActivity(parent.getContext(), 0, intent, 0);
        //得到AlarmManager实例
        AlarmManager am = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
        //重复提醒
        am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 60*60*1000*24, pi);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
   
private void stopRemind(ViewGroup parent) {
    try {
        Intent intent = new Intent(parent.getContext(), ListenerActivity.class);
        @SuppressLint("UnspecifiedImmutableFlag")
        PendingIntent pi = PendingIntent.getActivity(parent.getContext(), 0,
                intent, 0);
        AlarmManager am = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
        //取消提醒
        am.cancel(pi);
        Toast.makeText(parent.getContext(), "关闭了提醒", Toast.LENGTH_SHORT).show();
        Intent intents = new Intent("android.intent.action.BOOKCASE_RESTART");
        @SuppressLint("UnspecifiedImmutableFlag")
        PendingIntent pis = PendingIntent.getBroadcast(parent.getContext(), 0,
                intents, 0);
        AlarmManager ams = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
        //取消提醒
        ams.cancel(pis);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

总结

这是本人最近写的一个自定义闹钟提醒,代码并不是全部代码,但是主要的函数以及内容都以及在上面阐述了。小小的尝试了一下,代码写的也不是特别的好,但是功能效果也是实现了的,在这里记录一下思路还有代码,做一个学习笔记。希望各位大佬们多指教,也希望能给大家带来一些灵感。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android自定义定时闹钟开发

本文链接: https://www.lsjlt.com/news/167320.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android自定义定时闹钟开发
    本文实例为大家分享了Android开发之自定义闹钟实现,供大家参考,具体内容如下 闹钟时间设置及显示 闹钟的布局很简单,就是一个简单时间设置,所以自己写一个简单的布局按钮之类的也可以...
    99+
    2022-11-13
  • Android自定义闹钟功能
    Android闹钟alarmManager+PendingIntent的使用方法,供大家参考,具体内容如下 这次给大家分享两种闹钟: 第一种是当到达闹钟时间后执行一次相应的操...
    99+
    2022-06-06
    闹钟 Android
  • Android自定义View 实现闹钟唤起播放闹钟铃声功能
    先上图看一下闹钟唤期页面的效果 实现的功能: 1:转动的图片根据天气情况更换 2:转动时间可以设置,转动结束,闹铃声音就结束 3:光圈颜色渐变效果 直接上代码啦: pack...
    99+
    2022-06-06
    view 闹钟 Android
  • Android中使用alarmManager+PendingIntent实现自定义闹钟
    今天就跟大家聊聊有关Android中使用alarmManager+PendingIntent实现自定义闹钟,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一种是当到达闹钟时间后执行一...
    99+
    2023-05-31
    android alarmmanager pendingintent
  • win10闹钟自定义铃声如何设置
    这篇“win10闹钟自定义铃声如何设置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10闹钟自定义铃声如何设置”文章吧...
    99+
    2023-07-02
  • Android自定义模拟时钟控件
    本文实例为大家分享了Android自定义模拟时钟控件的具体代码,供大家参考,具体内容如下 自定义view—透明模拟时钟显示 项目中要用到模拟时钟的显示,查了一些资料根据自...
    99+
    2022-11-12
  • android如何自定义简单时钟
    这篇文章主要介绍android如何自定义简单时钟,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!android实现简单时钟的具体代码:attrs定义如下<xml version="1.0&qu...
    99+
    2023-06-06
  • Android Canvas自定义实现时钟效果
    Android之Canvas自定义画一个时钟,供大家参考,具体内容如下 自定义控件,在安卓是也是一种无所不能的技术了,所有自带控件,以及组合自带控件不能实现的一些效果,我们都可...
    99+
    2022-06-06
    canvas Android
  • Android自定义View实现时钟功能
    最近在练习自定义view, 想起之前面试的时候笔试有道题是写出自定义一个时钟的关键代码. 今天就来实现一下. 步骤依然是先分析, 再上代码. 实现效果 View分析 时钟主要分为五...
    99+
    2022-11-13
  • Android自定义View实现时钟效果
    本文实例为大家分享了Android自定义View实现时钟效果的具体代码,供大家参考,具体内容如下 自定义时钟 初学自定义View,先画一个不太成熟的时钟(甚至只有秒针) 时钟效果 ...
    99+
    2022-11-12
  • Android自定义控件实现时钟效果
    在学习安卓群英传自定义控件章节的时候,有一个例子是绘制时钟,在实现了书上的例子后就想看这个时钟能不能动起来。 这里选择延迟一秒发送消息重绘view来实现的动画,对外提供了开启时...
    99+
    2022-06-06
    Android
  • Android如何自定义模拟时钟控件
    本文小编为大家详细介绍“Android如何自定义模拟时钟控件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android如何自定义模拟时钟控件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。自定义view&...
    99+
    2023-06-26
  • Android自定义钟表特效
    最近该忙的都忙完了,自己自定义一直是个弱项,也一直想整个钟表玩玩,网上看了一圈,学习了不少,下面自己做做自定义 首先,制作钟表第一步,肯定是画个圆吧,这是最直接的思维了! 先...
    99+
    2022-06-06
    Android
  • Android开发中怎么自定义时间轴
    今天就跟大家聊聊有关Android开发中怎么自定义时间轴,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体内容如下 时间轴效果,实际上非常简单,就是listView中一个又一个的条目...
    99+
    2023-05-31
    android 时间轴 roi
  • Android开发之自定义CheckBox
    要实现的效果如下 考虑到关键是动画效果,所以直接继承View。不过CheckBox的超类CompoundButton实现了Checkable接口,这一点值得借鉴。 下面记录一...
    99+
    2022-06-06
    checkbox android开发 Android
  • Android开发怎么自定义实时图表控件
    本文小编为大家详细介绍“Android开发怎么自定义实时图表控件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android开发怎么自定义实时图表控件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。演示环境开发工...
    99+
    2023-07-02
  • android自定义toast(widget开发)示例
    1、Toast控件: 通过查看源代码,发现Toast里面实现的原理是通过服务Context.LAYOUT_INFLATER_SERVICE获取一个LayoutInflater布...
    99+
    2022-06-06
    示例 toast Android
  • android自定义view实现钟表效果
    本文实例为大家分享了android view实现钟表的具体代码,供大家参考,具体内容如下 先看效果图: 自定义view大家肯定已经不陌生了,所以直接今天直接步入正题:如何利用...
    99+
    2022-06-06
    view Android
  • Android自定义TitleView标题开发实例
    Android开发过程中,经常遇到一个项目需要重复的定义相同样式的标题栏,Android相继推出了actionBar, toolBar, 相信有用到的朋友也会遇到一些不如意的时...
    99+
    2022-06-06
    Android
  • Android开发中自定义editText下划线
    看了下网上代码: 我想要的效果如下图 下划线和文字有15dp的间距   eeeeee的颜色 上代码, <"1.0" encoding="utf-8">...
    99+
    2023-03-08
    EditText设置下划线 EditText自定义下划线 Android如何自定义EditText下划线
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作