安卓记事本开发设计报告_第1页
安卓记事本开发设计报告_第2页
安卓记事本开发设计报告_第3页
安卓记事本开发设计报告_第4页
安卓记事本开发设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

题目:基于Android手机平台的记事本设计系名计算机科学与技术专学业号网络工程学生姓名指导教师2011年12月26日目录第一章引言 1课题研究的目的 1课题研究的意义 1课题的可行性分析 2第二章 开发环境的安装和配置 3开发包及其工具的介绍 3Android开发平台的搭建步骤 3第三章 程序的设计 4记事本组件的设计 4记事本逻辑设计 4记事本存储实现 4第四章 程序的开发 14主activity的设计 14编译内容 15删除记事 16第五章程序的测试 17第六章 总结 21参考文献 22第一章引言课题研究的目的熟悉一下eclipse工具和安卓的环境配置及开发的过程熟练掌握java的组件如button,textview,listView,menu等组件的灵活应3.熟练掌握安卓的一个关于数据保存的方式content providers。4.锻炼一下自己遇到问题,然后解决问题的能力。课题研究的意义随着3Ggoogle和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出.Android操作系统是google最具杀伤力的武器之一.苹果以其天才的创新,是的iphone在全球迅速拥有了数百万忠实的”粉丝”,而android作为第一个完整,开放,免费的手机平台,使开发者在为其开发程序时拥有更大的自由.与windowsmobile,symbian等厂商不同的是,android操作系统是免费向开发人员提供,这样可节省近三层得成本.我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力.android如此受到厂商与开发者的青睐,它的前景是一片光明的.国内对于安卓这方面的市场还没有完全开发出来.只要我们努力学习android,对理想,对生活都会有很大的补益.在下面的各章中我们将以开发安卓记事本软件为例,谈谈其开发过程和所涉及到的问题及解决方法。本文中所做的主要工作如下:开发环境及开发工具的安装及配置阐述整个记事本的系统结构及工作原理;要的功能模块。择。进行测试并分析结果。课题的可行性分析课题调研与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助。具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度。关于技术方面的难题,跟指导老师面谈。可行性分析1)技术可行性 本项目仅需要一台装有eclipse及配置好android开发windowsxp上版本,macos,linux等操作系统。2)经济可行性 由于本软件开发只有一个单个人,一台电脑就行,基本不需要太大的成本.在经济上完全可行。3)操作可行性 界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性.第二章开发环境的安装和配开发包及其工具的介绍Androidjava作为开发语言,jdk是进行java开发时必需的开发包.eclipse是一款非常优秀的开源IDE,在大量插件的”配合”下,完全可以满足java应用到手机终端java游戏的开发.Google官方也提供了基于Eclipse的android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE.Android开发平台搭建步骤:首先到/downloads/下载Eclipse集成开发环境并JavaEE着再去/javase/downloads/index.jspSDK后安装,下载/android/android-sdk-windows-1.5_r1.zip,AndroidSDK1.5后解压。第一步下载工序就结束了。②双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->InstallNewSoftware->Available的“Add”输入/android/eclipse/后确定,然后在“Workwith”DeveloperToolsNext以后Eclipse会自动网上查找Android开发工具插AndroidDDMS和AndroidDevelopmentTools就会自动下载并安装AndroidEclipse③重启后选择Eclipse菜单中的Windows->Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。④在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。第三章程序的设计记事本组件的设计本项目涉及到以下组件:TextView:“记事本EditView:“记事Button:“确定”按钮Menu记事本逻辑设计首先是添加新记事:如果当前没有记事,点击”menu”后只有一个菜单选项”添加新记事”,写完记事之后,点击”确定”进行保存”编辑内容”:选中要编辑的那一个记事,然后点击”menu”菜单,会出现三个选项”新建记事”,” 编辑内容”,”删除当前记事”,点击”辑内容”对被选中的记事进行编辑,然后点击”确定”加以保存.删除记事”点击上下键,选中要删除的记事,然后点击”menu”菜单,然后点击”删除当前记事”,对选中的记事加以删除.记事本存储实现Android中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据.就要使用android提供的ContentProviders.ContentProvidersAndroi提供的一个特殊的存储数据的类型,标准的接口来获取,操作数据.SharedPreference:用来存储”key-valuepaires”量级的键值存储机制,只可以存储基本数据类型.Files:它通过FileInputStream和FileOutputStream对文件进行操作.但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件SQLite:android提供的一个标准的数据库,支持SQL语句Network:通过网络来存储和获得数据sharedPreferences通过getpreferences()方法来获得Preference对象,通过”SharePreferences.Editoreditor=uiState.edit;”取得编辑对象,然后通过”editor.put……()”方法添加数据,最后通过commit()方法来保存数据.filessave()方法来获取文件中的数据.booleansave(){Propertiesproperties=newProperties();/*将数据打包成Properties*/properties.put("bmusic",String.valueOf(mbMusic));try{FileOutputStreamstream=this.openFileOutput("music.cfg",Context.MODE_WORLD_WRITEABLE);/*将打包好的数据写入文件中*/properties.store(stream,"");}catch(FileNotFoundExceptione){returnfalse;}catch(IOExceptione){returnfalse;}returntrue;}/*装载、读取数据*/voidload(){/*构建Properties对对象*/Propertiesproperties=newProperties();try{/*开发文件*/FileInputStreamstream=this.openFileInput("music.cfg");/*读取文件内容*/properties.load(stream);}catch(FileNotFoundExceptione){return;}catch(IOExceptione){return;}/*取得数据*/mbMusic=Boolean.valueOf(properties.get("bmusic").toString());}数据存储之network通过网络来获取和保存数据资源,将数据存储到网络上的方法很多,比如将要保存的数据以文件的方式上传到服务器,发送邮件等.下面我们看下如何实现读取网络文件.StringmyString=null;try{/*定义我们要访问的地址url*/URLuri=newURL("10:8080/android.txt");/*打开这个url连接*/URLConnectionucon=uri.openConnection();/*从上面的链接中取得InputStream*/InputStreamis=ucon.getInputStream();BufferedInputStreambis=newBufferedInputStream(is);ByteArrayBufferbaf=newByteArrayBuffer(100);intcurrent=0;/*一直读到文件结束*/while((current=bis.read())!=-1){baf.append((byte)current);}myString=newString(baf.toByteArray());}catch(Exceptione){myString=e.getMessage();}另外由于在程序中访问了外部网络,我们需要在AndroidManifest.xml文件中给予权限,代码如下<uses-permissiion android:name=”android.permission.INTERNET”/>数据存储之SQLite这个方法在数据保存中非常常用.只是它只会被一个程序读取数据,不能在不同程序间共享数据./*创建和打开数据库*/mSQLiteDatabase=this.openOrCreateDatabase(DATABASE_NAME,MODE_PRIVATE,null);/*创建表*/mSQLiteDatabase.execSQL(CREATE_TABLE);/*删除数据库*/publicvoidDeleteDataBase(){this.deleteDatabase(DATABASE_NAME);this.finish();}/*删除一个表*/publicvoidDeleteTable(){mSQLiteDatabase.execSQL("DROPTABLE"+TABLE_NAME);this.finish();}/*更新一条数据*/publicvoidUpData(){ContentValuescv=newContentValues();cv.put(TABLE_NUM,miCount);cv.put(TABLE_DATA,修改后的数据miCount);/*更新数据*/mSQLiteDatabase.update(TABLE_NAME,cv,TABLE_NUM+"="+Integer.toString(miCount-1),null);UpdataAdapter();}/*向表中添加一条数据*/publicvoidAddData(){ContentValuescv=newContentValues();cv.put(TABLE_NUM,miCount);cv.put(TABLE_DATA,测试数据库数据miCount);/*插入数据*/mSQLiteDatabase.insert(TABLE_NAME,null,cv);miCount++;UpdataAdapter();}/*从表中删除指定的一条数据*/publicvoidDeleteData(){/*删除数据*/mSQLiteDatabase.execSQL("DELETEFROM"+TABLE_NAME+"WHERE_id="+Integer.toString(miCount));miCount--;if(miCount<0){miCount=0;}UpdataAdapter();}/*更行试图显示*/publicvoidUpdataAdapter(){//获取数据库Phones的CursorCursorcur=mSQLiteDatabase.query(TABLE_NAME,newString[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null,null,null,null,null);miCount=cur.getCount();if(cur!=null&&cur.getCount()>=0){//ListAdapter是ListView和后台数据的桥梁ListAdapteradapter=newSimpleCursorAdapter(this,//定义List中每一行的显示模板//表示每一行包含两个数据项android.R.layout.simple_list_item_2,//数据库的Cursor对象cur,//从数据库的TABLE_NUM和TABLE_DATA两列中取数据newString[]{TABLE_NUM,TABLE_DATA},//与NAME和NUMBER对应的Viewsnewint[]{android.R.id.text1,android.R.id.text2});/*将adapter添加到m_ListViewm_ListView.setAdapter(adapter);}}数据存储之ContentProvidersContentProviders:Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据.查询数据:可以使用ContentProvider.query()或者Activity.managedQuery()方法修改数据:通过ContentResolver.update()方法可以用来修改数据添加数据:通过ContentResolver.insert()方法来增加一条数据删除数据:通过ContentResolver.delete()方法来删除一条记录第四章程序的开发主activity的设计当选择”新建记事本”,”编辑内容”,”删除当前记事”等菜单选项时对应的操作publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){//插入一条数据caseMENU_ITEM_INSERT:Intentintent0=newIntent(this,ActivityDiaryEditor.class);intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);intent0.setData(getIntent().getData());startActivity(intent0);returntrue;//编辑当前数据内容caseMENU_ITEM_EDIT:Intentintent=newIntent(this,ActivityDiaryEditor.class);intent.setData(item.getIntent().getData());intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);startActivity(intent);returntrue;//删除当前数据caseMENU_ITEM_DELETE:Uriuri=ContentUris.withAppendedId(getIntent().getData(),getListView().getSelectedItemId());getContentResolver().delete(uri,null,null);renderListView();}returnsuper.onOptionsItemSelected(item);}编辑内容protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//setTheme(android.R.style.Theme_Black);finalIntentintent=getIntent();finalStringaction=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);if(EDIT_DIARY_ACTION.equals(action)){//编辑记事本mState=STATE_EDIT;mUri=intent.getData();mCursor=managedQuery(mUri,PROJECTION,null,null,mCursor.moveToFirst();Stringtitle=mCursor.getString(1);mTitleText.setTextKeepState(title);Stringbody=mCursor.getString(2);mBodyText.setTextKeepState(body);setResult(RESULT_OK,(newIntent()).setAction(mUri.toString()));setTitle("编辑记事");}elseif(INSERT_DIARY_ACTION.equals(action)){//新建日记mState=STATE_INSERT;setTitle("新建记事");}else{Log.e(TAG,"nosuchactionerror");finish();etContentResolver().insert(Diary.DiaryColumns.CONTENT_URI,values);privatevoidu

温馨提示

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

评论

0/150

提交评论