安卓记事本开发报告
安卓日记本实训报告

一、前言随着移动互联网的快速发展,手机已经成为人们日常生活中不可或缺的伙伴。
安卓系统作为全球最流行的移动操作系统,其应用开发领域具有广阔的市场前景。
为了提高自己的实践能力,我在学校组织的一次安卓开发实训中,选择了一个简单的应用——安卓日记本进行开发。
以下是我在实训过程中的心得体会。
二、实训目的1. 熟悉安卓开发环境,掌握安卓开发的基本流程;2. 学习并运用Android SDK进行应用开发;3. 培养团队协作能力和沟通能力;4. 提高自己的编程能力和解决问题的能力。
三、实训内容1. 项目背景及需求分析安卓日记本是一款简单实用的应用,主要用于记录用户的日常生活点滴。
用户可以创建多个日记本,添加日记条目,并设置日记的标题、内容、时间等信息。
此外,日记本还支持添加图片、视频等多媒体内容。
2. 技术选型在本次实训中,我选择了以下技术:(1)开发语言:Java(2)开发工具:Android Studio(3)数据库:SQLite(4)UI框架:Android UI组件3. 系统设计安卓日记本系统主要分为以下几个模块:(1)用户模块:包括用户注册、登录、修改密码等功能。
(2)日记本模块:包括创建日记本、添加日记条目、编辑日记条目、删除日记条目等功能。
(3)日记条目模块:包括日记的标题、内容、时间、图片、视频等信息。
(4)多媒体模块:包括图片、视频的添加、删除、预览等功能。
4. 系统实现(1)用户模块实现在用户模块中,我使用了Android SDK提供的SQLite数据库来实现用户注册、登录等功能。
用户注册时,将用户名、密码等信息存储到数据库中;用户登录时,从数据库中查询用户信息,验证用户名和密码是否匹配。
(2)日记本模块实现在日记本模块中,我使用了Android UI组件实现日记本的创建、编辑、删除等功能。
用户可以通过点击菜单或长按日记本条目来执行相关操作。
(3)日记条目模块实现在日记条目模块中,我实现了日记的标题、内容、时间、图片、视频等信息的添加、编辑、删除等功能。
基于Android的日记本的设计与实现的研究报告

基于Android的日记本的设计与实现的研究报告随着智能手机的普及和移动互联网的进一步发展,移动应用越来越受到人们的重视。
而日记本作为一种记录生活、记录思考的方式,也有着越来越广泛的应用。
本文旨在探讨基于Android平台的日记本的设计与实现。
一、需求分析在设计与实现日记本应用之前,需要先对其功能进行需求分析。
一般来说,日记本应用需要满足以下要求:1. 编辑日记:可以编辑、保存、修改和删除日记。
2. 时间记录:可以记录日记的时间,用户可以查看当天、周、月的日记。
3. 标签管理:可以为每一篇日记添加标签,便于用户查找。
4. 备份与恢复:可以进行数据备份和恢复,防止数据丢失。
5. 登录与注册:为了保证用户隐私的安全,需要提供登录和注册功能。
二、设计与实现基于以上需求,设计了一个基于Android平台的日记本应用。
1. UI设计UI设计采用了Material Design的风格,整体设计简洁、美观、易用。
主界面采用了ViewPager和TabLayout相结合的方式,可以进行快速切换不同的界面。
2. 日记编辑用户可以在主界面中点击加号添加新的日记。
日记编辑页面提供了标题、内容和标签的编辑,同时具备保存、修改和删除日记的功能。
3. 时间记录在主界面的Toolbar中加入了一个时间选择器,用户可以选择不同的时间范围查看当天、周或月的日记。
4. 标签管理在主界面中通过点击“标签”按钮弹出一个标签管理页面,用户可以添加、修改和删除标签。
用户可以给每一篇日记添加标签,便于查找和分类。
5. 备份与恢复在主界面中通过点击“备份”和“恢复”按钮进行数据的备份和恢复。
6. 登录与注册用户需要登录或注册才能使用日记本应用,为了保护用户隐私,采用了密码加密和保护机制。
三、总结经过以上的设计与实现,这个日记本应用提供了完整的日记管理功能,具备了美观、简约的UI设计。
应用还可以进一步优化,例如加入云同步功能、图片上传等,以满足更多用户需求。
安卓记事本开发报告

基于Android平台记事本的设计与实现1.设计目的记事本的基本功能就是记事,手机用户首先用到的就是文本记事,输入事务信息以文本的形式展现出来,存储起来。
随着用户需求的增加,可能希望用图形来代替文本来记事,用户之间打开记事本,看到图片就能联系自己所记载的事务信息。
这样免去了输入文字的麻烦,反而会更简单。
又或者是文本与图片的交叉运用,可以让用户自己选择自己喜欢的记事方式,更加自由与便捷。
所以此功能的意义是让简单的记事信息能以文本、图文和视频表达,更加丰富多彩。
2.设计内容本设计的基本内容是在Android平台下,设计与实现记事本软件。
具体要实现的功能是:(1)设计实现添加“文字”,“图文”,“视频”这三个主要的功能模块。
(2)进入添加后,有“保存”,“取消”两种选择。
(3)主页面显示记事列表,点击可查看及时内容,并有“删除”,“返回”两种选择。
(4)进行测试并分析结果。
3.开发环境的安装与配置3.1 Android开发平台搭建本设计主要是以Eclipse为基础,安装SDK和ADT插件后,用来开发安卓项目。
开发平台搭建步骤介绍如下。
(1)下载JDK并安装,安装后配置环境变量。
(2)下载Eclipse解压至指定文件夹。
(3)下载SDK后解压至指定文件夹,打开SDK目录,点击SDK Manager安装开发安卓项目需要的包。
(4)启动Eclipse,进入Help—>Install New Software—>Add,添加ADT插件。
(5)进入Window—>Android—>Browse,选择SDK安装目录。
3.2硬件环境Android设备,如Android手机或平板电脑,主频在1Ghz及以上,内存为512MB以上,系统版本为Android2.1及以上。
本设计使用Android4.4.4的手机。
3.3 软件环境操作系统:windows10IDE:EclipseAndroid SDK 集成环境4.设计主体架构4.1 src文件夹src文件夹下com.liwenhuan.notepad包下为系统主要Activity类:NotesDB.java是进行数据储存的,通过SQLite保存数据。
整理安卓记事本开发设计报告

2018年 4月 6日
备注:此表由指导教师填写,表格不够填写可续页。
整理丨尼克
本文档信息来自于网络,如您发现内容不准确或不完善,欢迎您联系我修正;如您发现内容涉嫌侵权,请与我们联系,我们将按照相关法律规定及时处理。
√
开题报告
是否按要求填写开题报告
√
格式检查(签字、盖章、日期)
√
文献综述
封面指导教师有无写评语并签字
√
字数是否达到要求(3000字左右)
√
总参考文献不少于10篇
√
文献引用有无在原文中标注
√
格式、字体是否符合要求
√
近五年文献不少于6篇
√
存在问题及整改意见:
针对上面表格项目的问题以及实际存在的其他问题提出整改意见,注意问题阐述与×的对应关系。
毕业设计(论文)中期检查表
年级专业:社会体育指导与管理
学生姓名:某某某
学号:142081101
指导教师:某某某、某某某
毕业设计(论文)题目:闽南理工学院学生接触手机传媒体育信息的调查与分析
检查项目
检查内容
合格√
不合格×
备注
毕业设计(论文)进展情况
是否按进度完成
√
完成质量
×
任务书
基于android个人记账本的设计与开发开题报告

太原科技大学华科学院毕业设计开题报告学生姓名:学号:学院、系:专业:论文题目:基于android个人记账本的设计与开发指导教师:2015 年 2 月26日毕业设计开题报告1.结合毕业设计情况,根据所查阅的文献资料,撰写2000字左右的文献综述:文献综述一.选题的目的和意义1.选题的背景出门口诀“伸手要赏钱”分别代表着身份证、手机、钥匙、伞、钱。
在后PC时代的今天,手机成为最重要的移动终端,是我们出门出行的必携物。
以前,或许我们的手机只能为我们提供基本通信功能,而随着Android 系统的诞生,我们的生活迎来了一场不亚于“工业革命”带给我们的巨大变化。
基于Anddroid系统的手机处理各类信息的能力得到了质的提升。
而Android这个开源的操作系统,将享受这项优质服务的权利给了所有愿意使用它的人。
Android从08年9月的1.1版到去年11月的4.4版,一路走来,从基本走向优化,全方面地为我们提供了出色的网络、多媒体、通讯、娱乐等功能。
这匹黑马,从诞生伊始到去年7月的“全球市场占有率达81.9%”,告诉我们它的出现是多么受人们欢迎。
它备受追捧的原因不外乎它完全的对第三方软件开发商和我们这些开发者的开发。
我们可以在它上面实现无限自主的“自定义”。
它宛如一张白纸,我们可以在上面随意画出自己想要的东西。
它,贵在给我们自由。
2.选题的意义随着高速经济化,我们的生活节奏越来越快。
我们忙东忙西,总会容易忽略忘记了一些生活细节,比如收支管理。
为了更好的释放一些时间来享受我们的生活,我们期待有这么一款软件来帮助管理这些小数据。
建立在Android操作系统上的个人理财系统,方便我们随时随地地记录着这些零散的数据,从此我们不必再为收支费心,清心地查看数据统计结果是我们唯一要做的事。
二、可行性分析1.可行性研究前提1.1要求系统功能满足用户实际需求可便利地进行收入支出的增删改操作对用户数据进行正确的统计系统操作人性化、简单易用保证软件的安全性1.2目标方便地进行收入、支出等数据进行管理整合2.技术可行性研究此系统需要在Android手机操作系统上运行,用Eclipse进行开发,数据库选用轻量级的SqLite。
Android记事本开发

成绩:通信工程专业实训报告项目名称:Android记事本开发学号: ***********名:**班级: 08通信2班指导教师:***摘要 (3)第一章引言 (3)1.1 实训背景: (3)1.2开发环境配置 (3)第二章软件功能规划 (4)2.1.软件功能 (4)2.2界面设计 (4)第三章功能开发流程及功能展示 (4)3.1程序执行流程 (4)3.2功能实现 (7)第四章实训总结 (9)摘要开心或是难过,有趣或是无聊,幸福或是痛苦,这些都是我们所经历的,是记忆,是生命中最为宝贵的,我们舍不得遗忘,记事本能够帮助我们守住回忆,记录下我们生命的足迹。
第一章引言1.1 实训背景:Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。
底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市两年的操作系统Android 已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
开放性:在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。
开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
挣脱运营商的束缚:在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。
Adroid记事本开发报告

科信学院智能移动终端应用开发设计报告(2011/2012学年第2学期)题目:基于Android的记事本设计专业:电子信息工程小组成员:张国锋090072228凌晨090072103秦轲090072126设计成绩:2012年6月15日●项目概述1.课题研究的目的熟悉一下eclipse工具和安卓的环境配置及开发的过程熟练掌握java的组件如button,textview,listView,menu等组件的灵活应用熟练掌握安卓的一个关于数据保存的方式content providers。
锻炼一下自己遇到问题,然后解决问题的能力。
2.项目功能设计实现“添加新记事”,”编辑内容”这两个主要的功能模块●小组成员分工说明张国锋:“记事本”数据库功能的编写凌晨:“记事本”编辑功能的编写秦轲:“记事本”主activity的设计●技术文档1.记事本逻辑设计1.首先是添加新记事:如果当前没有记事,点击“menu”后只有一个菜单选项“添加新记事”,写完记事之后,点击“确定“进行保存.2.编辑内容:选中要编辑的那一个记事,然后点击“menu”菜单,会出现三个选项“新建记事”,“编辑内容”, 点击“编辑内容”对被选中的记事进行编辑,然后点击“确定”加以保存。
2.记事本存储实现Android 中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据.就要使用android提供的ContentProviders.查询数据:可以使用ContentProvider.query()或者Activity.managedQuery()方法修改数据:通过ContentResolver.update()方法可以用来修改数据添加数据:通过ContentResolver.insert()方法来增加一条数据3.程序开发1.主activity的设计当选择“新建记事本”,”编辑内容”等菜单选项时对应的操作package info.liuqy.adc.easynote;import info.liuqy.adc.easynote.R;import android.app.ListActivity;import android.content.Intent;import android.database.Cursor;import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ListView;import android.widget.SimpleCursorAdapter;public class EasyNoteActivity extends ListActivity {private static final int ACTIVITY_CREATE = 0;private static final int ACTIVITY_EDIT = 1;private static final int INSERT_ID = Menu.FIRST;private static final int DELETE_ID = Menu.FIRST + 1;private NotesDbAdapter db = null;private Cursor cur = null;// private int counter = 1;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.notes_list);db = new NotesDbAdapter(this);db.open();listAllNotes();this.registerForContextMenu(getListView());}private void listAllNotes() {cur = db.retrieveAllNotes();startManagingCursor(cur);String[] from = new String[]{NotesDbAdapter.KEY_TITLE};int[] to = new int[]{R.id.textrow};SimpleCursorAdapter notes =new SimpleCursorAdapter(this, yout.notes_row, cur, from, to);this.setListAdapter(notes);}/* (non-Javadoc)* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, INSERT_ID, 0, R.string.create_note);return true;}/* (non-Javadoc)* @see android.app.Activity#onMenuItemSelected(int, android.view.MenuItem) */@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) {case INSERT_ID:createNote();return true;}return super.onMenuItemSelected(featureId, item);}private void createNote() {Intent i = new Intent(this, NoteEditActivity.class);startActivityForResult(i, ACTIVITY_CREATE);}/* (non-Javadoc)* @see android.app.Activity#onContextItemSelected(android.view.MenuItem)@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case DELETE_ID:AdapterContextMenuInfo info =(AdapterContextMenuInfo)item.getMenuInfo();db.deleteNote(info.id);listAllNotes();return true;}return super.onContextItemSelected(item);}/* (non-Javadoc)* @see android.app.Activity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo)*/@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);menu.add(0, DELETE_ID, 0, R.string.delete_note);}/* (non-Javadoc)* @see android.app.ListActivity#onListItemClick(android.widget.ListView, android.view.View, int, long)*/@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id);Intent i = new Intent(this, NoteEditActivity.class);cur.moveToPosition(position);i.putExtra(NotesDbAdapter.KEY_TITLE,cur.getString(cur.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));i.putExtra(NotesDbAdapter.KEY_BODY,cur.getString(cur.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));i.putExtra(NotesDbAdapter.KEY_ROWID, id);startActivityForResult(i, ACTIVITY_EDIT);}/* (non-Javadoc)* @see android.app.Activity#onActivityResult(int, int,android.content.Intent)*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Bundle extras = data.getExtras();switch (requestCode) {case ACTIVITY_EDIT:Long rowId = extras.getLong(NotesDbAdapter.KEY_ROWID);if (rowId != null) {String title = extras.getString(NotesDbAdapter.KEY_TITLE);String body = extras.getString(NotesDbAdapter.KEY_BODY);db.updateNote(rowId, title, body);}break;case ACTIVITY_CREATE:String title = extras.getString(NotesDbAdapter.KEY_TITLE);String body = extras.getString(NotesDbAdapter.KEY_BODY);db.createNote(title, body);break;}}}2.编辑内容package info.liuqy.adc.easynote;import info.liuqy.adc.easynote.R;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class NoteEditActivity extends Activity {private EditText titleEdit;private EditText bodyEdit;private Button confirmBtn;private Long rowId;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.note_edit);titleEdit = (EditText) findViewById(R.id.title);bodyEdit = (EditText) findViewById(R.id.body);confirmBtn = (Button) findViewById(R.id.confirm);rowId = null;Bundle extras = getIntent().getExtras();if (extras != null) {String title = extras.getString(NotesDbAdapter.KEY_TITLE);String body = extras.getString(NotesDbAdapter.KEY_BODY);rowId = extras.getLong(NotesDbAdapter.KEY_ROWID);if (title != null)titleEdit.setText(title);if (body != null)bodyEdit.setText(body);}confirmBtn.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {Bundle bundle = new Bundle();bundle.putString(NotesDbAdapter.KEY_TITLE,titleEdit.getText().toString());bundle.putString(NotesDbAdapter.KEY_BODY, bodyEdit.getText().toString());if (rowId != null) {bundle.putLong(NotesDbAdapter.KEY_ROWID, rowId);}Intent iRes = new Intent();iRes.putExtras(bundle);setResult(RESULT_OK, iRes);finish();}});}}3.数据库package info.liuqy.adc.easynote;import android.content.ContentV alues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class NotesDbAdapter {private static final String DB_NAME = "data";private static final int DB_VERSION = 2;private static final String TBL_NAME = "notes";static final String KEY_TITLE = "title";static final String KEY_BODY = "body";static final String KEY_ROWID = "_id";private Context ctx = null;private SQLiteOpenHelper dbHelper = null;private SQLiteDatabase db = null;public NotesDbAdapter(Context ctx) {this.ctx = ctx;}public NotesDbAdapter open() {dbHelper = new SQLiteOpenHelper(ctx, DB_NAME, null, DB_VERSION) {@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table notes (_id integer primary key autoincrement, " +"title text not null, body text not null)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldV er, int newV er) {//TODO on DB upgrade}};db = dbHelper.getWritableDatabase();return this;}public void close() {dbHelper.close();}public long createNote(String title, String body) {ContentValues values = new ContentValues();values.put(KEY_TITLE, title);values.put(KEY_BODY, body);long rowId = db.insert(TBL_NAME, null, values);return rowId;}public Cursor retrieveNote(long rowId) {Cursor cur = db.query(true, TBL_NAME, new String[]{KEY_ROWID, KEY_TITLE, KEY_BODY},KEY_ROWID + "=" + rowId, null, null, null, null, null);if (cur != null) {cur.moveToFirst();}return cur;public Cursor retrieveAllNotes() {Cursor cur = db.query(TBL_NAME, new String[]{KEY_ROWID, KEY_TITLE, KEY_BODY},null, null, null, null, null);return cur;}public boolean updateNote(long rowId, String title, String body) {ContentValues values = new ContentValues();values.put(KEY_TITLE, title);values.put(KEY_BODY, body);int updatedRows = db.update(TBL_NAME, values, KEY_ROWID + "=" + rowId, null);return updatedRows > 0;}public boolean deleteNote(long rowId) {int deletedRows = db.delete(TBL_NAME, KEY_ROWID + "=" + rowId, null);return deletedRows > 0;}}4. 以下为生成的效果图开发工作总结经过学习,研究和开发,我们终于按时完成了这个项目。
基于android studio日记本的设计报告

基于android studio日记本的设计报告一、设计目标本设计报告旨在介绍基于Android Studio的日记本应用的设计方案。
日记本应用旨在为用户提供一个简单、方便、安全的平台,用于记录、保存和管理个人的日记。
二、二、功能要求1. 用户注册和登录:用户需要注册一个账号并登录才能使用日记本应用。
2. 编写和保存日记:用户可以根据自己的需求编写和保存日记。
日记支持文本、图片、音频和视频等多种形式。
3. 查看和编辑日记:用户可以查看已保存的日记,并对其进行编辑和更新。
4. 日记分类:用户可以为日记添加分类标签,以便更好地组织和管理自己的日记。
5. 日记搜索:用户可以根据关键词搜索自己的日记,以便快速找到特定的日记。
6. 日记备份和恢复:用户可以将日记进行备份,以防止数据丢失或设备损坏。
备份文件可以通过应用内或外部存储设备进行恢复。
7. 日记分享:用户可以选择将日记分享到其他社交媒体平台,如微信、QQ等。
8. 用户设置:用户可以在设置中修改自己的个人信息,如用户名、密码等。
9. 安全性保护:用户的个人信息和日记内容需要进行加密存储,以保护用户隐私和数据安全。
1.三、系统设计1. 用户注册和登录:用户注册需要输入用户名、密码和邮箱,并验证邮箱。
登录需要输入用户名和密码进行身份验证。
2. 日记编辑和保存:用户可以在编辑界面进行日记的编写和保存,可以选择不同的多媒体形式进行内容展示。
3. 日记查看和编辑:用户可以进入日记列表界面查看已保存的日记,点击进入日记详情界面可以对其进行编辑和更新。
4. 日记分类:用户可以在日记编辑界面选择分类标签进行日记分类。
5. 日记搜索:用户可以在日记列表界面使用搜索框输入关键词进行搜索。
6. 日记备份和恢复:用户可以在设置界面进行日记的备份和恢复操作,备份文件可以存储在应用内或外部存储设备中。
7. 日记分享:用户可以在日记详情界面选择分享按钮,将日记分享到其他社交媒体平台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Android平台记事本的设计与实现1.设计目的记事本的基本功能就是记事,手机用户首先用到的就是文本记事,输入事务信息以文本的形式展现出来,存储起来。
随着用户需求的增加,可能希望用图形来代替文本来记事,用户之间打开记事本,看到图片就能联系自己所记载的事务信息。
这样免去了输入文字的麻烦,反而会更简单。
又或者是文本与图片的交叉运用,可以让用户自己选择自己喜欢的记事方式,更加自由与便捷。
所以此功能的意义是让简单的记事信息能以文本、图文和视频表达,更加丰富多彩。
2.设计内容本设计的基本内容是在Android平台下,设计与实现记事本软件。
具体要实现的功能是:(1)设计实现添加“文字”,“图文”,“视频”这三个主要的功能模块。
(2)进入添加后,有“保存”,“取消”两种选择。
(3)主页面显示记事列表,点击可查看及时内容,并有“删除”,“返回”两种选择。
(4)进行测试并分析结果。
3.开发环境的安装与配置3.1 Android开发平台搭建本设计主要是以Eclipse为基础,安装SDK和ADT插件后,用来开发安卓项目。
开发平台搭建步骤介绍如下。
(1)下载JDK并安装,安装后配置环境变量。
(2)下载Eclipse解压至指定文件夹。
(3)下载SDK后解压至指定文件夹,打开SDK目录,点击SDK Manager安装开发安卓项目需要的包。
(4)启动Eclipse,进入Help—>Install New Software—>Add,添加ADT插件。
(5)进入Window—>Android—>Browse,选择SDK安装目录。
3.2硬件环境Android设备,如Android手机或平板电脑,主频在1Ghz及以上,内存为512MB以上,系统版本为Android2.1及以上。
本设计使用Android4.4.4的手机。
3.3 软件环境操作系统:windows10IDE:EclipseAndroid SDK 集成环境4.设计主体架构4.1 src文件夹src文件夹下com.liwenhuan.notepad包下为系统主要Activity类:NotesDB.java是进行数据储存的,通过SQLite保存数据。
并且用onCreate函数创建数据库。
通过设置两个按钮的监听来实现对输入文本的存储或退出。
MainActivity.java是主Activity,通过设置三个按钮的监听来实现添加文本、图文、视频的记事方式。
AddContent.java通过initView方法来判断记事的方式,实现对文本、图片、视频的添加,获取保存文件的时间。
MyAdapter.java是显示模块,通过系统提供的Bitmap在记事列表显示图片和视频的缩略图。
SelectAct.java是记事详情的显示模块,通过监听的方法来实现记事的删除功能。
4.2 gen文件夹gen文件夹是项目自动生成的文件夹R.java是工程下各个资源的标识符负责所有资源的索引。
4.3 bin文件夹bin文件夹是编译后的字节码存放的目录,编译的过程首先是编译成为android java虚拟机文件classes.dex,再打包成APK格式的包。
4.4 res文件夹Res是资源目录,它包含项目中的资源文件并将其编译进应用程序中,向此目录添加资源时,会被R.java自动记录。
res目录存放所有程序中用到的资源文件。
“资源文件”指的资料文件、图片等。
子目录有:drawable、layout、values。
本设计主要用了layout目录下的布局文件。
layout是屏幕布局目录, activity_main.xml是主界面的布局文件、addcontent.xml是增加数据页面的布局文件、cell.xml是几个功能按钮的布局文件、select.xml是显示记事详情以及对记事进行操作的布局文件。
5.程序设计5.1数据存储之SQLite这个方法在数据保存中非常常用,只是它只会被一个程序读取数据,不能在不同程序间共享数据。
//创建数据库public void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + ID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + CONTENT+ " TEXT NOT NULL," + PATH + " TEXT NOT NULL,"+ VIDEO+ " TEXT NOT NULL," + TIME + " TEXT NOTNULL)");}5.2 添加文字内容当以文本方式记事时,需要对输入的文字内容进行保存。
public void initView() {if (val.equals("1")) { // 文字c_img.setVisibility(View.GONE);//隐藏v_video.setVisibility(View.GONE);//隐藏}}public void onClick(View v) {switch (v.getId()) {case R.id.save:addDB();//添加数据finish();//关闭当前Activitybreak;case R.id.delete:finish();break;}}5.3适配器配置public class MyAdapter extends BaseAdapter {private Context context;private Cursor cursor;private LinearLayout layout;//视图对象public MyAdapter(Context context, Cursor cursor) {this.context = context;this.cursor = cursor;}@Overridepublic int getCount() {return cursor.getCount();//返回长度}@Overridepublic Object getItem(int position) {return cursor.getPosition();}@Overridepublic long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {LayoutInflater inflater = LayoutInflater.from(context);//加载视图的权限layout = (LinearLayout) inflater.inflate(yout.cell,null);//布局文件TextView contenttv = (TextView)layout.findViewById(R.id.list_content);//获取上面布局文件中的每一个内容TextView timetv = (TextView)layout.findViewById(R.id.list_time);//查找时间ImageView imgiv = (ImageView)layout.findViewById(R.id.list_img);//查找图片ImageView videoiv = (ImageView)layout.findViewById(R.id.list_video);//查找视频cursor.moveToPosition(position);//查询String content =cursor.getString(cursor.getColumnIndex("content"));//获取具体内容String time =cursor.getString(cursor.getColumnIndex("time"));//获取时间String url =cursor.getString(cursor.getColumnIndex("path"));//获取图片的缩略图String urlvideo =cursor.getString(cursor.getColumnIndex("video"));//获取视频contenttv.setText(content);//将内容传递进来timetv.setText(time);//将时间传递进来videoiv.setImageBitmap(getVideoThumbnail(urlvideo, 200, 200,MediaStore.Images.Thumbnails.MICRO_KIND));//在列表显示视频缩略图imgiv.setImageBitmap(getImageThumbnail(url, 200, 200));//在列表显示图片缩略图return layout;}5.4添加图片和视频在本设计中,不仅提供了以文本方式进行记事,还提供了以图片和视频方式进行记事。
public void initView() {if (val.equals("2")) {//图片c_img.setVisibility(View.VISIBLE);//显示v_video.setVisibility(View.GONE);//隐藏Intent iimg = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//跳转到系统相机phoneFile = newFile(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/" + getTime() +".jpg");//获取SD卡绝对路径iimg.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(phoneFile));//存储获取的图片信息startActivityForResult(iimg, 1);//启动跳转}if (val.equals("3")) {c_img.setVisibility(View.GONE);//隐藏v_video.setVisibility(View.VISIBLE);//显示Intent video = newIntent(MediaStore.ACTION_VIDEO_CAPTURE);//跳转到手机系统信息videoFile = newFile(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/" + getTime() +".mp4");//获取SD卡绝对路径video.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(videoFile));//存储获取的video信息startActivityForResult(video, 2);//启动跳转}}//显示图片或视频protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == 1) {//图片Bitmap bitmap = BitmapFactory.decodeFile(phoneFile.getAbsolutePath());//获取路径c_img.setImageBitmap(bitmap);//展示内容}if (requestCode == 2) {//视频v_video.setVideoURI(Uri.fromFile(videoFile));//加载视频v_video.start();//播放视频}}5.5 获取图片和视频的缩略图当我们用图片或制品进行记事时,在列表中需要显示其缩略图,可以用系统提供的Bitmap进行处理。