首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于Android的天气信息提醒软件的设计与实现

作者:刘宝 冯军 朱庆廷 来源:电子技术与软件工程


  摘要目前市场上较为流行的几款基于Android系统的天气软件,如墨迹、天气通等,虽能为用户提供良好完备的服务,但又都存在一些不足,如信息内容仅供个人使用、提醒方式过于局限等。因此,基于Android系统的天气信息提醒软件——移动天气,采用了本机定时天气提醒、来电去电归属地天气提醒、恶劣天气短信他人提醒、天气信息短信一键发送等全方位的提醒机制,达到了天气信息提醒方式丰富多样及提醒范围更加宽广的目的。
  【关键词】安卓 天气信息 提醒机制
  2007年11月,Google公司第一次公开展示了Android操作系统,2008年10月,第一台Android智能手机面世。仅仅一年的时间,Android操作系统的发展令人瞠目。不过从现在来看,那也不过是一个开始。根据国际数据公司(IDC)全球季度手机追踪的数据显示,在2013年的第四季度,Android设备占所有手机出货量的78.1%。
  在Android蓬勃发展的态势下,依赖于Android系统的手机应用也呈现出“病毒式”增长。纵观整个Android应用市场,可以发现,较之于娱乐类以及学习类应用,生活类应用因其特定的功能需求而并没有发展的尽善尽美,如天气类手机应用都陷入了一种以用户个人为中心、基于查询为主的固定模式。基于上述考虑,本文将目光放在了天气这一与人们日常生产活动密切相关的内容上。
  1 软件需求分析
  目前市场上一些优秀的天气查询软件,如:墨迹、天气通等,都具有及时、准确、完备的信息内容、多元化的功能、良好的UI设计等优势。但在需求分析过程中,根据用户反馈的信息,发现这些软件也存在一些不足,如:信息内容主要供个人使用,即使有共享,共享方式也过于单一;提醒方式过于局限;为了赢得用户青睐过分追求界面的炫丽而占用较多系统资源等。
  本软件在研究和分析上述缺陷与不足的基础上,采用软件工程的方法,设计完成了基于Android 平台的天气信息提醒软件——“移动天气”的开发,最终实现了天气信息的查询、本机定时天气提醒、恶劣天气短信他人提醒、来电去电归属地天气提醒、天气信息短信一键发送的功能,此外还有一些辅助功能,如日历、记事本、分享等。整个设计过程采用Java编程语言,在Eclipse+Android ADT环境下进行软件开发,也运用到了调用Android组件连接新浪官网的天气API接口获取天气信息等网络技术。软件功能模块图,如图1所示。
  2 功能与创新点
  目前市场上已经有了许多天气软件,并且也能够为用户提供丰富的服务。但这些软件的天气查询功能是基于用户个人的,而“移动天气”软件的功能不仅针对用户个人,更是面向其交际圈,从而能够达到更加全面的天气信息的共享与交流。其具体功能包括:
  2.1 基本的天气信息查询与显示
  显示当天及未来3天的天气状况;
  2.2 多方位信息提醒功能
  来电去电归属地天气提醒,本机定时天气提醒,恶劣天气短信他人提醒,天气信息短信一键发送等,使提醒范围更全面,不再局限于自身,更涵盖自己的亲友;
  2.3 日历、记事本功能
  与其它天气查询软件相比,“移动天气”软件的创新点主要体现在:
  2.3.1 本机定时天气提醒
  满足用户自身的天气提醒需求。当设定的时间点到达时自动弹出消息框进行提醒,以闹钟加消息框的形式承载天气信息,避免用户忘记关注天气变化;
  2.3.2 天气信息短信一键发送
  用户可将天气信息通过短信形式一键发送到其它联系人,达到了天气信息共享与交流的目的;
  2.3.3 恶劣天气短信他人提醒
  自动监控关心好友所在地的天气信息,如果达到设定的提醒条件则以短信形式自动发送天气信息提醒好友注意天气变化,达不到条件则在下一次时间点到达时继续监听;
  2.3.4 来电去电归属地天气提醒
  如图2所示,用户在通话时可显示对方归属地天气状况,方便用户及时通知对方关注天气变化、防寒保暖等;
  2.3.5 多功能拓展
  日历、记事本等功能,使软件提供更全面的服务,更符合现代人对软件使用的多元化、多功能性需求。
  3 软件实现
  由于本软件具体实现的功能较多,在此仅针对部分功能的实现方法做出阐述。
  3.1 来电去电归属地天气提醒功能实现
  此功能的实现主要包含三个方面的内容,先是要获取到号码的归属地信息,然后再根据该信息获取各类天气信息,最后加以显示。
  3.1.1 号码归属地获取
  这里的号码归属地信息获取实际上是通过发送HTTP请求访问WEBXML网站提供的API接口来实现的。首先使用myxml=MobileXML.getInstance().requestXML(comingNumber.toString())将通话号码设置为xml格式,然后将其作为请求提交给服务器,服务器根据请求返回一个字符串,其具体格式为:“手机号码:省份名称 城市名称 号码类型”,而这些信息在后续使用中可以直接提取。
  3.1.2 获取归属地的天气信息
  获得了来电或去电号码的归属地后即进行归属地天气信息的获取。获取天气信息的过程实际上也是一个网络通信的过程,本软件采用新浪天气提供的天气信息,通过向其天气API接口发送查询请求,服务器接收到请求后返回特定格式的天气信息。例如在浏览器的地址栏输入http://php.weather.sina.com.cn/xml.php?city=南京&password=DJOYnieT8234jlsK&day=0,点击回车后,服务器就会返回一个xml文档并由浏览器解析呈现。
  上述内容其实就是一个向API接口发送请求,并接收显示xml文档过程。返回的xml文档中包括了一些有关天气的信息,如时间、城市名称、天气状况、最高/最低温度、风向风力、紫外照射强度等信息。浏览器的地址栏输入的内容中,“city=南京”表示查询南京的天气,也可改为其它城市名称,即查询相应城市天气状况;“day=0”表示查询当天天气信息,将数字改为1、2、3即表示查询明天、后天、大后天的天气信息。
  软件获得返回的xml文档之后,其中的信息并不能被程序直接使用,需要进一步将文档中有用的信息解析提取出来。通常在Android开发中,有 3种方式可用于解析xml文档,即DOM,SAX和PULL。
  对本软件而言,解析xml文档是其开发过程中至关重要的一点,不同的解析方式会带来不同的效果。在综合分析三种解析方式特点的基础上,出于使软件内存占用最小的角度考虑,本软件采用SAX方式进行解析,主要实现过程分三步,第一步是创建一个SAX解析器,第二步是要初始化xml事件处理器并对它进行绑定,最后一步则是解析xml文档,得到最终的解析内容。要注意的是,软件的xml事件处理程序定义放在一个单独定义的类中。
  3.1.3 天气信息显示
  Toast是Android中用来显示信息的一种机制,在来电去电归属地天气信息提醒功能的通话界面中,天气信息的显示就是采取的这种方式。具体代码也包含两个方面,一个是Toast显示内容代码:Toast toast=Toast.makeText(context,msg,Toast.LENGTH_SHORT) ;其中msg就是所要显示的信息。另一个则是Toast显示位置代码:toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL,0,0);此处是将Toast的位置放置在了通话界面的正上方。
  
  3.2 天气信息短信一键发送
  此功能的实现要点有两点,一是获取发送请求并传递该请求,二是根据请求自动创建短信文本内容。
  3.2.1 功能跳转
  软件在“本机定时提醒”和“城市详细天气信息”都布局了一个“发送”Button,并定义它的OnClick方法:
  Class ButtonListener implements OnClickListener {
  public void onClick(View v) {
  Intent intent = new Intent();
  //系统默认的action,用来打开默认的短信界面
  intent.setAction(Intent.ACTION_SENDTO);
  //需要发短信的号码
  intent.setData(Uri.parse("smsto:"));
  intent.putExtra("sms_body", message);
  startActivity(intent);
  }
  }
  当用户点击该按钮时即执行上述代码,跳转到短信发送界面,同时短信文本内容已经由软件编辑完成,但用户可继续编辑,下面叙述短信文本的自动生成方法。
  3.2.2 短信文本的自动生成
  短信文本的生成采用的是适配天气状态的方法,通过对天气、温度等相关信息的适配,编辑文本。
  通过以上两个方面,结合之前叙述的获取解析天气信息的方法,就可实现天气信息短信一键发送的功能,方便用户及时共享与交流天气信息。
  3.3 恶劣天气短信他人提醒
  此项功能就是前两个功能实现原理与方法的重组。通过到达用户设定的时间来触发事件,进而联网获取天气信息并解析,运用与上述短信文本的自动生成相同的原理编辑短信文本,再调用短信发送功能,向用户设定的号码自动发送天气信息。但此处涉及到了短信发送的条件判别,即软件能通过天气、温度等天气状态判别是否达到发送信息的条件,只有达到相关条件如雨雪、沙尘暴等恶劣天气时才执行短信发送功能,如果天气状态良好时则不发送天气信息。
  软件除上述的三点创新功能之外,还有一些其它创新功能和辅助应用,其原理同上述几种功能相似,此处不再赘述。
  4 总结
  从上面的论述可以看出,本文所提出的基于Android系统的天气信息提醒软件与市场上的天气软件最大的不同在于它具有更加完善的提醒功能,这种更具人性化的功能使得该软件在Android市场上有了一定的生存空间。
  不过,由于在软件开发过程中过于追求提醒的功能,使得该软件在其它方面,如:网络通信、数据存储及软件优化等产生了一些不足。从目前看来这些不足尚不至于影响软件的使用,但从长远角度考虑,却是对软件未来的发展极为不利,因此未来工作的重心将集中在建立网络通信的普适机制、长久的数据存储机制以及软件优化这三个方面,通过解决这些问题来提高软件的使用效率,以达到更好的用户体验。
  
  参考文献
  [1]Satya Komatineni.Dave Maclean,Sayed Hashimi.Pro Android 3[M].America:Apress,2011.
  [2]李宁.Android开发权威指南[M].北京:人民邮电出版社,2011.
  [3]tienne Payet,Fausto Spoto.Static analysis of Android programs [J].Information and Software Technology,2012.
  [4]闫梅,彭新光.基于Android安全机制的权限检测系统[J].计算机工程与设计,2013,03:854-858.
  [5]黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,16:140-142.
  [6]张立,韩银和,袁小龙.一种基于Android系统网络模块功耗的评估和分析[J].计算机科学,2012.
  
  作者简介
  刘宝(1992-),男,大学本科,计算机软件开发。
  
  作者单位
  南京邮电大学传媒与艺术学院江苏省南京市210023