- 浏览: 850781 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
-
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 1782因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1466前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
Android软件包静默安装小应用 - 附源码
2012-04-21 20:50 12481老早之前,写了一个android软件包静默安装的应用,放在工 ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 4065软件介绍: 联通话费速查是一款针对联通 ... -
android开发之定制标题栏 --- 附源码
2012-04-11 21:53 12206在开发上个应用 话费 ... -
快捷查话费,套餐的Android小应用--移动话费速查,新增联通版话费速查
2012-04-11 17:31 5130前几天写了一个 一键查话费移动版 的小应用,这几天发现下载的 ... -
Android 小应用--一键查话费移动版(附源码)
2012-04-09 09:57 6236考虑到经常打电话查询话费使用情况,觉得甚是麻烦,于是就想开发 ... -
android 4.0 ROM编译简记
2012-03-11 17:27 2454Android4.0源代码已经放出很长一段时间了,一直 ... -
一个Android Service小例子
2012-02-27 00:34 96202写过一些android程序,但是android中的Servi ... -
一个使用DownloadManager下载文件的小例子
2012-02-26 19:42 45237最近自己在写个小项目,需要从服务器下载文件,之前也写过下载文 ... -
在android jni中使用log
2011-09-14 17:48 7907开发环境: ubuntu 10.10 + eclipse + ... -
将dhcpdump移植到android平台
2011-09-08 18:09 2392首先,介绍下dhcpdump这个工具,通过名字就可以看出它应该 ... -
android自定义Spinner的下拉样式(setDropDownViewResource)
2011-06-28 15:01 16084需求: 在spinner中显示的数据过多,需要换行,而An ... -
android view画图笔记-1
2011-09-03 11:02 27531、一个简单的示例 public class View ... -
cyanogenmod 内核编译简记
2011-06-20 09:39 12071参考内容:http://wiki.cyan ... -
CyanogenMod rom编译尝试(简记)
2011-06-14 23:24 10776编译参考:http://wiki.cyan ... -
android Preference之android:dependency
2011-06-09 10:24 13393在开发软件设置界面的 ... -
android 界面自适应屏幕尺寸相关
2011-06-03 12:52 33211、获取屏幕尺寸: Display displa ... -
查看android系统设备信息
2011-06-02 19:34 4708查看android系统信息(lspci命令在android下无 ...
相关推荐
手机定时飞行模式,没有广告,方便,省电。
802.11e-U-APSD省电模式是802.11e协议中的一种省电机制,该机制允许STA和AP协调一个省电流程,以减少能耗。U-APSD模式下,STA可以在 Awake状态和Sleep状态之间切换,并且可以通过QoS Info Field标记来请求AP缓存的帧...
SMPS 静态 PS 模式下,802.11n 客户端只有一根天线处于工作状态,通过一个 802.11n 帧告知 AP 自己处于哪种模式下,也可切换省电模式。动态 PS 模式下,AP 向客户端发送 RTS 帧唤醒 Station 的所有天线,Station ...
Android AirPlus飞行模式自动切换工具,可以根据设定的时间自动进入和退出飞行模式,在无需关机的情况下让手机更加省电,减少睡眠时间手机的辐射作用。 Android飞行模式自动切换工具实现的功能如下: 1.快速进入...
### DP83848-单路10/100_Mbs以太网收发器在省电模式下的初始化 #### 概述 本文档主要介绍了DP83848这款10/100Mbps单路以太网收发器在省电模式下的初始化流程及相关设置。DP83848是一款高性能、低功耗的以太网物理...
为了解决这个问题,作者开发了一个小程序,通过降低CPU运行速度(例如到1GHz),可以在保证下载速度(30mb/s)的同时,降低电脑的整体功耗,进而减小风扇噪音。下载完成后,用户只需右键选择“性能模式”,就能让...
为解决这个问题,省电软件有一个机制,可以在进入省电模式前保存并恢复外设配置和应用上下文,使得从低功耗模式唤醒时,CPU能够无缝地继续执行省电函数调用后的指令,对应用程序来说是透明的。 省电软件定义了三种...
3. **AirPlus模块**:AirPlus可能是一个定制的飞行模式增强服务,可能包含额外的功能,如智能管理无线连接、省电优化等。要理解AirPlus,我们需要查看对应的Java代码和服务定义,以及与系统其他部分的交互。 4. **...
"Cube"可能是一个开发框架或者工具,用于构建微信小程序。这个框架可能包含了丰富的组件库和API接口,帮助开发者快速搭建界面并实现与服务器的数据交互。 1. **微信小程序开发**:微信小程序是一种轻量级的应用形态...
1. 主循环中,当sec达到15s时,设定15s后闹钟,然后进入待机模式Sys_Enter_Standby; 2. RTC中断定时中,清中断。...通过RTC设置系统进入待机模式,并定时唤醒,是一个非常省电而且非常可靠的方法。
Android7.0 省电模式分析总结
当一个模式1的节点向它发送特定的唤醒信号时,模式2的节点会被激活,从而进入接收数据的状态。 关于标签,"STM32"指微控制器平台,"LORA"是远距离无线通信技术,"低功耗"和"省点模式"强调了设计目标,"唤醒节点"则...
"电子政务-具省电模式的电子装置及控制其进入省电模式的方法"这个主题聚焦于如何通过技术创新来优化电子设备的能源消耗,以实现更高效、环保的运行模式。 电子装置的省电模式是一种设计策略,旨在减少设备在非工作...
总结,Android省电模式的自编译实现是一个涉及电源管理、应用控制和用户习惯分析的综合工程。通过智能省电和超级省电模式,以及锁屏清理应用,可以有效地延长设备的电池寿命,提供更好的用户体验。在实践中,开发者...
省电模式是VK1056B/C的一个重要特性,通过执行特定的命令,芯片可以进入低功耗状态,有效减少待机时的电源损耗。这对于电池供电的便携式设备尤为重要,能够显著延长设备的使用时间。 总结,VK1056B/C驱动芯片凭借其...
总的来说,控制无线电中的省电模式是一个综合性的工程,涉及硬件、软件、用户行为以及系统级别的策略。通过多方面的优化,我们可以显著提高电子设备的电池续航能力,让用户在无需频繁充电的情况下,也能享受顺畅的...
单片机各种省电模式及其中断唤醒,有需要的同学下
一个简单的工具,可自动启用省电模式或飞行模式,因此您只需要四步。 该应用程序希望轻松舒适地完成此功能。 第 0 步:启用此应用程序; 第一步:设置你的正常睡眠的开始和结束时间; 第二步:选择您需要的工作...
6. **用户界面优化**:合理设计用户界面,引导用户养成节省电量的习惯,例如提供电量提示,鼓励用户在不使用时关闭设备或切换到省电模式。 7. **硬件和软件协同**:软硬件结合,通过软件控制硬件的工作状态,比如在...