我的程序
能节能休眠
模仿功能:节能休眠模式
模仿对象:手机QQ2008
模仿进度:第一期
开发平台:Java平台
开发手机程序是需要经验,可很多读者都是才从PC平台转型而来,根本没有经验,如何快速的提高自己手机平台的开发经验呢?模仿设计,模仿知名手机程序的特色功能进行设计,快速积累手机平台的开发经验。下面,我们就选定手机QQ2008,模仿它的特色功能,先来看看“节能休眠模式”是如何设计的(完整程序下载地址:http://www.shuodoo.com/bzsoft)。
节能休眠模式设计思路
节能休眠模式的功能是降低手机QQ的耗电量,减少手机QQ的GPRS流量费用,从而减少用户充电的间隔时间,减少流量费用的支出。手机QQ的这种设计,充分考虑了手机用户的使用体验,是一种比较贴心的设计。这种模式也适合手机网络游戏和手机网络程序。
要模仿设计节能休眠模式,先制作一个简单的界面,该界面用于显示亮度变化和显示内容。另外还要在该界面类内部添加了一个系统线程,该系统线程的作用是定时发送一些系统信息,例如向服务器发送好友上下线通知、从服务器端获得发送给该用户的信息等。
在该模拟程序中,设计了一个专门的控制类,由该类实现节能和减少流量信息的控制,这样程序的结构比较清晰,也方便对于逻辑的修改。为了模拟网络通信,还专门设计了一个模拟网络发送的类,该类负责发送程序已经提交的通信指令(图1)。
减少GPRS流量
在手机网络程序中,当用户长时间不操作手机时,关闭屏幕或降低屏幕的亮度,是几乎所有的手机程序都可以实现的功能,但在实时性比较强的手机网络程序中,降低网络通信的频率会妨碍程序的实时性,所以只能从优化程序的协议设计、减少网络通信的数据量等方面考虑。优化网络协议的设计才是减少GPRS流量最核心的办法。
小知识:针对减少耗电量来说,就是减少程序的功能和降低屏幕的亮度。在手机QQ中,在休眠模式下,关闭了声音和振动提示等非核心功能,同时还降低了屏幕的亮度,甚至关闭了屏幕。关闭声音和振动提示功能,只需要在程序代码中加入一定的判断,在节能休眠模式下不执行该功能即可,对于关闭屏幕显示则需要使用手机新增的API,例如在Nokia系列的手机上可以使用Nokia UI API:DeviceControl.setLights(0,0);。
减少GPRS流量,就是减少程序和服务器网络通信的次数,并去掉一些不重要的网络通信。在手机QQ中,主要是通过去掉一些不重要的功能,例如关闭获得群信息、语音图片、好友上下线通知、新邮件更新提醒等网络通信指令,从而节约了客户端发送的指令流量和服务器端反馈的指令流量。
减少与服务器通信的频率,也会间接同时减少手机的用电量。这些功能需要在程序的逻辑控制中体现:减少无关网络指令的添加,以及增加网络连接线程的延迟时间从而达到降低和服务器端的网络通讯频率实现(图2)。
节能休眠模式设计步骤
第一步:创建项目
启动Eclipse环境,选择“File→New→J2ME MIDlet Suit”,设置项目名称为“EnergySaving”,并一路选择“Next”, 完成项目的建立。然后新建一个J2ME入口类,选择“File→New→J2ME MIDlet”,并设置名称为“EnergySavingMIDlet”,点击“Finish”。创建项目的代码下载地址是http://www.shuodoo.com/bzsoft。
第二步:设计界面
选择“File→New→Class”,并设置名称为“DemoForm”,点击“Finish”完成界面类的创建。接着,开始初始化界面。关键代码如下所示(完整代码下载地址:http://www.shuodoo.com/bzsoft):
public
DemoForm(){
super("正常模式");
//初始化界面
cmdNormal = new
Command("正常模式",Command.OK,1);
cmdEnergySaving = new
Command("节能模式",Command.SCREEN,2);
addCommand(cmdNormal);
addCommand(cmdEnergySaving);
//初始化控制对象
control = new
Control(this);
//注册事件监听器
this.setCommandListener(this);
//启动定时发送系统通信指令线程
Thread t = new Thread(this);
第三步:界面亮度调整
在手机切换到节能状态时,将节能开关变量打开,并将界面亮度调整到最高亮度的1/10。代码如下所示:
public
void setEnergySavingMode(){
spf
= ENERGYSAVING_SPF;
isInEnergySavingState = true;
//设置屏幕亮度
DeviceControl.setLights(0, 10);
}
通过赋值spf的值为节能模式SPF(每帧间隔时间),降低界面类中定时发送的系统指令发送的频率。通过赋值变量isInEnergySavingState为true,控制界面类中的定时发送系统指令时不发送非核心的指令,如好友上下线通知等,这样可以减少网络流量,也可以在一定程度上节能。通过设置屏幕亮度为10,使得屏幕亮度只是正常亮度的1/10(亮度最亮为100),可以达到显著的节能效果。
第四步:减少GPRS流量
在手机切换到节能状态时,程序将不会添加周期性的非核心网络通信指令到网络线程中这样网络线程发送的命令请求将减少。另外降低某些必须指令的发送频率,例如把获得信息的指令从每2秒发送一次,降低到每10秒发送一次,这样也可以显著减少流量,也可以降低程序的消耗。关键代码如下所示(完整代码下载地址:http://www.shuodoo.com/bzsoft):
public void
addSystemData(){
if(isInEnergySavingState){
return; //结束
}
sendVector.addElement("正在查询好友上下线信息.../n");
sendVector.addElement("正在查询新邮件提示.../n");
sendVector.addElement("正在获得群信息.../n");
while(true){
//延时
Thread.sleep(Control.spf);
//添加命令
control.addSystemData();
control.addNeedData();
第五步:运行程序
在Eclipse主界面左侧的“Package
Explorer”中,选中项目源代码EnergySavingMIDlet.java,单击鼠标右键,选择“Run
As→Emulated J2ME Midlet”即可运行程序(图3)。
分享到:
相关推荐
防止硬盘休眠,防止硬盘自动断电批处理程序。移动硬盘有休眠功能的朋友的福音!硬盘插上电脑后,看下移动硬盘盘符,先在c盘新建一个yes.txt记事本文件,然后用记事本打开下载的批处理文件如下: :noparms (c盘文件...
Labview做的定时休眠程序,提高大家对Labview的兴趣。
运行后程序在前台cmd运行,将每五秒调用一次Windows api保证电脑不睡眠 免责声明:不睡眠不是不关闭显示器!
适用于基于zigbee协议的应用中关于休眠的一段示范代码
易语言置电脑休眠源码,置电脑休眠,置悬挂状态_
电脑休眠或待机。如果要休眠设定电脑 显示属性-〉电源 -〉休眠 -〉启动休眠 (显著加快电脑启动)
[若360误报,请添加信任。360对visual studio编译的程序会产生误报!]防止windows休眠。只要运行后,不关闭窗口(不在前端显示,最小化都可以)就能让电脑不进入休眠状态
2.内容:【提供程序操作视频】m基于matlab的站点休眠中继CDMA网络动态节能控制算法仿真与性能分析+word版lun文 3.用处:用于站点休眠中继CDMA网络动态节能控制算法编程学习 4.指向人群:本硕博等学习教研使用,企...
MSP430F5438单片机进入休眠程序,
我写给自己用的定时自动休眠/关机的小程序,对话框界面,Win32 SDK程序,用Code::Blocks开发,功能是让电脑在指定的时间后自动休眠/关机,克服了Windows系统自带的电源管理只要一动鼠标或键盘就重新开始计时以及更改...
易语言源码易语言置电脑休眠.rar 易语言源码易语言置电脑休眠.rar 易语言源码易语言置电脑休眠.rar 易语言源码易语言置电脑休眠.rar 易语言源码易语言置电脑休眠.rar 易语言源码易语言置电脑休眠.rar
一个用C#编写的定时关机、重启、休眠的程序,winForm程序。
是一个可执行文件,可通过自定义快捷键(见本人教程https://blog.csdn.net/qq_43476358/article/details/118851355),给Windows休眠设置快捷键达到使windows可以"一键"休眠的效果.程序员有的时候累到极致,晃动下鼠标...
防止Windows电脑休眠锁屏,针对企业内设定的定时锁屏策略,无法更改,可用此工具持续唤醒电脑。亲测安全可用,无需安装,双击运行,有启动和终止按钮的开关。
支持关机、重新启动、休眠、挂起等多种关机方式,适用于Windows 9x(OSR2以上)、Windows NT(4以上)的所有版本。
51单片机的休眠模式
部分代码: #include #include <time.h>//随机函数头文件 #include <windows.h>//休眠函数头文件 #include<stdlib.h>//清屏函数头文件
Autoit制作的Windows下的防止休眠小工具,2分钟左右移动一次鼠标指针。对于域策略下定时强制休眠的用户非常有用。
无需安装,双击直接打开,办公室电脑不休眠,不锁屏,不黑屏,方便!
一短 vb开发语言, 能让计算机开机、关机、待机等操作