处女作LightHand

发布时间:2010-11-17 频道: 业界动态 作者:阿New 评论 : 11 阅读数 : 2,204

本软件是我和Zeyoung第一次参赛作品,软件的实用性不太强,主要宣传一个自发电的环保理念,还有就是一次对我们技术的检验。

现将截图和说明贴出,至于技术难点和源码在12 月 15 日前公布,谢谢关注。

Light Hand程序说明

一、程序名称:Light Hand

二、SDK版本号:1.6

三、程序简介:

众所周知,能源短缺是世界一大难题,节能环保将会是热门的话题。Light Hand正是以节能环保为主题,本程序通过用手摇动手机发电,储电后点亮电灯。由于还没有手摇发电手机,本程序只是一个构想。灵感来源于手摇发电筒。程序已用G1(dream)测试。

四、程序详细说明:

1、功能说明:

a、充电:摇甩手机,电量条呈上升状态(小心摇甩幅度过大,致手机脱手);

b、亮灯:通过开关滑动,选择亮度,亮度数值越大,电量用得更快;

c、择灯:通过按menu键,选择灯光颜色,有黄、白、蓝灯可选。

2、代码说明:

本程序由两个部分组成,第一部分为mainActivity(继承自Activity),第二部分为BatteryView(继承自SurfaceView)。mainActivity主要负责感应器(sensor)变量处理,MENU处理,还有由MENU触发的灯泡颜色选择。

a、mainActivity

(1)sensor部分,由方法accelerometer()产生一个空间加速度传到BatteryView。

(2)MENU部分分别有“选择灯光”、“关于”、“帮助”。选择灯光分别用三张图片表现三种灯光。

b、BatteryView

BatteryView是整个程序的核心部分,由于需要造出充电时,电量槽递增的效果,因此选择了刷新率比较高的surfaceView。BatteryView中重要的方法有:charge(Canvas c),charged(Canvas c),setAlpha(),onTouchEvent(MotionEvent event),还有类MyThread中的run()。

(1)charge(Canvas c):

方法说明:

用于响应传来的空间加速度,并作出电量槽相应的变化。摇动产生的空间加速度超过阈值,电量槽点亮一格,直到点亮十格为止。

(2)charged(Canvas c):

方法说明:

当充过电后,点击右上角充电按钮,切换到放电状态,此时执行该方法。该方法控制电量槽熄灭时间。设灯光的亮度为alphaVal(0~255),亮灯时间为t,电量槽格数是numoftile(0~10)。它们的关系满足:

a*alphaVal + b*numoftile = t。通过预设参数,得到两条二元一次方程:

255a + 10b = 50000ms

127a + 10b = 60000ms

解得:a = -78.125 b = 6992.1875

所以,用-78.125*alphaVal + 6992.1875*numoftile = t 可以表示它们之间的关系。

(3)setAlpha()

方法说明:

通过调节图片alpha值,作为灯光的亮度,alpha越低,灯光越暗,反之亦然。

(4)onTouchEvent(MotionEvent event)

方法说明:

用于响应滑动按钮的事件和“充电”开关的触碰事件。

(5)run()

方法说明:

画图线程,主要用于重绘surfaceView,刷新间隔是200 ms。

8
顶一下

随机日志

11 条评论 »

这篇文章上的评论的 RSS feed TrackBack URL

留下评论

用户中心

最受欢迎文章

尾页 »后页 »{"order":"DESC","orderby":"post_date","limit":10,"period":"ALL","days":30}