- 浏览: 839661 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
loveseed1989:
您好,我用您的方法运行Cone.java,会给我报java.l ...
vtk学习笔记 --- 编译vtk库和java库 -
60love5:
60love5 写道首先谢谢你的解析,但你这个验证可见性的小程 ...
多线程中共享对象的可见性 -
60love5:
首先谢谢你的解析,但你这个验证可见性的小程序是存在问题的,你的 ...
多线程中共享对象的可见性 -
Gamehu520:
...
java 中的Unsafe -
shanpao1234560:
这个list不是静态的第一种情况下也会有线程安全的问题么,求指 ...
一个看似线程安全的示例
10月份买了HTC Desire,但是总担心耗电问题,android好友碰面聊得最多的估计就是手机耗电怎么样,看看论坛里面的ROM,都写着稳定、省电......
ROM刷了不低于8个了,也没发现特别省电的,也懒得折腾了,为了省电,每天晚上睡觉前开启飞行模式,早上起来再切换回去,但是老这样也很麻烦,索性写了个定时切换飞行模式的小程序。大体功能如下:
1、指定开启飞行模式的时间
2、指定关闭飞行模式的时间
3、可以开启定时切换,也可以关闭定时切换
分析了一下,发现有这样几个难点:
1、当然是开启飞行模式以及如何关闭飞行模式
2、如何在指定的时间开启飞行模式以及关闭飞行模式
3、重复
开启与关闭飞行模式的代码还是比较简单的,它是采用广播的形式:
try { ContentResolver cr = context.getContentResolver(); if( state && System.getString(cr,System.AIRPLANE_MODE_ON).equals("0") ){ System.putString(cr,System.AIRPLANE_MODE_ON, "1"); Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra("state", true); context.sendBroadcast(intent); }else if( !state && System.getString(cr,System.AIRPLANE_MODE_ON).equals("1") ){ System.putString(cr,System.AIRPLANE_MODE_ON, "0"); Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra("state", false); context.sendBroadcast(intent); } } catch (Exception e) { // e.printStackTrace(); Toast.makeText(context, "设置飞行模式状态失败", Toast.LENGTH_SHORT).show(); }
通过设置System.AIRPLANE_MODE_ON值为0或者为1,然后通过intent来发布广播。
第二点,就需要用到闹钟了,闹钟换句话就是一个定时器,只是闹钟的时间到了之后,播放闹钟铃声。在这里我们可以设置两个闹钟,在闹钟的时间到了之后分别开启飞行模式和关闭飞行模式,关于第三点重复也是在闹钟中设置的,关键代码如下:
//设置日历的时间,主要是让日历的年月日和当前同步 calendar.setTimeInMillis(java.lang.System.currentTimeMillis()); //设置日历的小时和分钟 calendar.set(Calendar.HOUR_OF_DAY, sh); calendar.set(Calendar.MINUTE, sm); //将秒和毫秒设置为0 calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); //建立Intent和PendingIntent来调用闹钟管理器 Intent startIntent = new Intent(ALARM_ACTION_START); startIntent.putExtra("startState", 1); PendingIntent startPendingIntent = PendingIntent.getBroadcast(TimerAirPlaneMode.this, 0, startIntent, 0); //获取闹钟管理器 AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); //设置开始时间对应的闹钟 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, startPendingIntent);
上面的代码就是设置闹钟的,最后一行代码就是设置重复闹钟的。
这里还有一个问题是需要解决的,那就是如何同时设置多个闹钟,这个花了我一点时间,最后发现是通过PendingIntent.getBroadcast(TimerAirPlaneMode.this, 1, endIntent, 0);的第二个参数来定义一个新的闹钟。
然后就是关闭闹钟了:
Intent intent = new Intent(ALARM_ACTION_START); PendingIntent pendingIntent = PendingIntent.getBroadcast(TimerAirPlaneMode.this, 0, intent, 0); //获取闹钟管理器 AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); //取消开始和结束闹钟 alarmManager.cancel(pendingIntent);
关闭闹钟首先要得到生成闹钟的PendingIntent,这个时候需要注意多个闹钟需要独立取消。
到这里关键代码基本上没有了,剩下的就是数据存储问题了,如何在下次启动程序的时候,自动读取上一次的数据,避免重复设置,这里需要用到SharedPreferences,用它来存储数据以及读取数据。
Log.d(TAG, "set the time:"+h+":"+m); SharedPreferences preferences = getSharedPreferences("TimerAirPlaneMode", 0); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("flag", flag?1:0); if( flag ){ editor.putInt("startHour", h); editor.putInt("startMinute", m); } else { editor.putInt("endHour", h); editor.putInt("endMinute", m); } editor.commit();//这步很关键
SharedPreferences preferences = getSharedPreferences("TimerAirPlaneMode",MODE_PRIVATE); int sh = preferences.getInt("startHour", -1); int sm = preferences.getInt("startMinute", -1);
这里要注意,最后的提交commit很关键,要不然数据是不会写入到文件中去的,上面的第二部分代码是从SharedPreferences中读取数据。
下面是程序的运行效果:
评论
我的邮箱13973061177@139.com
谢谢
很早以前写的了!
你直接下载这个zip文件,解压之后,里面包含源代码以及apk安装包。
其中apk安装包在bin目录里面。
你也可以把源代码导入eclipse,自己加以修改或者美化。
我的邮箱13973061177@139.com
谢谢
招着你的代码抄了一份。。。哈哈,谢谢了。
发表评论
-
Android 内存泄露笔记
2013-03-05 23:10 01、大部分内存泄露都是错误的持有了Activity或者Con ... -
生活小工具--记账小助手1.0发布
2012-05-31 15:08 1658因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1390前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
Android软件包静默安装小应用 - 附源码
2012-04-21 20:50 12358老早之前,写了一个android软件包静默安装的应用,放在工 ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 3966软件介绍: 联通话费速查是一款针对联通 ... -
android开发之定制标题栏 --- 附源码
2012-04-11 21:53 12104在开发上个应用 话费 ... -
快捷查话费,套餐的Android小应用--移动话费速查,新增联通版话费速查
2012-04-11 17:31 4975前几天写了一个 一键查话费移动版 的小应用,这几天发现下载的 ... -
Android 小应用--一键查话费移动版(附源码)
2012-04-09 09:57 6159考虑到经常打电话查询话费使用情况,觉得甚是麻烦,于是就想开发 ... -
android 4.0 ROM编译简记
2012-03-11 17:27 2409Android4.0源代码已经放出很长一段时间了,一直 ... -
一个Android Service小例子
2012-02-27 00:34 96081写过一些android程序,但是android中的Servi ... -
一个使用DownloadManager下载文件的小例子
2012-02-26 19:42 45180最近自己在写个小项目,需要从服务器下载文件,之前也写过下载文 ... -
在android jni中使用log
2011-09-14 17:48 7799开发环境: ubuntu 10.10 + eclipse + ... -
将dhcpdump移植到android平台
2011-09-08 18:09 2340首先,介绍下dhcpdump这个工具,通过名字就可以看出它应该 ... -
android自定义Spinner的下拉样式(setDropDownViewResource)
2011-06-28 15:01 16005需求: 在spinner中显示的数据过多,需要换行,而An ... -
android view画图笔记-1
2011-09-03 11:02 27191、一个简单的示例 public class View ... -
cyanogenmod 内核编译简记
2011-06-20 09:39 12029参考内容:http://wiki.cyan ... -
CyanogenMod rom编译尝试(简记)
2011-06-14 23:24 10656编译参考:http://wiki.cyan ... -
android Preference之android:dependency
2011-06-09 10:24 13329在开发软件设置界面的 ... -
android 界面自适应屏幕尺寸相关
2011-06-03 12:52 32851、获取屏幕尺寸: Display displa ... -
查看android系统设备信息
2011-06-02 19:34 4633查看android系统信息(lspci命令在android下无 ...
相关推荐
手机定时飞行模式,没有广告,方便,省电。
Android AirPlus飞行模式自动切换工具,可以根据设定的时间自动进入和退出飞行模式,在无需关机的情况下让手机更加省电,减少睡眠时间手机的辐射作用。 Android飞行模式自动切换工具实现的功能如下: 1.快速进入...
802.11传统省电模式与802.11e-U-APSD省电模式对比.docx
Android7.0 省电模式分析总结
1. 主循环中,当sec达到15s时,设定15s后闹钟,然后进入待机模式Sys_Enter_Standby; 2. RTC中断定时中,清中断。...通过RTC设置系统进入待机模式,并定时唤醒,是一个非常省电而且非常可靠的方法。
802.11传统省电模式与802.11e-U-APSD省电模式对比.pdf
单片机各种省电模式及其中断唤醒,有需要的同学下
一个简单的工具,可自动启用省电模式或飞行模式,因此您只需要四步。 该应用程序希望轻松舒适地完成此功能。 第 0 步:启用此应用程序; 第一步:设置你的正常睡眠的开始和结束时间; 第二步:选择您需要的工作...
STM32-LoRa 模式2 省电模式 只能接收不能发送(可被模式1的LORA节点唤醒接收数据)
我们针对卷染机,利用施耐德电气ATV71和M238产品的张力控制功能通过CANopen总线,组成一个精准高效的控制系统,大幅降低卷染机的用电,节能27%;同时,该系统还降低了设备故障率,节省日常维护成本10%。在倍捻机控制...
DP83848-单路10100_Mbs以太网收发器在省电模式下的初始化
参考资料-一种rfid手持读写设备省电模式的实现.zip
智能用电微信小程序.rar
电子政务-具省电模式的电子装置及控制其进入省电模式的方法.zip
VK0256C LQFP52是一个点阵式存储映射的LCD驱动器,可支持最大256点(32EGx8COM)的LCD屏。单片机可通过3/4线串行接口配置显示参数和发送显示数据,也可通过指令进入省电模式。 特点 • 工作电压 2.4-5.2V • 内置32 ...
行业分类-设备装置-具有省电模式的多媒体广告播放装置.zip
VK1056B/C 是 56 点、 内存映象和多功能的 LCD 驱动, VK1056B 的软件配置特性使它适用于多种 LCD 应用场合,包括 LCD 模块和显示系统,用于连接主控制器和 VK1056B 的管脚只有 4 条, VK1056B 还有一个节电命令用于...
描述: 打算使用定时器实现一个定时拍照的程序,现在程序中还有许多的小bug,这份程序 包还会继续更新!现在只是基本上能够实现功能性的东西,操作和程序的美观还谈 不上,现在把程序打包在这里,只是为了分享...
行业资料-交通装置-一种带夜间省电模式的汽车仪表.zip