朱瑜红,邓 志
(宁夏大学 物理电气信息学院,宁夏 银川 750021)
摘 要:Android是基于Linux的开源操作系统,它开放性好,功能扩展性强,并可无缝集成Google应用.因此,Android 的应用前景非常广阔.本文在Android平台上,利用Google Android SDK和JAVAEclipse开发工具,设计了一个太阳角度的计算软件.该软件使用了任意时刻太阳仰角与偏角的计算公式,用XML语言设计相应的框架,用JAVA语言编写功能模块程序,从而实现对当前时刻太阳仰角与偏角的计算.
教育期刊网 http://www.jyqkw.com
关键词 :Android;JAVA Eclipse;太阳角度
中图分类号:TP211 文献标识码:A 文章编号:1673-260X(2015)01-0024-03
Android是一个专为移动终端打造的软件平台,其主要包括操作系统、中间件、用户界面及应用程序.Android系统拥有移动终端能便捷使用所需的全部软件,并且其开放性还保证了该平台不会阻碍任何移动产业的创新.正是因为Android系统这种开源、完整、免费的特性,自它诞生以来迅速得到了大量用户以及许多厂商的青睐.在Android系统下手机的各种应用异常丰富,例如拍照、导航等,但在这些应用中都没有关于太阳角度计算的功能.在本文中基于Android系统平台,利用Google Android SDK和JAVA Eclipse等开发工具,设计了一个有关太阳角度计算的软件.该软件可作为一个组件方便的添加到应用中,给予这些应用更多的功能和实用性.例如结合导航功能可以迅速判断此时此地的太阳角度,进而判断方向,即使在阴雨天也不用担心.或者可以将这种功能集成到天气预报软件中,可为软件增添趣味性.
1 太阳角度计算
1.1 太阳直射点纬度的计算
太阳直射点的纬度为δ(北纬δ取正值,南纬δ取负值),黄道面与赤道面的二面角为α(α即地理和天文中的“黄赤交角”,α的大小为23.5°),太阳在黄道上的点相对春分点的角度为ω(ω以下简称“黄道角”,一年中某天的ω角度可利用这天与春分日的天数差n表示,对平年近似算式为.直射点纬度δ,黄赤交角α,黄道角ω三者之间的关系为:sin(δ)=sin(α)*sin(ω),利用该公式即可计算出太阳直射点的纬度.
1.2 地球上某地任意时刻太阳仰角和偏角的计算
建立地心坐标系:Z轴方向取从地心指向地轴北极的方向,X轴取赤道面与太阳直射经度线平面的交线方向,Y轴取赤道上位于X轴东侧90°角的方向.建立本地坐标系:z轴取垂直地面指向正天顶的方向,x轴取正南方向,y轴取正东方向.假设某地在地球上的纬度为θ(北纬θ取正值,南纬θ取负值),该地某时刻对应的时间角为?渍(?渍为当地经度与太阳直射经度之间的差值,?渍每小时转过的角度为15°,?渍的大小可以利用该时刻与当地正午时刻的时间差t表示,公式为:?渍=15°*t,t的单位为小时,上午t取负值,下午t取正值),则地心坐标系与本地坐标系之间的转化关系为:
设当天的太阳的直射点纬度为δ,则由两个坐标系的转化关系可得到太阳直射点位置矢量在本地坐标系中的表达式为:
假设太阳在本地坐标系中的高度角为H(H为太阳与地平线的夹角),方位角为P(P为太阳在地面上的竖直投影点与本地坐标系原点连线和本地坐标系正南方向之间的夹角,该角在正南方向偏东则取正值,偏西则取负值),则太阳的直射点位置矢量在本地坐标系中的表达式又为:
2 太阳角度计算软件的设计
2.1 软件代码的组织架构
本文设计的太阳角度计算软件主要包括以下几部分:
(1)程序界面,其布局文件为\res\layout\文件夹中名为main.xml的文件.在此文件中同时设置了相对应的图形界面,其布局方式选用相对布局,使用xml语言编写;
(2)前次使用所记录的信息,保存在res/raw中,可以实现快速访问;
(3)太阳角度计算相关程序city.java使用java语言编写,实现了通过经纬度计算得出当前时刻的太阳偏角与仰角;
(4)软件主程序命名为sunangle.java,使用java语言编写.在此程序中完成对控件的监听,同时进行相应的操作以及对用户操作的响应.
2.2 界面布局文件main.xml
此软件的使用者是广大用户,为此设计出的程序必须具有良好的人机交互界面,这样才能便于用户使用,从而增加用户的操作兴趣,提高软件的普及率.因此,主界面的实现从以下几个方面设计完成.
2.2.1 城市选择菜单的创建与布局
<TableRow>
<TextView android:text="请选择城市" android:textSize="18dp" />
<Spinner
android:id="@+layout/myspinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>
//spinner是设计下拉式菜单,这里规定了高度和宽度,并设置字体大小为18dp.
2.2.2 经纬度输入文本框的布局
-<TableRow>
<TextView android:text="当地维度(°)" android:textSize ="18dp" />
<EditText android:id="@+id/weidu" android:text="38.16" android:numeric="decimal" />
</TableRow>
-<TableRow>
<TextView android:text="当地经度(°)" android:textSize ="18dp" />
<EditText android:id="@+id/jingdu" android:text="106.1" android:numeric="decimal" />
</TableRow>
由于//TextView是不可编辑文本框,因此需要调用setText()函数来设置其中的内容,并且在相对布局方式中要将其位置设置在“当地纬度”、“当地经度”的右边,同时将其文本框中的文字大小设置为18dp.其默认纬度是38.16°,默认经度是106.1°,为银川所在经纬度.
2.2.3 太阳仰角与偏角显示布局
- <TableRow>
<TextView android:text="太阳偏角" android:textSize ="18dp" />
<TextView android:id="@+id/pianjiao" android:text="0.0" android:textSize="18dp" android:textColor="#4754f8" />
</TableRow>
- <TableRow>
<TextView android:text="太阳仰角" android:textSize ="18dp" />
<TextView android:id="@+id/yangjiao" android:text="0.0" android:textSize="18dp" android:textColor=" #4754f8" />
</TableRow>
//将经过计算得到的太阳的仰角与偏角输出显示,字体大小为18dp,颜色为蓝色.
2.2.4 当前时间显示布局
- <TableRow>
<TextView android:text="当前时间" android:textSize ="22dp" />
<DigitalClock android:text="DigitalClock" android:id="@+id/digitalClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="22dp" android:textColor="#0ff" />
</TableRow>
//显示当前时间,字体大小为22dp,颜色为绿色.
2.2.5 Button按钮控件的布局
- <TableRow>
<Button android:id="@+id/bhelp" android:text="帮助" android:layout_width="wrap_content" />
<Button android:id="@+id/bquit" android:text="退出系统" android:layout_width="wrap_content" />
</TableRow>
<Button android:id="@+id/bcalc" android:text="计算角度" android:layout_width="wrap_content" android:visibility ="invisible" />
//最后通过两个Button按钮来实现操作,一个Button用来提示帮助信息,另一个Button退出系统,其位置位于屏幕的最下端.
2.3 太阳角度计算程序
太阳角度计算主要通过city.java程序实现,将输入的经纬度经过判断与计算,得到太阳仰角与偏角的数值,将此数值返回主程序sunangle.java.
该程序流程图如图1所示,在得到相关数据后首先会对经纬度的数值进行判断,如果不在范围内,则会输出太阳仰角为0°,偏角为0°.如果通过判定,则会计算出相应的太阳仰角与偏角.
2.4 主程序sunangle.java
主程序流程图如图2所示.在程序开始后会有程序监听,其间隔是1000毫秒,即一秒钟.主要目的是获取经度和纬度的具体数值,然后会将其实例化为sunangle.java.
经度和纬度数值的获取方式有三种,一是读取经度和纬度输入框中的具体数值,二是读取前次使用所保存的数据,最后一种方法是判断下拉菜单所选择的城市,然后读取相应城市的经度和纬度.
2.5 界面实现效果
图3至图6是程序运行的效果图.
3 结束语
经过应用演示和测试,本文设计开发的太阳角度计算软件能够在所有Android操作系统的手机和移动终端上安装并稳定运行,可以为不同需求的用户提供准确、便捷的服务.因此本设计具有较强的实用性,对其他类似开发工作也具有一定的参考借鉴意义.
——————————
教育期刊网 http://www.jyqkw.com
参考文献:
〔1〕刘乾发.基于Java平台的手机软件架构的研究与应用[D].浙江:浙江大学软件学院,2007.
〔2〕姚显昊,刘卫国.Android的架构和应用开发研究[J].计算机系统应用,2008(11):78-81.
〔3〕FrankAbleson,Android开发简介.developer Works.2009(6):130-131.
〔4〕杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.28.
〔5〕高焕堂.Google Android应用框架原理与程式设计[M].(2008-11-29)[2011-03-05],http://d.download.csdn.net/down/820544/carylin.