码迷,mamicode.com
首页 > 移动开发 > 详细

android,闹钟定时功能,实现过程

时间:2016-04-29 16:17:12      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

由于最近参加一个比赛写的智能排插助手需要用到定时触发功能,于是做了一个类似闹钟功能,存储闹钟信息用的时android自带的数据库

源码地址https://github.com/waterCode/SaveEner.git
项目名为saveenergy
考虑到一些人没有用git,因为代码还有完善和修改的地方,等我代码全部写完后之后我会在csdn文件存储上传代码,不过学github还是有很多好处,备份代码就时一大好处,再也不用压缩文件传到云盘啦,哈哈

项目里面的model名为saveenergy的就是我这个项目的源代码

大家一起进步哦,坚持,努力,终有一天我们都可以成为他人口中的大神
有什么问题可以下方留言,我会定时看博客滴
(一)闹钟信息显示部分,一共3部分噢(⊙o⊙)

先上图片技术分享,这里主要用了LinearLayout布局,里面有一个listView和imageButton,先说个人觉得要注意的的几点
1.imageButton自带的时灰色背景,textColor要设成透明.
2.这我用的时绿色背景,listView所用的item布局,textView字体白色的,为了方便调试,用tools:textColor=”@color/black”,会方便调试
3.在没有添加闹钟是listview是有上下分割线的,用的是LinearLayout分割线属性
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:divider="@drawable/my_divider"
android:showDividers="beginning|end">

至于listView和item的布局具体代码在我的github里面下来看看

在Activity方面我们需要做的事有
1.初始化布局,拿到各个View的实例,
2.拿到数据库的指针,设置listView的adapter,这里用的是simpleCursorAdapter,关于simplecursorAdapter构造函数最后一个参数Flag需要注意下,这个页面最终的就是simplecursorAdapter设置,因为这个主要是和数据类交互的类,如果你想锻炼下自己可以用BaseAdapter,自己封装类,看你喜好
3为listView和Button设置监听,这里刷新listView用的时

cursorAdapter .notifyDataSetChanged();
    (二)接下来当然时闹钟编辑页面啦,加油继续往下看

小二上大图。。技术分享
布局部分:
这里上面时用简单的textView和ImageButton,接着时timepicker,接着是一个ListView,小小的剧透下,listView用的时simpleAdapter,点击后会神奇的出现一个开关选择的dialog,和打开和关闭的dialog,哇哈哈这里用的Alertdialog
这里需要注意的有
1.timepicker,可能时android系统原因,timepicker默认技术分享
但程序在我的华为p7里面却是上图那样,布局反差很大,一开始让我这菜鸟措手不及,问了学安卓的“同志”们也没人知道,最后在神奇的stayoverflow找到答案,下面这句话可以让他变回面条状,哈哈

android:timePickerMode="spinner"

代码部分:
1.初始化各个组件,获取实例
2.为listView设置数据,用的时simpleAdapter
3,设置各个监听,并将
4.结束时把信息存入数据库,并且系统中设置闹钟

这里要注意的时PendingIntent第二个参数,为了能个设置多个参数,所以我用的时存闹钟信息在数据库的id

int id=dbOperator.getAlarmId(time);//获得新添加时钟在数据库的id
        Intent intent=new Intent(this, AlarmReciever.class);
        intent.putExtra("_id",id);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,id,intent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP,alarm.getAlarmTime().getTimeInMillis(),pendingIntent);
(三)就是删除闹钟部分,最后一部分,坚持看下去

上图技术分享
这里时由闹钟长按进入,就一个listView,用的还是SimpleCursorAdapter,这里要注意的时重写bindView,因为点击删除按钮的时候要能够监听的到代码

 @Override
        public void bindView(View view, final Context context, final Cursor cursor) {
            super.bindView(view, context, cursor);
            final int id = cursor.getInt(0);
            ImageButton imageButton = (ImageButton)view.findViewById(R.id.alarm_delete_button);
            imageButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    DatabaseOperator operator = new DatabaseOperator(context);
                    operator.delete(id);
                    cursor.requery();
                    adapter.notifyDataSetChanged();

                }
            });

        }

还有数据库那一部分我没讲,这里就省略啦,可以看我的代码
基本上要注意的就是这样了,我只贴出我认为关键的代码部分,和我当时遇到的一些坑我都会以注意的形式说出来,至于源代码在我文章开头提供github地址里面下载下来看看,因为这是这个定时部分我项目的一部分,为防止朋友下载下来不知道在我项目里的哪部分,这里给出设计的代码文件的图片,方便朋友们查找
技术分享
技术分享
有关数据哭的类
技术分享
技术分享

android,闹钟定时功能,实现过程

标签:

原文地址:http://blog.csdn.net/sinat_28676875/article/details/51264467

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!