Java语言设计开题设计报告-基于Android手机平台的记事本设计.doc_第1页
Java语言设计开题设计报告-基于Android手机平台的记事本设计.doc_第2页
Java语言设计开题设计报告-基于Android手机平台的记事本设计.doc_第3页
Java语言设计开题设计报告-基于Android手机平台的记事本设计.doc_第4页
Java语言设计开题设计报告-基于Android手机平台的记事本设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言设计开题设计报告题目:基于Android手机平台的记事本设计系 名 计算机科学与技术 专 业 计算机应用技术 学 号 39 学生姓名 指导教师 2015年 05月 21日 目 录第一章引言.111 课题研究的目的112 课题研究的意义113 课题的可行性分析2第二章 开发环境的安装和配置32.1 开发包及其工具的介绍32.2 Android开发平台的搭建步骤3第三章程序的设计43.1 记事本组件的设计43.2 记事本逻辑设计43.3 记事本存储实现4第四章程序的开发124.1主activity的设计124.2 编译内容13第五章程序的测试14第六章 总结15参考文献16 1第一章 引言1.1课题研究的目的1.熟悉一下eclipse工具和安卓的环境配置及开发的过程2.熟练掌握java的组件如button,textview,listView,menu等组件的灵活应用3.熟练掌握安卓的一个关于数据保存的方式content providers。4.锻炼一下自己遇到问题,然后解决问题的能力。1.2 课题研究的意义 随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一.在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出.Android操作系统是google最具杀伤力的武器之一.苹果以其天才的创新,是的iphone在全球迅速拥有了数百万忠实的”粉丝”,而android作为第一个完整,开放,免费的手机平台,使开发者在为其开发程序时拥有更大的自由.与windows mobile ,symbian等厂商不同的是,android操作系统是免费向开发人员提供,这样可节省近三层得成本.我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力.android如此受到厂商与开发者的青睐,它的前景是一片光明的.国内对于安 卓这方面的市场还没有完全开发出来. 2只要我们努力学习android,对理想,对生活都会有很大的补益. 因此,开发这样一套很简单的记事本软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓记事本软件为例,谈谈其开发过程和所涉及到的问题及解决方法。本文中所做的主要工作如下:开发环境及开发工具的安装及配置阐述整个记事本的系统结构及工作原理; (3) 设计实现”添加新记事”,”编辑内容”,”删除当前记事”这三个主要的功能模块。 (4) 分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择。 (5)进行测试并分析结果。1.3 课题的可行性分析1.3.1 课题调研(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助。(2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度。(3)关于技术方面的难题,跟指导老师面谈。1.3.2 可行性分析 )技术可行性-本项目仅需要一台装有eclipse及配置好android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系统。 2) 经济可行性-由于本软件开发只有一个单个人,一台电脑就行,基本不需要太大的成本.在经济上完全可行。) 操作可行性-界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性. 3 第二章 开发环境的安装和配21开发包及其工具的介绍 Android以java作为开发语言,jdk是进行java开发时必需的开发包.eclipse是一款非常优秀的开源IDE,在大量插件的”配合”下,完全可以满足从企业级java应用到手机终端java游戏的开发.Google官方也提供了基于Eclipse的android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE.2.2 Android开发平台搭建步骤: 首先到/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java EE 集成版本,可以为平台的搭建省下不少工作。接着再去/javase/downloads/index.jsp 站点下载SDK后安装,下载/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解压。第一步下载工序就结束了。双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help- Install New Software- 选项卡上的Available Software,点击右侧的“Add”输入/android/eclipse/后确定,然后在“Work with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。重启后选择Eclipse菜单中的Windows- Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。 在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的 4Android SDK目录下的tools文件夹。 第三章程序的设计3.1 记事本组件的设计本项目涉及到以下组件:TextView:“记事本”,“新建记事”,“编辑记事”等标题EditView:“记事本的标题”,“内容”等Button:“确定”按钮Menu:“添加新记事”,“编译内容”,“删除当前记事”等 3.2 记事本逻辑设计 1.首先是添加新记事:如果当前没有记事,点击”menu”后只有一个菜单选项”添加新记事”,写完记事之后,点击”确定”进行保存2.”编辑内容”: 选中要编辑的那一个记事,然后点击”menu”菜单,会出现三个选项”新建记事”,” 编辑内容”,”删除当前记事”,点击”编辑内容”对被选中的记事进行编辑,然后点击”确定”加以保存.3.”删除记事”点击上下键,选中要删除的记事,然后点击”menu”菜单,然后点击”删除当前记事”,对选中的记事加以删除. 3.3记事本存储实现Android 中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据.就要使用android提供的ContentProviders. ContentProviders:Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据. 4 Shared Preference:用来存储”key-value paires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型. Files:它通过FileInputStream 和 FileOutputStream对文件进行操作.但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件SQLite:android提供的一个标准的数据库,支持SQL语句Network:通过网络来存储和获得数据 3.3.1数据存储之sharedPreferences通过getpreferences()方法来获得Preference对象,通过”SharePreferences.Editor editor=uiState.edit;”取得编辑对象,然后通过”editor.put()”方法添加数据,最后通过commit()方法来保存数据. 3.3.2数据存储之files我们可以通过自定义的save()方法来保存数据,同时也可以通过load()方法来获取文件中的数据.boolean save()Properties properties = new Properties();/* 将数据打包成Properties */properties.put(bmusic, String.valueOf(mbMusic);tryFileOutputStream stream = this.openFileOutput(music.cfg, Context.MODE_WORLD_WRITEABLE);/* 将打包好的数据写入文件中 */properties.store(stream, ); 5catch (FileNotFoundException e)return false;catch (IOException e)return false;return true;/* 装载、读取数据 */void load()/* 构建Properties对对象 */Properties properties = new Properties();try/* 开发文件 */FileInputStream stream = this.openFileInput(music.cfg);/* 读取文件内容 */properties.load(stream);catch (FileNotFoundException e)return;catch (IOException e) 6return;/* 取得数据 */mbMusic = Boolean.valueOf(properties.get(bmusic).toString();3.3.3数据存储之network通过网络来获取和保存数据资源,将数据存储到网络上的方法很多,比如将要保存的数据以文件的方式上传到服务器,发送邮件等.下面我们看下如何实现读取网络文件.String myString = null;try/* 定义我们要访问的地址url */URL uri = new URL(10:8080/android.txt);/* 打开这个url连接 */URLConnection ucon = uri.openConnection();/* 从上面的链接中取得InputStream */InputStream is = ucon.getInputStream();BufferedInputStream bis = new BufferedInputStream(is);ByteArrayBuffer baf = new ByteArrayBuffer(100);int current = 0;/* 一直读到文件结束 */while (current = bis.read() != -1)baf.append(byte) current);myString = new String(baf.toByteArray(); 7catch (Exception e) myString = e.getMessage();另外由于在程序中访问了外部网络,我们需要在AndroidManifest.xml文件中给予权限,代码如下3.3.4数据存储之SQLite这个方法在数据保存中非常常用.只是它只会被一个程序读取数据,不能在不同程序间共享数据./*创建和打开数据库*/mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);/*创建表*/mSQLiteDatabase.execSQL(CREATE_TABLE);/* 删除数据库 */public void DeleteDataBase()this.deleteDatabase(DATABASE_NAME);this.finish();/* 删除一个表 */public void DeleteTable()mSQLiteDatabase.execSQL(DROP TABLE + TABLE_NAME);this.finish(); 8 /* 更新一条数据 */public void UpData()ContentValues cv = new ContentValues();cv.put(TABLE_NUM, miCount);cv.put(TABLE_DATA, 修改后的数据 + miCount);/* 更新数据 */mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM + = + Integer.toString(miCount - 1), null);UpdataAdapter();/* 向表中添加一条数据 */public void AddData()ContentValues cv = new ContentValues();cv.put(TABLE_NUM, miCount);cv.put(TABLE_DATA, 测试数据库数据 + miCount);/* 插入数据 */mSQLiteDatabase.insert(TABLE_NAME, null, cv);miCount+;UpdataAdapter();/* 从表中删除指定的一条数据 */public void DeleteData()/* 删除数据 */mSQLiteDatabase.execSQL(DELETE FROM + TABLE_NAME + WHERE _id= + Integer.toString(miCount); 9miCount-;if (miCount = 0)/ ListAdapter是ListView和后台数据的桥梁ListAdapter adapter = new SimpleCursorAdapter(this,/ 定义List中每一行的显示模板/ 表示每一行包含两个数据项android.R.layout.simple_list_item_2,/ 数据库的Cursor对象cur,/ 从数据库的TABLE_NUM和TABLE_DATA两列中取数据new String TABLE_NUM, TABLE_DATA ,/ 与NAME和NUMBER对应的Viewsnew int android.R.id.text1, android.R.id.text2 ); 10/* 将adapter添加到m_ListView中 */m_ListView.setAdapter(adapter);3.3.5 数据存储之ContentProviders ContentProviders: Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据.查询数据:可以使用ContentProvider.query()或者Activity.managedQuery()方法修改数据:通过ContentResolver.update()方法可以用来修改数据添加数据:通过ContentResolver.insert()方法来增加一条数据删除数据:通过ContentResolver.delete()方法来删除一条记录 第四章程序的开发 4.1主activity的设计 当选择”新建记事本”,”编辑内容”,”删除当前记事”等菜单选项时对应的操作public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId() / 插入一条数据case MENU_ITEM_INSERT:Intent intent0 = new Intent(this, ActivityDiaryEditor.class);intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);intent0.setData(getIntent().getData();startActivity(intent0);return true; 11/ 编辑当前数据内容case MENU_ITEM_EDIT:Intent intent = new Intent(this, ActivityDiaryEditor.class);intent.setData(item.getIntent().getData();intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);startActivity(intent);return true;/ 删除当前数据case MENU_ITEM_DELETE:Uri uri = ContentUris.withAppendedId(getIntent().getData(),getListView().getSelectedItemId();getContentResolver().delete(uri, null, null);renderListView();return super.onOptionsItemSelected(item); 4.2编辑内容 protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/setTheme(android.R.style.Theme_Black);final Intent intent = getIntent();final String action = intent.getAction();setContentView(R.layout.diary_edit);mTitleText = (EditText) findViewById(R.id.title);mBodyText = (EditText) findViewById(R.id.body);/确定按钮confirmButton = (Button) findViewById(R.id.confirm); 12if (EDIT_DIARY_ACTION.equals(action) / 编辑记事本mState = STATE_EDIT;mUri = intent.getData();mCursor = managedQuery(mUri, PROJECTION, null, null, null);mCursor.moveToFirst();String title = mCursor.getString(1);mTitleText.setTextKeepState(title);String body = mCursor.getString(2);mBodyText.setTextKeepState(body);setResult(RESULT_OK, (new Intent().setAction(mUri.toString();setTitle(编辑记事); else if (INSERT_DIARY_ACTION.equals(action) / 新建日记mState = STATE_INSERT;setTitle(新建记事); else Log.e(TAG, no such action error);finish();rgetContentResolver().insert(Diary.DiaryColumns.CONTENT_URI, values);private void updateDiary() String title = mTitleText.getText().toString();String body = mBodyText.getText().toString();ContentValues values = new ContentValues();values.put(Diary.DiaryColumns.CREATED, DiaryContentProvider.getFormateCreatedDate();values.put(Diary.DiaryColumns.TITLE,

温馨提示

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

评论

0/150

提交评论