软件工程毕业设计论文基于Android手机辅助系统

上传人:仙*** 文档编号:74305804 上传时间:2022-04-13 格式:DOC 页数:61 大小:1.40MB
收藏 版权申诉 举报 下载
软件工程毕业设计论文基于Android手机辅助系统_第1页
第1页 / 共61页
软件工程毕业设计论文基于Android手机辅助系统_第2页
第2页 / 共61页
软件工程毕业设计论文基于Android手机辅助系统_第3页
第3页 / 共61页
资源描述:

《软件工程毕业设计论文基于Android手机辅助系统》由会员分享,可在线阅读,更多相关《软件工程毕业设计论文基于Android手机辅助系统(61页珍藏版)》请在装配图网上搜索。

1、青岛大学本科生毕业论文(设计) 方萌本科毕业论文(设计) 题 目: 基于Android手机辅助系统 学 院: 国际学院 专 业: 软件工程 姓 名: 指导教师: 2011年 5月23日 目 录第一章 序言11.1 设计背景11.2 设计目标11.2.1短信群发11.2.2来电管家21.2.3多彩手电筒21.2.4电蚊香21.3 项目设计原则31.3.1实用性原则31.3.2可控性原则31.3.3占用资源少的原则31.3.4易扩展性原则31.4设计框架3第二章 系统分析42.1 需求分析42.2 技术可行性42.2.1面向对象编程技术42.2.2程序语言的选择52.2.3操作可行性62.3 环境

2、可行性分析62.3.1软件环境62.3.2硬件环境62.4 系统结构可行性分析6第三章 系统设计83.1 总体设计83.2 数据库设计83.2.1数据库的需求分析83.2.2数据库表的具体设计93.3 详细设计103.3.1目标实现103.3.2具体设计103.4 数据模块架构图113.5 各数据模块详细架构123.5.1短信群发模块文件架构123.5.2来电管家模块文件架构123.5.3电蚊香模块文件架构133.5.4手电筒架构13第四章 系统实现144.1主界面的实现144.2短信群发模块实现194.3来电管家模块实现414.4手电筒模块实现484.5电蚊香模块实现504.6开机启动程序的

3、实现514.7系统展望52第五章 系统测试535.1 测试的定义和目的535.2 测试的方法535.3测试发现的问题及解决办法535.3.1短信群发测试535.3.2来电管家测试545.3.3其他模块的测试54第六章 总结55谢 辞56参考文献5758第一章 序言1.1 设计背景当今通讯领域中,手机成为日常生活必不可少的工具,随着科学技术的发展,智能手机日趋发展成熟。2007年11月5日,Android手机操作系统脱颖而出,仅推出两年已超越称霸十年的诺基亚塞班系统,一跃成为全球最受欢迎的智能手机平台之一。Android系统不但应用于智能手机,也在平板电脑市场急速扩张。该系统是基于Linux内核

4、的系统,早期由Google公司开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。Android为开源系统,开发灵活性更强,各种软件层出不穷,发展前景十分广阔。智能手机改变人们使用手机的习惯,也放大人们对手机的想象。对目前形式的分析和对未来的展望,手机系统已经不仅限于通话和短信等内容,手机扩展功能日益发展壮大,利用手机里的各种基本功能,可以拓展更多更实用的软件,这不仅使用户更方便的利用手机,

5、而且也激发了很多编程人员的创新思维。本程序就是利用android手机系统的各种功能实现有创意且实用的手机辅助系统。1.2 设计目标众所周知,手机的各项功能都是围绕用户的需求而开发的,以下功能设计的实现就是按照人们生活中经常用到的但系统中没有的功能,从而为android系统提供更好的用户体验。1.2.1短信群发1)此项功能不仅可以正常发送短信,而且可以发送对方的称谓。我们国家人民热情好客,逢年过节祝福不断。近几年随着移动事业的发展,以短信传递祝福的方式广为流传。而编辑短信逐条发送很麻烦,短信群发又感觉没有诚意,如果可以带上对方的姓名或昵称发送,会让被祝福者倍感亲切。发送的姓名可以随意更改,默认为

6、联系薄里的姓名,选择后可以改为其他昵称。2)定时发送的功能。在紧张忙碌的工作学习生活中,难免会遇到待发送的重要信息被遗忘,或者同一时间有其他的事情要做而耽误了短信的待发送。为了避免这些现象的发生,可以预先定时进行发送,而且不会影响非定时短信的发送。若定时信息未到时间,信息内容、发送时间及联系人可以增删改查,以防止发送失误带来的尴尬。1.2.2来电管家1)自动回复功能。当用户有急事来不及或者不方便接听电话和短信,此功能可以帮用户及时回复对方,以便让对方知道本人的当前状态或其他内容。此功能可以选择回复对象、回复内容,也可以选择对短信回复、对来电回复、对短信和来电都回复。当然,为了防止恶意来电,每次

7、启用该功能后,无论短信还是来电,每人只限一次回复。2)翻转静音功能。这是模仿诺基亚手机的一项功能,对于如此畅销的android系统而言,若没有此功能确实是个遗憾。用过的人都很清楚此功能的趣味性和实用性,比如在会议室或者其他不方便使用铃声的场合,而忘了调成静音模式,只要开启该功能,当来电铃声响起时,就可以翻转手机快速变为静音模式,从而有效防止打扰他人和避免自己的尴尬。1.2.3多彩手电筒此功能的实现也为该系统增添了趣味性和实用性。一般人们都不会随身携带手电筒,除非必要的时候。但是如果没有防备时,手头没有一个照明的东西,确实带来危险和不便。而手机是人们生活中都会随身携带的物品之一,如果安装了该软件

8、,只要打开屏幕,亮度会自动调到最大,这会有很好的照明效果。而且内设了多种颜色供用户选择,其中有一种为紫色,可以用来模拟紫外线灯进行验钞等,虽然不能与真的紫外线灯媲美,但仍有其功效。1.2.4电蚊香炎热的夏季,蚊虫滋生快,被蚊子叮咬确实奇痒难忍,启动该功能后,手机的音频外设会放出让蚊虫难以忍受的频率波段,从而达到驱蚊的效果;而人耳对此频率的感应能力不是很强。1.3 项目设计原则1.3.1实用性原则设计此软件的初衷是方便用户使用,本程序的各项功能都是围绕用户需求设计,实用性是此软件的最基础原则,围绕这个基础进行创新型扩展。1.3.2可控性原则为了方便用户的使用,每个功能都可由用户自主控制,参数也可

9、由用户自定义,这就迎合了大部分人的使用习惯,充分体现以人为本。该原则的目的就是软件适应用户,而不是用户适应软件。1.3.3占用资源少的原则此软件是安装在手机操作系统上使用,因为目前的大部分手机CPU和内存都比不上电脑的配置,如何节省资源开销已经成为手机编程中必不可少的环节。1.3.4易扩展性原则此软件的架构是按照可扩展性设计的,这样做是为了方便以后升级和扩展更多更实用的功能,易于软件优化,从而使该软件的灵活性增强,功能更加完善,运行更加稳定。1.4设计框架此手机辅助系统采用Java语言设计,在功能上分为四个模块:短信群发模块,来电管家模块,手电筒模块,电蚊香模块。而每个模块多由界面部分和功能部

10、分组成,除手电筒模块外,其余模块均有服务功能,即后台运行机制。此系统主要由服务、广播和多线程机制有机的统一于一个整体。短信群发模块分为界面部分,联系人读取部分,修改列表部分,手机发送短信机制,定时机制等方面进行设计与实现;来电管家模块分自动回复和翻转静音两大部分,自动回复从界面设计和广播监听与后台服务的结合进行阐述,翻转静音从手机摆放角度监听和广播监听的结合进行阐述;手电筒模块主要在屏幕亮度方面着手;电蚊香则从系统后台播放音乐方面着手。在论文设计方面,采用从整体到细节,从重点到难点的写作思路对该系统的设计实现进行描述。首先分析了当今智能机产业的发展背景和前景,介绍了手机辅助系统对用户工作和生活

11、的影响和用户对该系统的需求,分析了实现本系统的可行性,而本文章重点内容是手机辅助系统的设计和实现方法,最后对该系统各个功能模块进行测试评价,论述该系统的优缺点和对本软件的前景展望。在本文中,短信群发和来电管家模块将是主要的论述部分。第二章 系统分析2.1 需求分析在智能手机日益发展壮大的今天,手机辅助系统使智能手机功能的多样化和人性化成为可能。通过手机辅助系统,我们可以更方便的应用和整合手机的各种软硬件,拓展出更多更实用的功能。通过手机辅助系统中的短信群发,我们可以更方便的发送带有称谓的短信,从而提升在人际关系中的友好程度和在好友圈中的受欢迎程度;通过手机辅助系统中的来电助手,我们可以随心所欲

12、的定制自动回复功能,避免无人接听给对方带来的担忧,使智能手机更加人性化;通过手机辅助系统中的手电筒,可以为我们照亮光线不好的环境,如无电灯的楼梯,这样可以有效的避免黑暗为我们带来的不便,而且又不必随身携带手电,实现一机多用;通过手机辅助系统中的电蚊香,我们可以在多蚊虫的环境中避免被蚊虫叮咬而带来的痛苦,从而使我们不必分散精力,提高工作和学习效率。2.2 技术可行性2.2.1面向对象编程技术面向对象程序设计(Object-Oriented Programming)是一种起源于六十年代,发展已经将近三十年的程序设计思想。其自身理论已十分完善,并被多种面向对象程序设计语言(Object-Orient

13、ed Programming Language)实现。对象是对现实世界实体的模拟,由现实实体的过程或信息特性来定义。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。面向对象的核心是对类的应用。在本程序中大量用到面向对象技术,每个功能的实现都离不开对以下类的继承:Activity(动作类)、Services(服务类)和Broadcast(广播类)。这些类均在Android SDK中提供接口。1) Activity:an

14、droid系统与用户进行交互的接口,用户对android系统进行操作都是通过activity类来完成。此类要依附于界面,对用户是可见的。2) Services:与Activity类似,区别在于不用依附于见面,可以后台运行动作指令。3) Broadcast:系统每运行一个事件都会触发一个广播,通过广播监听器可以对相应事件做出反应。2.2.2程序语言的选择n Java MEJava ME(Java Platform,Micro Edition),这个版本以前称之为 J2ME。J2ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒等)上运行的应用程序提供一个健壮且灵活的环境。Java ME

15、 在用户界面、网络协议、安全模型等方面具有很强的灵活性和稳定性。基于 Java ME 规范的应用程序只需编写一次,就能够用于许多设备,而且可以利用每个设备的本机功能。Java语言提供类的继承,Android系统的编程就很好的利用了这一性质。总之,Java语言是一个面向对象的程序设计语言。这种优良的特性使Java应用程序具有无比的健壮性和灵活性,而且通过内置的API(应用程序接口)可大大节省资源开销,提高编程效率。本系统是基于Android开发平台的软件,因为Android顶层的应用软件大部分都是用java语言开发,而要与系统进行关联,不可避免的用到了Android SDK提供的API,通过此A

16、PI可将该软件与Android系统有机的融合为一个整体。n XMLXML即可扩展标记语言,是一种简单数据存储语言,类似于HTML,都是标准通用标记语言。Xml是在Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML与HTML的不同点是:XML的主要作用是存储数据,而HTML是用来定义数据的。扩展标记语言XML使用一系列简单的标记描述数据,建立和保存数据比较方便。虽然XML占用的空间相对于二进制数据存储占用的空间更多,但XML极其简单易于掌握和使用。在Android编程中,要用XML文件进行界面布局设置。本程序不仅用XML文件设置界面,也用它作为数据库存储

17、数据(Preference存储模式)。2.2.3操作可行性本系统只要求具有一定的手机操作经验,因为Android系统本身操作就很简单,本程序中全部的控件均继承自Android,所以用户对控件本身的操作不会陌生。在本程序中,每进行一步操作都会有相应的提示,而且每个功能界面都会提供帮助信息,只要有一点手机操作经验,看过提示后,对本软件的操作就会非常清楚。2.3 环境可行性分析2.3.1软件环境软件运行环境:Android操作系统 2.1 update1版本语言环境:简体中文编译环境:Windows7 32bit操作系统编译工具:Eclipse 3.6+Android SDK2.3.2硬件环境软件测

18、试机型:三星GT-I5508编译环境:联想天逸 F41a, CPU IntelCore2 1.67GHz,RAM 2G2.4 系统结构可行性分析Android SDK 提供了一个视图控件GridView,用于以网格的形式陈列内容。本软件利用此结构,以功能为单位将各图标和名称陈列于此视图中,这种结构的优点是使软件界面简洁大方,对各功能一目了然,易于用户操作,是一种人性化的界面设计格式;另一方面,这种结构形式有利于软件开发过程中进行软件管理,增加新功能,删除无用功能。第三章 系统设计3.1 总体设计本系统的主要任务是辅助手机用户更方便的管理和使用手机的各项基本功能,主要分为一下几个功能模块:主界面

19、模块,短信群发模块,手机照明模块,来电管理模块,电蚊香模块。模型结构如图3.1所示:手机辅助系统短信群发电蚊香主界面选择联系人修改称谓短信发送定时系统删除所选插入称谓播放声波手机照明选择颜色来电管理自动回复翻转静音回复对象回复内容来电动作翻转后动作图3.1 手机辅助系统结构图3.2 数据库设计3.2.1数据库的需求分析根据项目的需要,本系统将建立如下数据库表单:来电管家界面表单(fm.app.aa_preferences.xml):用于存储来电管家的设置参数;电蚊香状态表单(MosPre.xml):用于存储电蚊香功能的开启状态;短信群发状态表单(SmssPre.xml):主要用于存储定时发短信

20、的参数;本程序状态表单(AAPre.xml):主要存储本程序中各个功能的开启状态,可使手机重启后能继续运行相应程序。3.2.2数据库表的具体设计表3.1来电管家界面表单(fm.app.aa_preferences.xml)键类型默认值描述key_manager_leave_checkbooleanfalse是否开启自动回复key_manager_leave_edit_messageStringI am not here,please wait a moment回复内容key_manager_leave_list_actionStringphone回复来电动作key_manager_leave_

21、list_humenStringfriends回复对象key_manager_overturn_checkbooleanfalse是否打开翻转静音key_manager_overturn_list_actionbooleanfalse翻转后动作表3.2电蚊香状态表单(MosPre.xml)键类型默认值描述mos_statusint0是否开启避蚊功能表3.3短信群发状态表单(SmssPre.xml)键类型默认值描述isinsertbooleanfalse是否插入称谓istimerbooleanfalse是否定时发送message_beforeStringnull称谓前字符串message_aft

22、erStringnull称谓后字符串yearint1900定时年monthint1定时月dayint1定时日hourint0定时小时minuteint0定时分钟countint0选择的联系人数nameStringnull选择联系人姓名phoneStringnull选择联系人电话表3.4本程序状态表单(AAPre.xml)键类型默认值描述Smss_Timerbooleanfalse是否有定时发短信任务Manager_Leavebooleanfalse是否开启自动回复Manager_Overturnbooleanfalse是否开启翻转静音3.3 详细设计 3.3.1目标实现本系统主要目的是辅助用户

23、更方便地使用手机,突出实用功能。具体地讲,本系统通过手机固有的接口,从短信功能、来电管理功能,照明功能、避蚊功能(播放功能)出发,实现辅助作用,充分发挥智能机的优点,将实用性尽可能扩展到最大。具体实现如下目标:l 短信群发功能l 手机照明功能l 自动回复功能l 翻转静音功能l 电蚊香功能l 可后台运行,建立服务架构l 重启后仍然有效,实现开机启动l 运行安全可靠稳定l 占用尽可能少的资源l 适合各种手机屏幕分辨率l 对Aandroid各种版本兼容性强3.3.2具体设计手机辅助系统是基于Android 系统平台下的应用软件,针对Android手机用户开发。主要的功能模块有:短信群发,来电管家,多

24、彩手电筒,电蚊香。以下是对各个功能模块的具体设计:短信群发:主要包括群发短信,定时群发,可插入称谓,对所选联系人的删除和修改操作。来电管家:对来电和短信自动回复,可以自定义回复事件是来电还是短信,可以自定义回复内容,可以自定义回复对象是好友还是全部回复,重启仍然可以正常运行。多彩手电筒:屏幕亮度为最大,避免手机进入待机状态,颜色可由用户选择,增加紫色验钞光。电蚊香:播放驱蚊声波,可后台运行,若功能打开,重启后仍然有效。3.4 数据模块架构图此图为本软件的总架构图,显示了各个功能模块之间的关系和后台服务和前台操作的关系, 简单阐明了系统运行的机制,具体结构如图3.2所示:AA.java 主界面S

25、mss.java短信群发Mos.java电蚊香Manager.java来电管家Light.java手电筒AABroadcast.java用于处理开机事件SmssContact.java选择联系人SmssService.java发送短信服务MosService.java电蚊香服务managerService.java自动回复服务managerOverturnService.java翻转静音服务开机AAPre.xml记录状态信息根据状态信息启动服务开机读取状态信息图3.2 系统数据模块架构图3.5 各数据模块详细架构3.5.1短信群发模块文件架构短信群发模块通过SmssContact.java调用

26、系统中的联系人列表;当启动定时服务时,通过AlarmManager触发SmssService后台服务发送短信,当触发服务的同时,将开机项目表单中的短信定时服务状态改为活动状态,如下图3.3所示:直接发送定时发送Smss.java短信群发SmssContact.java读取联系人列表AAPre.xml开机启动项表单SmssService.java后台发短信服务AlarmManager定时返回联系人数据发送短信给所选的联系人图3.3短信群发模块运行架构示意图3.5.2来电管家模块文件架构来电管家模块分为自动回复和翻转静音两个功能,通过设置界面(PreferenceScreen)可由用户直接启动两个

27、功能,对设置的更改触发事件,运行相应的服务,并且更新开机启动项表单的信息,以便开机后仍然可以正常运行。启动自动回复功能后,服务中会建立用来监听来电或短信的广播监听器,当来电或来短信时,程序读取电话号码,根据用户的自定义设置进行相应的回复动作;启动翻转静音功能后,即启动了含有监听来电广播监听器的服务,原理同上,当来电时,触发来电广播监听器,而其中又注册了一个监听手机角度的类模块,若此时手机角度小于-120,即手机翻转过来,就进行相应的静音操作。运行机制可用图3.4表示:AAPre.xml更新状态列表Manager.java来电管家managerOverturnService.java翻转静音服务

28、managerService.java自动回复服务来电话callReceiver来电广播监听器smsReceiver短信广播监听器来短信callReceiver来电广播监听器mSensorListener手机角度监听器用户将手机翻转读取电话号码并回复短信手机静音图3.4来电管家模块运行架构示意图3.5.3电蚊香模块文件架构电蚊香模块的原理是通过系统从后台循环播放一段音频波段,此模块设计比较简单,运行架构如下图3.5所示:Mos.java电蚊香模块MosService.java电蚊香服务AAPre.xml服务状态表单更新状态表单驱赶蚊虫图3.5电蚊香模块运行架构示意图3.5.4手电筒架构手电筒的

29、实现较为简单,启用该功能后,程序首先保存当前的亮度,然后将亮度调到最大,并全屏显示,背景颜色默认为白色。退出该功能后将屏幕亮度参数恢复到之前的值。运行机制如图3.6所示:Light.java手电筒模块保存屏幕亮度值将屏幕亮度调为最大背景默认为白色开启退出背景颜色可调根据之前保存的亮度因数恢复屏幕亮度手机照明图3.6手电筒运行示意图第四章 系统实现此系统分为四个模块分别进行实现,这些模块既相互独立,又相互联系。所谓相互独立,是指各功能之间是平行关系,功能之间没有必然的联系;所谓相互联系,是指通属于一个主界面控制,使整个系统成为一个有机的整体。下面分别介绍各模块的实现代码及效果图。4.1主界面的实

30、现此部分的代码在AA.java中,用来显示所有功能模块,以便进入相应模块进行操作。此界面采用GridView布局,使界面简洁大方,一目了然,充分体现人性化设计理念。首先要建立一个GridView的适配器布局,用来定义GridView的格式,本程序中用上图标下文字的显示方式,此代码在layout/grid.xml文件中,实现代码如下: 建立GridView适配器文件(AAGridViewAdapter.java)/*创建GridView方法*/public View getView(int position, View convertView, ViewGroup parent) LayoutI

31、nflater factory=LayoutInflater.from(_con);/*使用grid.xml定义每个item的Layout*/View v=(View)factory.inflate(R.layout.grid, null);/*取得View*/ImageView iv=(ImageView)v.findViewById(R.id.icon);TextView tv=(TextView)v.findViewById(R.id.text);/*设置显示的Image与文字*/iv.setImageResource(_iconsposition);tv.setText(_itemsp

32、osition);return v;建立主界面的布局,采用相对布局(RelativeLayout),在其中包含一个GridView,设置每行显示的数量为3: GridViewandroid:id=+id/GridView_aa android:numColumns=3 /将做好的图标存到工程文件夹下的res/drowable中,声明图标数组和相对应的字符数组:/定义GridView的图标private int icons=R.drawable.message,R.drawable.light,R.drawable.manager,R.drawable.mos;/定义GridView的显示文字p

33、rivate int items=R.string.aa_smss,R.string.aa_light,R.string.aa_manager,R.string.aa_mos;将适配器与图标和文字进行连接gv=(GridView)findViewById(R.id.GridView_aa);/定义一个GridView对象 /*使用自定义的AAGridViewAdapter设置GridView里面的Item内容*/ AAGridViewAdapter gv_adapter=new AAGridViewAdapter(this,items,icons); gv.setAdapter(gv_adap

34、ter);声明一个click点击事件,用于用户点击相应图标进入对应的功能模块,因为每个GridView都有一个position,我们可以用这个变量辨别用户单击的是哪个图标:public void onItemClick(AdapterView parent, View v, int position,long arg3) Intent intent=new Intent();switch(position)case 0:/进入短信群发intent.setClass(AA.this,Smss.class);startActivity(intent);break;case 1:/进入手电筒inte

35、nt.setClass(AA.this,Light.class);startActivity(intent);break;case 2:/进入通信管家intent.setClass(AA.this,Manager.class);startActivity(intent);break;case 3:/进入电蚊香intent.setClass(AA.this,Mos.class);startActivity(intent);break;default:break;主界面的显示部分到此结束,效果如图4.1:图4.1主界面的效果图在主界面内建立一个“关于”对话窗口,按MENU键打开,里面存放软件的信息

36、。先声明一个MENU菜单:public boolean onCreateOptionsMenu(Menu menu) / TODO 等待其他选项加入menu.add(0, 0, 0, R.string.str_about);return super.onCreateOptionsMenu(menu);建立点击事件,每个点击对象都有一个ID,在此只建立一个MENU对象,当点击后打开关于对话窗口:public boolean onOptionsItemSelected(MenuItem item) / TODO 等待其他选项动作加入super.onOptionsItemSelected(item)

37、;switch(item.getItemId()case 0:helpDialog();/在此调用“关于”对话窗口break;return true;对话窗口的实现很简单,实例化一个AlertDialog对象即可:private void helpDialog()new AlertDialog.Builder(this).setTitle(R.string.str_about).setMessage(R.string.app_about).setPositiveButton(R.string.str_ok,new DialogInterface.OnClickListener()public

38、void onClick(DialogInterface arg0, int arg1) ).show();显示效果如图4.2所示:图4.2关于对话框的显示需要注意的是,本程序的文本显示内容,如以上代码中的“R.string.str_about”均存放在res/values/strings.xml文件里,这样做的好处是便于更改文字内容,可方便实现语言的转换。当然,目前只有中文,可根据需要,只要将该文件里的中文翻译为其他语言即可更改为另一个语言版本的软件。4.2短信群发模块实现短信群发功能分一下几个部分实现:主界面部分,添加联系人,联系人称谓的删除和修改,短信群发系统,插入联系人称谓,定时服务系

39、统。此部分的主要功能是群发短信并可由用户自定义是否发送称谓,也可选择定时发送,可实现定时发送与即时发送互不影响。短信群发的主界面此功能模块界面实现的主要难点在于listview的重写方法,listview是以可滚动列表的形式显示固定格式的内容,在此模块中,用以显示已选好的联系人姓名。首先是界面布局,是以相对布局(RelativeLayout)实现的。之所以采用这种布局,是为了符合各个屏幕的分辨率,不会因为屏幕的大小而使其内容的位置改变,符合大众化的需求。代码在Smss.xml中:ToggleButtonandroid:layout_alignParentRight=trueandroid:la

40、yout_alignParentTop=true/Buttonandroid:layout_alignParentTop=trueandroid:layout_alignParentLeft=true/ListView 所在的部分在“选择联系人”与“信息发送文本框”之间,scrollbar=“vertical”表示以垂直方式陈列: 几乎所有的自定义ListView都要使用适配器定义格式,在此也不例外,文件为SmssAdapter.java。与之前的适配器建立步骤一样,首先建立适配器布局文件,名为smslv.xml,同样采用相对布局,格式为并列的两个TextView: 下面就要定义适配器,继承系

41、统的SimpleAdapter类,引用上面提到的布局格式,代码写在SmssAdapter.java文件中:public View getView(int position, View convertView, ViewGroup parent) if (convertView = null) convertView = mInflater.inflate(R.layout.smslv, null);TextView tN = (TextView) convertView.findViewById(R.id.txt_smss_name);tN.setText(String) mList.get(

42、position).get(SELECTED_NAME);TextView tR = (TextView) convertView.findViewById(R.id.txt_smss_report);tR.setText(String) mList.get(position).get(SEND_REPORT);return convertView;此时短信群发界面的已选择联系人列表建立完成了,这个ListView中的内容就是从选择联系人界面选择的联系人姓名。因为先要进入子页面选择联系人,而后返回父窗体时显示内容,所以用startActivityForResult抛出,用此方法返回父窗体就会执

43、行onActivityResult()方法:startActivityForResult(intent,0);protected void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data);listView = (ListView)findViewById(R.id.smslv);switch(resultCode)case RESULT_OK:default:break;此模式的原理是子页面将选择的内容存入Ar

44、rayListExtra空间的变量中,然后用getStringArrayListExtra将内容取出,子页面存入方法在接下来的部分中介绍,以下为父页面取出记录的内容,记录为所选的用户名和相应的电话号码,取出后将内容分别存放在arraylist变量name和phone中:name=data.getStringArrayListExtra(str_name);phone=data.getStringArrayListExtra(str_phone);name.trimToSize();/节省资源开销phone.trimToSize();将用来显示的arraylist(这里实例化为al1)变量清空,

45、以防重复显示:al1.clear();定义哈希map,此格式变量以键值对的形式存储内容,下面用循环的方式分别将选出的联系人姓名添加到al1中:for(int i=0;iname.size();i+)/显示选择的联系人姓名于列表ListView中Map map = new HashMap();map.put(SELECTED_NAME, name.get(i);al1.add(map);将listview与它的适配器进行关联:String from = SELECTED_NAME, SEND_REPORT ; int to = R.id.txt_smss_name, R.id.txt_smss_

46、report ; mSmssAdapter=new SmssAdapter(this, al1, R.layout.smslv, from, to); listView.setAdapter(mSmssAdapter);break;这样就把所选的内容逐条显示在listview中了。主界面效果及选择联系人后的效果如图4.3所示: 图4.3短信群发主界面。左图为未选择联系人界面,右图为选择联系人返回后的界面选择联系人当在短信群发主页面点击“选择联系人”按钮时,就会进入选择联系人的界面,启动此页面继承的ActivitySmssContact,此Activity在SmssContact.java中实现

47、。首先实现进入选择联系人页面,在androidSDK中要使一个Activity启动另一个Activity的就是利用intent方法,格式如下:Intent intent=new Intent();intent.setClass(父类Activity,子类Activity);startActivityForResult(intent,0); 在Smss(联系人主界面)的activity中,用如下方法将活动抛给SmssContact类,此方法写在“选择联系人”的点击事件中。当点击“选择联系人”后,系统就会读取联系人数据,然后将联系人显示与listview中,在这个过程中,系统会出现“假死”状态,所

48、以,应在这期间设置一个dialog窗口,用来提示用户正在读取数据,而不是死机现象,这样更体现出人性化的设计思想理念。首先定义dialog的标题和内容:final CharSequence strDialogTitle=getString(R.string.dialog_smss_readcontacttitle);final CharSequence strDialogBody=getString(R.string.dialog_smss_readcontactbody);然后显示dialog:/显示Dialogsendmsg_Dialog=ProgressDialog.show(Smss.t

49、his,strDialogTitle,strDialogBody,true);在显示dialog后,启动一个线程来调用选择联系人的Activity,当完成对选择联系人窗口的启动后,dialog销毁,代码如下: new Thread(new Runnable()public void run() /new一个Intent对象,并制定classIntent intent=new Intent();intent.setClass(Smss.this,SmssContact.class);startActivityForResult(intent,0);/此函数可以返回被叫activity传来的数据s

50、endmsg_Dialog.dismiss();).start();图4.4读取联系人时的dialog完成上面的步骤就进入“选择联系人”页面,利用游标cursor读取手机里的联系人,方法如下:/取得电话本中开始一项的光标 Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext() Map map = new HashMap(); / 取得联系人名字 int nameFieldColumnIndex = cursor.getC

51、olumnIndex(PhoneLookup.DISPLAY_NAME); String name = cursor.getString(nameFieldColumnIndex); / 取得联系人ID String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID);在android2系列以后,每个联系人的电话可存放多个,所以要再定义一个游标来循环读取电话号码:Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phon

52、e.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + = + contactId, null, null); map.put(NAME, name);/ 取得电话号码(可能存在多个号码),在此处无用while (phone.moveToNext() String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); map.put(PHONE_NUMBER, strPhoneNumber);al.add(map);phone.close(); /关闭游标 cursor.close();/关闭游标本页面的格式与之前的设置类似,都是相对布局格式,在此就不必赘述,唯一不同的是listview的格式有所改变(写在smscontact.xml文件中):

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!