1、Android平台为开发人员童工了大量的实用库及工具,可以让开发人员快速的创建自己的应用3。2.3 Android系统的现状及展望Android系统目前的发展十分迅速,在国内外,Android都有成熟的消费者,Android社区也十分红火,全球各大厂商和运营商也纷纷加入了Android的阵营,包括美国的摩托罗拉(MOTOROLA)、韩国的三星(SAMSUNG)、英国的索尼爱立信(Sony Ericsson)、中国台湾HTC、中国移动、中国联通、中兴通讯、华为通讯、联想等大企业。除开手机外,各大厂家也陆续推出了采用Android系统的MID(Mobile Internet Devices)产品。
2、根据ComScore公司11年第一季度的移动互联网市场研究报告中显示,11年2月份Android的市场份额增33%,位居榜首,RIM、苹果分别以28.9%和25.2%的移动市场占有率紧随其后11,如图1:图1 各厂商移动互联网市场占有率虽然Android初出茅庐,论个头还不如苹果、RIM,开放这个趋势的力量使得这颗的新星足够明亮,有媒体预测Android的市场占有率将在2012年达到50%并在2016年确定其移动互联网市场的霸主地位,就目前Android的发展趋势来看,这并非一个不可能完成的任务。2.4 开发环境的安装与配置2.4.1 操作系统及准备工作Android的开发环境在操作系统上并没
3、有太大的限制,它可以使用Windows XP及其以上版本、MAC OS、Linux等操作系统,在该程序的开发中,我选择了Windows XP作为开发操作系统。Android是以Java语言作为开发语言,官方推荐使用Eclipse作为开发软件,在搭建开发环境前必须准备JDK、Eclipse、Android SDK, extras, installer_r20.0.3-windows.exe, platform-tools_windows, ADTPlugin等软件,JDK与Eclipse都可以在其官方网站上下载到其最新版本,Android SDK则需要通过Android SDK Setup来下载
4、安装1。2.4.2开发环境的安装安装JAVA运行环境在“下载和安装Eclipse在Eclipse的官方网站“http:/www.eclipse.org/downloads”下载最新版本的“Eclipse IDE for Java Developers”下载完毕后解压缩即可使用,无需安装。安装Android SDKAndroid SDK因为原下载地址失效,只能通过Android SDK Setup这个工具来下载安装,此工具可以在通过“r04-windows.zip”该网址获取。下载完成后解压缩,运行其内的“SDK Setup.exe”即可自动检测下载Android SDK,如图2所示:图2 An
5、droid SDK Setup安装Eclipse的Android插件使用Eclipse作为开发开发工具必须要安装Android Development Tools(ADT)的外挂,其安装步骤如下:启动Eclipse后,选择“Help”“Install New Software”打开“Install”窗口;点击窗口中的“Add”按钮,在“Add Repository”窗口中输入如图3所示信息:图3 Add Reponsitory点击OK后,“Install”列表中会多出一项“Developer Tools”,勾选后点击“Next”既开始下载ADT,下载完成后按软件提示操作即可完成安装ADT。如图
6、4所示:图4 安装ADT应用SDK到Eclipse选择“Window”“Preferences”在“Preferences”窗口的左边选中“Android”,在右边点击“Browse”选择Android SDK所在目录作为SDK Location,如图5所示:图5 应用SDK到Eclipse3 系统分析3.1 可行性分析在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间都不固定,一周内极少
7、会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生。基于这些问题,有必要设计一款具有课程提醒功能的手机课表程序,配合上可以让用户自定义上课时间以及地点的功能,从而避免遗忘上课的事情出现。3.2 需求分析手机电子课表及日记的管理在手机应用程序中并不常见,一般在手机上较为常见的日程提醒程序无法实现自由设置校历,重复提醒等功能。经过对周边同学的调查研究,普遍认为这款软件方便实用,其主要功能如下: 添加课程信息; 删除课程信息; 设置每周时间; 能依据校历区分课程是第几周; 新建或删除日记功能;4 系统设计4.
8、1 概要设计从程序流程来分,用户在第一次进入程序时会进入设置界面,设置一些基本的配置信息以方便数据库管理,然后进入添加课程界面,进行添加课程操作。添加课程除了UI展示以外其他的方式都是在操作数据库,在程序中使用course_new_activity,course_set_activity以实现新建课程功能,按周查询功能,第几周功能等。在程序主界面使用用course_activity.java展示记录,从Diary_activity, DiaryEditActivity类中可以新建或删除日记信息,并在主界面中显示。程序的配置信息主要存在DbAdapter中,该信息在数据显示时读取必要的配置信息,
9、比如读取用户选择当天的日期就可以计算出第几周星期几,再通过日期在数据表中查询。添加课程信息,创建日记,设置每周时间。这样在按钮监听函数中监听系统时间变化,用来实现课表及日记创建功能,如图6所示:图6 程序数据流图4.2 程序的模块划分该程序主要实现课程的创建添加删除,设置等以及日记的新建删除等,主要程序模块划分如下: 模块负责人模块功能描述廉晓娟课程及日记的管理主界面控制常江新建添加删除课程及每周的设置李玲创建和删除日记功能李涛登录及帮助页面的界面及按钮设置常鹏飞DbAdapter数据库表的控制4.3 程序中的主要类4.3.1 course_activity类该类为整个应用的主Activity
10、, 显示课程表的主界面2。其主要方法如下: onCreate:Activity主要重写方法之一,实现程序初始化和界面展示; updateCourseView:Activity重写方法之一,实现在当前是第几周的刷新界面; onCreateOptionMenu:实现Option菜单的创建; onMenuItemSeleted:实现菜单项的点击事件响应; get_interval_weeks:从数据库中获取当天是第几周的信息; onActivityResult: 设置第一周和添加新课程信息的回复;界面设计方面通过RelativeLayout实现布局,使用了TextView,ImageButton课程
11、列表通过ListView实现界面展示。该类通过继承ListActivity类,用来显示ListView中的数据并实现对ListView上ImageView控件点击的统一响应。4.3.2 course_new_activity类和course_set_activity类course_new_activity类为实现添加课程界面的Activity,主要实现由用户选择和输入课程信息,并将所有的课程信息添加到数据库中。主要方法如下: 新建课程信息; SetDefaultData: 设置初始化时默认的数据; SaveData: 将添加的课程保存进数据库中; onItemClick: 设置课程输入按钮;
12、OnClickListener: 按钮监听函数; onClick: 实现button点击事件的响应; course_set_activity继承Activity类;4.3.3 DbAdapter类该类为自定义的重要的数据库处理类,用来管理数据库,对数据库的所有操作都封装在这个类中,实现数据封装。主要方法如下: Databse_create:创建diary表; Databse_create_course:创建course表; class DatabaseHelper:数据库类 getAllNotes():得到所有日记 deleteCourse:删除一个课程 getCourse: 获得所有课程记录
13、4.3.4 Diary_activity类和DiaryEditActivity类该类实现日记的创建和删除。 updateListView():更新当前的listacvitity; onCreateOptionsMenu:创建一个菜单; onMenuItemSelected:菜单选择 savedInstanceState:保存日记 deleteDiary:删除日记 DiaryEditActivity: 编辑日记5 系统实现在完成系统设计以后,即可在Android虚拟机中运行程序,运行效果如下:图7 软件设置界面软件设置界面,该界面为用户第一次进入程序所显示的界面,往后的使用中,用户可以通过“Me
14、nu”“设置”的操作步骤来进入该界面。在此界面,用户可以设置第一周开始时间,新建课程信息,如图8所示:图8 课程管理界面设置本学期的第一周的周一,该界面由点击软件设置界面中的“本学期第一周的周一”后的日期弹出,在此界面可以设置当前学期校历的第一周的初始时间,如图9所示:图9 设置本学期的第一周的周一添加课程界面,该界面通过“Menu”“课程管理”“新建”操作进入,在该界面用户可以根据自己的需求来添加课程,如图10所示:图10 添加课程添加日记界面,该界面通过“Menu”“日记管理”“menu”“新建”操作进入,在此界面用户可以添加一个日记提醒,如图11所示:图11 新建日记6 模块详细设计 主
15、要实现课程及日记的管理主界面的实现功能:通过course_activity类,该类为整个应用的主Activity,主要方法有onCreate,updateCourseView,onCreateOptionMenu,onMenuItemSeleted,get_interval_weeks 等 。主要代码:public class course_activity extends ListActivity /菜单选项 public static final int NEW = Menu.FIRST; public static final int SET = Menu.FIRST + 1; publ
16、ic static final int DELETE = Menu.FIRST + 2; public static final int HELP = Menu.FIRST + 3; /传值确认的关键字 private static final int REQUEST_SET = 0; private static final int REQUEST_NEW = 1; /默认的第一周开始时间 int first_year = 2010; int first_month = 9; int first_day = 1; Date start_date = new Date(first_year,f
17、irst_month,first_day); /新建的课程信息 String course_name = ; String week_start = String week_end = String course_index1 = String course_place = String week_index = /当前日期 Calendar c = Calendar.getInstance(); int now_year = c.get(Calendar.YEAR); int now_month = c.get(Calendar.MONTH); int now_day = c.get(Cal
18、endar.DAY_OF_MONTH); Date now_date = new Date(now_year,now_month,now_day); /现在是第几周 int interval_weeks = 1; /数据库操作 private DbAdapter mDbHelper; private Cursor mCourseCursor; /* (non-Javadoc) * see android.app.Activity#onCreate(android.os.Bundle) */ Override protected void onCreate(Bundle savedInstanc
19、eState) / TODO Auto-generated method stub super.onCreate(savedInstanceState); setTitle(本周课程信息); setContentView(R.layout.course_activity); mDbHelper = new DbAdapter(this); updateCourseView(); private void updateCourseView() Log.e(done, getcourse mDbHelper.open(); mCourseCursor = mDbHelper.getAllCours
20、es(interval_weeks); Toast.makeText(course_activity.this, 当前是第+interval_weeks +周,点击menu设置, Toast.LENGTH_SHORT).show();weeks, +interval_weeks);donegetcourse第周 +课程信息 startManagingCursor(mCourseCursor); String from = new String DbAdapter.KEY_NAME, DbAdapter.KEY_PLACE, DbAdapter.KEY_INDEX, DbAdapter.KEY_
21、WEEK_INDEX; int to = new int R.id.item_name, R.id.item_place, R.id.item_index, R.id.item_week_index ; SimpleCursorAdapter courses = new SimpleCursorAdapter(this, R.layout.course_list_item, mCourseCursor, from, to); setListAdapter(courses); mDbHelper.closeclose(); * see android.app.Activity#onCreateO
22、ptionsMenu(android.view.Menu) public boolean onCreateOptionsMenu(Menu menu) super.onCreateOptionsMenu(menu); menu.add(0, NEW, 0, 新建).setIcon(R.drawable.new_course); menu.add(0, SET, 0, 设置).setIcon(R.drawable.setting); menu.add(0, DELETE, 0, 删除).setIcon(R.drawable.delete); menu.add(0, HELP, 0, 帮助).se
23、tIcon(R.drawable.helps); return true; * see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)/实现菜单项的点击事件响应 public boolean onMenuItemSelected(int featureId, MenuItem item) switch (item.getItemId() case HELP: Intent help_intent = new Intent(); help_intent.setClass(course_activity.this,
24、 help_activity.class); startActivity(help_intent); return true; case NEW: Intent new_course_intent = new Intent(); new_course_intent.setClass(course_activity.this, course_new_activity.class); startActivityForResult(new_course_intent, REQUEST_NEW); case SET: Intent set_intent = new Intent(); set_inte
25、nt.setClass(course_activity.this, course_set_activity.class); startActivityForResult(set_intent, REQUEST_SET); case DELETE: mDbHelper.open(); mDbHelper.deleteCourse(getListView().getSelectedItemId(); mDbHelper.closeclose(); updateCourseView(); return true; return super.onOptionsItemSelected(item); /得到现在是第几周 private int get_interval_weeks(Date ds, Date
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1