基于Android平台的24点游戏设计与实现需求分析

更新时间:2024-06-25 03:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Android平台的24点游戏设计与实现

Android平台24点游戏设计与实现

摘要

随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来。目前国内最常见的移动开发平台有Symbian,iPhone,Windows Phone以及当下正在逐步兴起的Android,目前为止国内已经有很多Android系统的用户。

在80年代流行一种数字游戏,我们称之为“24点”。用扑克牌实现24点,就是从扑克牌中任意抽出4张(数字表示为1-13),用加、减、乘、除的方法是结果成为24。程序实现由系统随机产生4张牌,玩家输入表达式,然后判断表达式是否合法且等于24。

借鉴网上的多种游戏,我用Android手机平台开发设计了24点游戏,并在eclipse模拟平台环境下实现基本功能的游戏程序(类似于纸牌游戏)。其开发开发包括较多的计算机技术(多媒体技术、程序设计、数据结构、计算机网络、数据库技术、人工智能和软件工程等),作为本科毕业设计选题,具有较强的综合性,达到综合锻炼所学知识的价值。

关键词:Android eclipse 手机模拟平台 24点游戏

Abstract: With the growing popularity of mobile devices and mobile device hardware upgrade, mobile devices become more perfect system platform for mobile devices are increasingly picking up. At present, the most common mobile development platform for the Symbian, the iPhone, Windows Phone, as well as the current is gradually emerging Android, so far the country has a lot of users of the Android system.

In the 1980s a popular numbers game, which we call the \point\24 points, with playing cards and poker in any out of four (numerals 1-13), with addition, subtraction, multiplication, in addition to the methods, results become 24. The program randomly generated by the system of four card players enter the expression, and then determine the expression is valid and equal to 24.

Learn from the online variety of games, I use the Android mobile platform designed a 24-point game, eclipse simulation platform environment to achieve the basic functions of the game program (similar to a card game). Development to develop more computer technology (multimedia technology, programming, data structures, computer networking, database technology, artificial intelligence and software engineering), as a graduate design topics, with a strong integrated to achieve a comprehensive exercise learned the value of knowledge.

Key words: Android eclipse phone simulation platform 24-point game

目 录

=

1 绪论

1.1引言

随着3G时代的来临和高性能手机的普及,单一的通信功能已经不能满足人们对手机的需求,人们对高质量的、丰富的手机游戏的需求正在不断增强。目前,手机的开发平台主要包括苹果的IOS、Google的Android、微软的Win7和诺基亚的Symbian等,其中Google的Android操作系统因其稳定性、开发性、低成本等特点,受到广大手机游戏开发者关注。Android系统作为最近几年才涌现的智能手机操作系统,Android操作系统无疑是一个新手,多家智能手机制造商不断推出基于Android操作系统的智能手机,使Android操作系统的市场份额以及影响力与日俱增,其前景正被越来越多的人看好。本文侧重于Android的应用软件开发。主要的研究内容是Android操作系统平台下的游戏软件开发应用。本文从实际的开发案例出发,从一个开发者的角度,独立的从游戏需求分析、游戏功能设计、游戏开发设计、游戏运行测试等角度来进行分析和阐述。最终完成了”24点游戏”的移植和开发,重点在于实用性和应用性。

本文的内容主要有以下五个方面:

1、智能手机研究现状以及几种操作系统的研究分析,Google Android系统平台和其他系统平台的比较。

2、系统分析阐述,包括主要研究内容、研究目标等其他性能分析

3、Android操作系统以及开发平台的相关研究,主要是Windows开发平台下Android开发平台的搭建。

4、基于Android操作系统的“24点游戏”的设计,包括模块设计、界面设计及流程图等内容。

5、“24点游戏”程序开发,包含文件结构、关键代码等。

6、”24点游戏”运行的测试,在真实智能手机上的安装、运行、卸载等相关测试。 7、论文的总结和对未来的展望。

本文解决了风行一时的经典“24点游戏”在Android系统下的开发问题。通过对Android的详细介绍,开发人员可以从中了解到其自身的作用,两三年来,随着Android手机的诞生,其无可替代的灵活性与轻便性致使Android手机成为智能手机市场的又一

=

亮点,它的前景无可限量,必将在我们以后的生活中发挥着重要的作用。

1.2文献综述

1.2.1国内外研究现状述评和发展趋势

目前国外各软硬件厂商已经推出过多款手机操作系统,下面简单介绍一下现主流手机操作系统。

现阶段使用较广泛大家也相对熟悉的手机操作系统是由诺基亚公司主导推出的Symbian操作系统。Symbian是为手机而设计的操作系统,它是一个实时性,多任务的纯32位嵌入式的操作系统,具有低能耗,内存占用较少等特点。现在流行的Symbian系统有以下四个版本,分为S40,S60(第二版),S60(第三版)和S60(第五版)为触摸手机版本。

iOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPod touch以及iPad使用。就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。iOS的系统架构分为四个层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touch layer)。系统操作占用大概240MB的存储器空间

Windows Mobile 系列操作系统是从微软计算机的Windows操作系统演化而来的。Windows Mobile系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件配置(如内存、储存卡容量等)上也比采用其它操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。

PalmOS属于Palm公司开发,是一种32位的嵌入式操作系统,是一套专门为掌上电脑编写的操作系统,是一种轻量级、比较开放的操作系统,占用的内存非常小。现在多用Paml公司生产的手机上。该系统允许用户在其基础上编写和修改相关软件,使支持的应用程序更加丰富多彩。Palm系统与其他手机系统相比在其它方面也还存在一些不足,如Palm操作系统本身不具有录音、MP3播放功能等,但是可以通过加入第三方软件或硬件设备来实现。

相对国外手机系统百花齐放的局面,国内手机操作系统则处于刚起步的阶段。目前国内还没有自主研发并商品化的手机操作系统。当然近些年来国内企业和我国政府在这方也投入了大量的人力和物力。同时也取得了一定成果。

=

在2009年8月,由中国移动所主导开发OPhone平台面世。OPhone平台采用开源的Linux作为系统内核,借鉴并兼容Android平台,集成灵活高效的Java应用框架,充分借鉴当下主流手机操作系统所具有的良好用户体验,提供了一套完整的电话解决方案和各类移动数据业务解决方案。

据Gartner最新数据显示,2010年第二、三季度全球智能手机销售继续大幅增长,其中第三季度安卓占全球智能手机市场的25.5%,仅次于塞班,成为第二大智能手机系统。2010第二、三季度与去年同期相比,增度分别是15.4%及22%,增势迅猛。而塞班系统较09年的市场份额,尽管终端销量有大幅度提升,但增势下滑10%,形势非常严峻。其他操作系统的表现则要平稳很多。

图1-1手机系统比较

安卓是首款开源代码的操作系统,采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改安卓的SDK软件包。系统的开源性使其具有良好的拓展性,一方面,为众多移动应用开发者提供了良好的系统性平台,有利于移动应用的集合;另一方面,终端厂商可以针对自身的特殊需要“定制化开发”。与此相比,尽管2010年2月,塞班基本完成开源工作,但由于代码臃肿,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。

据Informa预测,2012年,安卓手机销量将超过诺基亚塞班手机,届时安卓将成为全球最大的智能手机平台。谷歌表示目前安卓手机每日平均激活量为20万部,销售速度加速上涨。

我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实。安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌

=

值得众多厂商学习的地方。此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。

1.2.2选题的意义和价值

随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的娱乐游戏对人们的业余生活是不可必缺的,它给人们的业余生活添加了很多乐趣。我用Android手机平台开发设计了24点游戏,使其在android手机系统风行的今天更满足人们对手机游戏的追求。

同时,作为本科毕业论文设计,其具有较强的综合性,游戏开发过程中运用多种计算机技术(多媒体技术、程序设计、数据结构、计算机网络、数据库技术、人工智能和软件工程等)。在进行毕业设计的整个过程,学习或运用的不仅仅是四年的学校知识,更多的来自于前沿的学术理论思想,与前沿科技接轨,达到综合锻炼所学知识的价值。

1.2.3研究内容

根据近段时间学习Android平台游戏设计经验和参阅大量关于Android运用文献,结合现有技术,基于游戏动画设计的基本原理。设计一个基于Android平台24点的游戏应用。主要包含随机发牌模块、输入求解表达式模块、判断求解表达式正误、计算表达式模块和判断表达式的正误模块。

1.2.4研究方案和技术路线

利用网络查阅国内外Android系统及Android平台开发、游戏设计原理等相关资料和浏览大量的期刊与文献,进行深入分析与研究,借鉴其开发经验和经典开发案例。同时,了解国内外Android系统开发者社区,与前沿Android开发者接触交流,获取更多信息与技术。

Android是一个开源的系统,它底层是基于Linux的操作系统,本文拟采用Android开源系统技术,利用Java语言和eclipse模拟平台进行24点游戏的编写,实现模块化结构,独立开发各个功能模块,尽量降低各模块之间的耦合,在各个功能模块实现的基础上构建灵活方便的界面。

=

2 系统分析

2.1 研究目标

我所做的基于Android智能手机的平台的24点游戏设计和实现,采用java语言作为编程语言,用eclipse作为开发平台,android_sdk作为运行环境,,结合实际用户的实际需求,实现24点游戏的AI算法,即相关的界面美化。并且,需避免在市场常见24点重算法界面不友好的实现,给予用户更好地操作感受,同时,在程序结构上需要应用充分采用面向对象的思想,以便后期对游戏功能的增加,以及对于在其他嵌入式设备开发提供方便。

当看着自己把功能一个个实现,把错误一个个调试的这个过程,都会收获很多东西,成为今后学习中一笔不可或缺的财富。也让我明白:真正的“好程序”不只是运行了,还要满足一大堆条件的(可读性、健壮性、可维护性、高效性)等等。

2.2 基本功能描述

24点游戏是一种是用一种使用扑克牌进行的益智游戏,游戏内容是:从一副扑克牌中抽去大小王后剩下52张,任意抽取4张牌,把牌面上的数运用加、减、乘、除和括号等进行运算得出24点。每张牌都必须使用一次,但不能重复使用。在不同版本中,对J、Q和K的处理有细微的差异。一个常见的版本是把J、Q和K去除,或当成10处理;还有一个版本是把J、Q和K对应表示为11、12和13.本次设计采用将J表示11、Q表示12和K表示13,使4张牌在1-13这13张牌中随机抽取。 2.2.1系统功能用例描述 2.2.2 功能需求(时序图)分析 2.2.3输入输出要求

输入的运输符只能是+、-、*、/、(、)六个,输入的数字为程序随机产生的四个数,而且每一个数都只能用一次。

2.3 性能分析

模拟平台启动速度慢、程序响应速度快、信息处理速度快。

=

2.4运行环境需求

操作系统:Android手机基于Linus操作系统 支持环境:Android 1.5 - 2.3版本 开发环境:Eclipse 3.5 ADT 0.95

2.5小结

本软件是一个Apk应用程序,启动程序后可进行开始游戏选项、排行榜选项和游戏模式选项,可以通过按钮选择进行不同选择。进入游戏主界面后随机生成四张数字卡片,并在按钮上显示随机数字。用户通过数字和运算符组成24点的正确解与错误解,同时计时开始。用户输入后点击确定按钮如正确可提示信息“恭喜你,回答正确”,输入错误信息后则提示“很遗憾,答案不正确”,用户也可选择“查看答案”或“无答案”按钮或进入下一题。

从上面的描述中可以基本了解软件的功能需求: (1) 启动Apk应用程序;

(2) 选择游戏模式:默认模式为争分夺秒,可选择题海无边;

(3) 显示界面:通过随机生成数字并在按钮显示当前随机数字,且有运算符和其它按钮用户输入表达式后求解并显示正确与错误

(4) 详细界面:用户输入表达式后求解并显示正确与错误或进入下一题

=

4 程序设计

4.1 程序首页界面设计

根据需求分析可以知道,应用程序首页应包含三个主要的用户模块界面,这里需要进一步分析每个用户模块界面中应该包括哪些显示内容。

在“开始游戏”按钮中,则直接进入游戏主界面。在“英雄榜”中,显示在不同游戏模式下当前的具体数据,主要包括争分夺秒模式下名次、正确题数及创建时间;题海无边模式下名次、答题用时和创建时间。

4.2 程序模块设计

从功能需求上分析可以看出,整个应用程序应划分为4个模块,分别是程序启动、用户界面、后台服务和数据库适配器,各模块之间的关系如图4-1所示。

24点游戏算法 随机发牌 输入求解表达式 判断表达式是否合法 计算表达式 判断表达式正误

图4-1系统模块

从模块结构图中不难看出,后台服务是整个应用程序的核心,主要是“数据获取模块”,负责随机产生数字。后台服务在程序启动时就由AppWidgetProvider启动,也可由用户界面通过startService()进行启动,启动后的后台服务将一直保持运行状态。

4.3流程图

4.3.124点游戏算法流程图

=

启动程序不符合判断输入表达式是否符合要求符合否判断表达式的结果是否为24是是输出“你输了”输出“你赢了”是否继续否结束

图4-2算法流程图

4.3.2后缀表达式转换的流程图

=

开始*p!=’\\0是否将算术表达式转换为后缀表达将op中未扫描的字符存到postexp中结束

图4-3后缀表达式转换的流程图

4.3.3 计算后缀表达式的流程图

开始*q!=’\\0是否计算后缀表达结束

图4-4计算后缀表达式的流程图

=

5 程序开发

5.1 文件结构与用途

在程序开发阶段,首先确定“Android平台24点”的工程名为No.24,据程序模块设计的内容,建立No.24工程。No.24工程源代码的结构如图5-1所示。

图5-1No.24工程的源代码文件

为了使源代码文件的结构更加清晰,No.24工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以及说明如表5.1所示。

=

表5.1 No.24工程的文件用途说明

包 名 称 Cn.edu.fjut.no24.activty Cn.edu.fjut.no24.activity Cn.edu.fjut.no24.activity Cn.edu.fjut.no24.service Cn.edu.fjut.no24.date Cn.edu.fjut.no24.impl Cn.edu.fjut.no24.domain Cn.edu.fjut.no24.util Cn.edu.fjut.no24.util Cn.edu.fjut.no24.util 文 件 名 appActivity.java MainActivity.java RankActivity.java GameService.java RankDAO.java ForecastWidget.java WebServiceHelper.java computeUtil.java Databasehelper.java DateUtil.java 说 明 “程序首页”的Activity “程序主页面”的Activity “排行榜”的Activity 后台进程内服务 后台时间服务 实现AppWidget组件,并启动服务 网络数据获取模块 计算表达式工具类 数据库访问工具类 日期工具类 Android的资源文件保存在/res的子目录中。其中、/res/anim目录中保存的是产生动画效果的XML文件,/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和颜色的文件,/res/xml目录中保存的是XML格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表5.2:

=

表5.2 资源文件名称与用途

资源目录 文 件 说 明 rotatecurrentweather.xml 渐变透明度动画效果 translatecloudleft.xml translatecloudright.xml translaterain01.xml Anim translaterain02.xml translaterain03.xml translaterain04.xml translaterain05.xml Drawable-hdpl drawable Drawable-ldpl Drawable-mdpi app.xml Main_bak.xml layout Main.xml Rank_time.xml Rank.xml values Xml color.xml strings.xml weatherwidget.xml 程序首页页面布局 程序显示主页面页面的布局 “详细显示”页面上边的显示当前的布局 详细显示”页面下布局 “详细显示”页面下边的显示的布局 保存颜色的XML文件 保存字符串的XML的文件 AppWidget的属性文件 这个文件夹里是工程里所用的图片,如有表示随机卡片、数字等,此处不赘述。 画面转换位置移动动画效果(从左至右) 画面转换位置移动动画效果(从右至左) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 5.2数据提供者

数据提供者ForecastProvider继承ContentProvider,是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同的应用程序之间是不能够直接进行访问的。而CotentProvider为程序员提供了较高级的数据共享方法,应用程序可以指定需要共享的数据,而其他应用程序则可以在不知数据来源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。

1.程序首页代码

=

(1)public class AppActivity extends Activity implements OnClickListener{ (2)private final static String TAG = \(3)private Button btnStartGame; //开始游戏 (4)private Button btnRankList; //游戏排行 (5)private Spinner spiGameModel; //游戏模式 (6)private String gameModel; //游戏模式值 (7)public void onCreate(Bundle savedInstanceState) { (8)super.onCreate(savedInstanceState); (9)setContentView(R.layout.app);

(10)//获取开始游戏按钮并为其注册监听事件

(11)btnStartGame = (Button)findViewById(R.id.btnStartGame); (12)btnStartGame.setOnClickListener(this); (13)//获取游戏排行按钮并为其注册监听事件

(14)btnRankList = (Button)findViewById(R.id.btnRankList); (15)btnRankList.setOnClickListener(this); (16)//游戏模式下拉

(17)spiGameModel = (Spinner)findViewById(R.id.spiGameModel);

(18)ArrayAdapteradapter=ArrayAdapter.createFromResource( (19)this,R.array.gameModel, android.R.layout.simple_spinner_item); (20)adapter.setDropDownViewResouce(android.R.layout.simple_spinner_dropdown_item);

(21)spiGameModel.setAdapter(adapter);

(22)spiGameModel.setOnItemSelectedListener(newSpinner.OnItemSelectedListener() {

(23)public void onItemSelected(AdapterView arg0, View arg1, (24)int arg2, long arg3) { (25)//获取游戏模式

(26)gameModel = spiGameModel.getSelectedItem().toString(); (27)Log.i(TAG, \用户选择游戏模式[\(28)}

=

(29)public void onNothingSelected(AdapterView arg0) { (30)} (31)}); (32)}

(33)//按钮事件处理

(34)public void onClick(View v) { (35)switch (v.getId()) { (36)case R.id.btnStartGame: (37)startGame(); (38)break;

(39)case R.id.btnRankList: (40)viewRank(); (41)break; (42)default: (43)break; (44)} (45)}

(46)//开始游戏

(47)private void startGame(){ (48)Log.i(TAG,\开始新游戏...\

(49)Log.i(TAG, \选择的游戏模式 >> \(50)Intent intent = new Intent();

(51)intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); (52)intent.setClass(AppActivity.this, MainActivity.class); (53)intent.putExtra(\(54)this.startActivity(intent); (55)} (56)}

2.程序主界面代码

(1)public class MainActivity extends Activity implements OnClickListener{

=

(2)private final static String TAG = \

(3)private GameService gameService = new GameServiceImpl(); (4)private Game game; //运行中的游戏 (5)//private boolean changedCard = false;

(6)//private CalculateThread calThread; //计算题目答案线程 (7)private AnswerTime ansTimeThread; //计时线程 (8)private ControlCountDownTimer cdTimer; //倒计时器 (9)private InitTask initGameTask; //初始化游戏任务 (10)private CalculateTask calTask; //计算答案任务 (11)private ImageView firstCard; //第一张卡 (12)private ImageView secondCard;//第二张卡 (13)private ImageView thirdCard; //第三张卡 (14)private ImageView fourCard; //第四张卡 (15)private Button btnClear; //清空 (16)private Button btnSubmit; //确定 (17)private Button btnAnswer; //查看答案 (18)private Button btnNoAnswer; //无答案 (19)private Button btnNextSub; //下一题 (20)private Button btnFirstNum; //第一个随机数 (21)private Button btnSecondNum;//第二个随机数 (22)private Button btnThirdNum; //第三个随机数 (23)private Button btnFourNum; //第四个随机数 (24)private Button btnLeftBracket; //运算符左括号 (25)private Button btnRightBracket; //运算符右括号 (26)private Button btnAdd; //运算符加号 (27)private Button btnSubtract; //运算符减号 (28)private Button btnMultiply; //运算符乘号 (29)private Button btnDivide; //运算符除号

(30)private TableRow trRemainTime; //剩余时间行(控制其是否可见) (31)private TextView remainTime; //时间模式倒计时

=

(32)private TableRow trRemainSub; //剩余题目行(控制其是否可见) (33)private TextView remainSubject; //题目模式剩余题数 (34)private TextView wasteTime; //耗时 (35)private TextView rightSubject; //做对题数 (36)private TextView errorSubject; //做错题数 (37)private EditText inputExp; //表达式输入框

(38)private ProgressDialog progressDialog;//等待进度对话框 3.程序算法代码:

public class TwentyFour {

private static List exps = new ArrayList(); private final static char[] op={'+','-','*','/'}; public static List getExpression(Integer[] v){ exps.clear();

int[] nums = new int[]{v[0],v[1],v[2],v[3]}; evaluate(nums); return exps; }

private static void evaluate(int[] v){ for(int a=0;a<4;a++){ for(int b=0;b<4;b++){ if (a==b) continue; for (int c=0;c<4;c++){ if (a==c||b==c) continue; for (int d=0;d<4;d++){

if (a==d || b==d || c==d ) continue; check(v,new int[]{a,b,c,d}); } } } }

=

AppWidget一启动就会启动ForcastTimeService这个后台服务,此服务设置了每隔20秒刷新一次时间,“显示页面”通过这个后台服务获取系统时间从而显示。核心代码如下:

AlarmManager

alarmManager

=

(AlarmManager)getSystemService(Context.ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC_WAKEUP, now + updateMilis, pendingIntent);

至此,后台服务介绍完毕,最后还需要在AndroidManifest.xml文件中注册后台服务。

5.4 用户界面

在用户界面设计上,采用了AppWidget框架结构,提供直观的操作。整个用户界面风格简约、操作简便,用户体验将非常好。

5.4.1 程序入口类

程序运行需要以下四个步骤:

(1)定义Widget布局文件,此文件是res/layout/weather.xml,采用AbsoluteLayout方式进行布局需要注意的是在这个文件中所使用的组件必须是RemoteViews所支持的。

(2)定义Widget的基本属性文件,此文件是/res/xml/weatherwidget.xml。代码如下:

xmlns:android=http://schemas.android.com/apk/res/android android:initialLayout=\//Widget的布局文件

//在启动前首先要启动ConfigureActivity进行设置 android:configure=\ android:minWidth=\ //定义Widget组件的宽度

=

android:minHeight=\//定义Widget组件的高度 android:updatePeriodMillis=\> //更新的时间周期

(3)创建ForecastWidget.java类,此类继承自AppWidgetProvider,主要的功能有:获取需要更新的桌面小控件;启动获取天气预报信息的服务;启动时间信息的服务;更新桌面小控件显示内容;更新时间信息。核心代码如下:

public class ForecastWidget extends AppWidgetProvider {

@Override

void

onUpdate(Context

context,

AppWidgetManager

public

appWidgetManager,int[] appWidgetIds) {

super.onUpdate(context, appWidgetManager, appWidgetIds);

// 获取需要更新的桌面小控件

ForecastService.addWidgetIDs(appWidgetIds);

// 启动获取信息的服务

context.startService(new Intent(context, ForecastService.class));

// 启动时间信息的服务

context.startService(new Intent(context, ForecastTimeService.class));

}

//更新桌面小空间显示内容

public static RemoteViews updateViews(Context context, Uri uri) {

}

//更新时间信息

public static RemoteViews updateTime(Context context) {

}

(4)AppWidgetProvider对应一个receiver属性,需要更新AndroidManifest.xml。代码如下: