《基于安卓智能手机的图片管理系统.doc》由会员分享,可在线阅读,更多相关《基于安卓智能手机的图片管理系统.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于安卓智能手机的图片管理系统The Picture Management System Based On Android Smartphone完成日期 2013年 4月20日吉林大学珠海学院本科毕业论文(设计)开题报告基于安卓智能手机的图片管理系统摘要随着互联网的发展,人们已经不满足于只是把生活中的图片放在自己的电脑里,他们还希望可以将自己拍摄的照片放在自己的手机中,以供自己或家人、朋友随时随地使用、分享,充分展现自己的风采,智能手机图片管理系统也因此应运而生。目前,社会上流行的图片管理系统种类繁多,包括有各种各样计算机的图片管理系统和智能手机图片管理系统。本系统主要从现代社会移动设备大众化
2、的观念出发,通过对现有图片管理系统的分析、研究和整理,确定了基于安卓智能手机的图片管理系统的可行性、紧迫性和必要性。本次设计是针对现在安卓智能手机存在的情况,将计算机图片管理应用到智能手机上面,根据智能手机的特点,改善一些技术和增加创新,创建适合智能手机的图片管理系统,使智能手机的图片管理系统能够快捷、有效的实施一些图片管理功能。关键词: 安卓;数据库技术;图片管理;智能手机;互联网;移动编程The Picture Management System Based On Android SmartphoneAbstractWith the development of the Internet,
3、 people are not satisfied with just pictures on their computer, they also hope their shooting digital photos on their phones for himself or his family, friends anytime, anywhere to share fullyto show their own style, smart phones, picture management system therefore came into being. There is a wide
4、variety of social popular image management system at present, including pictures of all kinds of computer management system and smart phone picture management system. This system mainly starting from the concept of modern social popularization of mobile devices, through the analysis of the existing
5、image management system, study and finishing, to determine the feasibility of the image management system based on android smartphones, urgency and necessity.This design is aimed at smartphones now exist, the computer information management application to smartphones, according to the characteristic
6、s of the smart phone, improve some technical and increase innovation, and create the image management system for smart phones, smart phone picture management system can fast and effectively implemented some management functions.Key words:Android;Database Technology;Picture Managemen;Smartphone;Inter
7、net;Mobile Programming目录1 绪论11.1 研究背景11.2 数据库简介11.3 开发环境简介11.3.1 开发工具11.3.2 开发语言21.4 可行性分析22 需求分析42.1 系统需求42.2 需求分析42.3 系统功能分析图43 总体设计63.1 系统结构图63.2 总体功能设计63.2.1 系统设计目标63.3 数据库设计73.3.1 系统数据分析73.3.2 系统ER图73.4 功能流程图83.5 数据字典83.5.1 图片信息表83.5.2 图片类别表93.5.3 图片类型表94 设计思想与实现114.1 用户登陆模块114.2 图片浏览功能134.3 图片
8、缩放功能154.4 图片旋转功能174.5 图片幻灯片播放功能214.6 图片查找功能255 系统测试与运行265.1 系统运行环境265.2 系统测试265.2.1测试目的265.2.2测试方法265.2.3测试举例275.2.4测试结论286 结束语29参考文献30致谢3101 绪论1.1 研究背景随着互联网的发展以及智能手机的日益普及,各大手机厂商之间的竞争越来越激烈,每个手机品牌都想提高自己的产品的销量,为自家手机创造新的卖点。而如今人们流行出门旅游的,自然手中电子产品存放的图片也会越来越多,因此图片管理工作也被关注了起来。手机系统自带的图片浏览器虽然也可以操作手机中的图片,但是这些图
9、片都存放在一起,显得杂乱无章,而且不能对图片进行相应的处理,比如图片缩放,图片旋转,图片幻灯片播放等。智能手机是移动互联网时代的一个标志性的客户端工具,Android智能手机的问世,更是使移动应用开发的风暴席卷而来,越来越多人希望学习Android移动编程。基于此,开发一款实用、操作简单的Android图片管理系统有良好的前景。1.2 数据库简介随着数据处理量的增加,在技术方面产生了数据管理技术。数据管理技术的发展与计算机硬件的发展密切相关。数据库是计算机科学的一个重要分支,如今信息资源已成为各个企业的重要财富和资源。建立一个满足各企业信息处理要求的行之有效的信息系统也成为一个企业生存和发展的
10、重要条件。数据库是按照数据结构来组织、存储和管理数据的仓库,大约在五十年前才出现,随着信息技术的发展和市场的不断壮大,特别是20世纪90年代以来,数据管理不再仅仅是存储和管理数据那么单一,并转变为用户需要的各种数据管理。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的数据系统都是建立在数据库设计之上。数据库的种类很多,从最简单的数据存储有各种表格到能够海量数据存储和管理的大型数据库系统都在各个方面广泛使用。1.3 开发环境简介基于安卓智能手机的图片管理系统是利用Eclipse开发工具,Android移动编程语言进行开发的,本次设计选择在Wi
11、ndows XP上进行。1.3.1 开发工具Eclipse是一个功能完整而且成熟的开发环境。Eclipse是一个开放源代码的项目,任何人都可以下载到Eclipse的源代码,并且在此基础上开发自己的功能插件,加以利用。Eclipse是基于Java的可扩展开发平台,而开放原始码软件让使用者能够取得软件的原始码,有权去修改和散布这个软件。许多程序员喜欢把Eclipse开发工具当作Java集成环境来开发,但Eclipse的功能强大,还可以做Java程序开发之外的很多事情。所有开发人员都可以发挥自己的创意和能力,给Eclipse提供插件,扩展它的功能。Eclipse开发平台的目的,是为多种软件提供开发工
12、具的整合版本,这些工具会成为Eclipse平台的外挂程序。1.3.2 开发语言Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动通信设备,如智能手机,由Google公司和开放手机联盟领导及开发。当前Android平台的应用非常火爆,其发展速度可能已经远远超出Google最初对Android的期望。仅推出几年的Android操作系统,其市场份额目前已经超过了称雄十年的诺基亚Symbian操作系统。也许从时间上看,Android还是一个新生儿,但凭着各方的努力,Android正逐渐走向成熟。Android的更新速度非常快,每隔很短的时间就会有一个新的版本发布。这很大
13、程度上得益于Android平台高度的开放性,这吸引了许多自由开发者去创造出更丰富的软件资源。Android的系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android采用Java作为应用开发的编程语言,相比于iso应用开发采用的Object C来说,其门框相对更低一些。开发者可以充分利用Android设备所支持的硬件功能尽情地发挥自己的创意。1.4 可行性分析Android系统的图片处理能力非常强大,对于2D图形的处理它并没有使用Java的图形处理类,而是自定义了一系列2D图形处理类,简化了
14、开发应用程序的过程,缩短了实用方法的时间,采用Android所开发的系统成本也不高,而且实用性好,操作简单,功能丰富。Android智能手机是移动互联网时代一个标志性的客户端工具,它和传统的手机是有区别的,它像一台“小电脑”,具有独立的操作系统,可以自由的安装、卸载软件,具有强大的计算和储存能力。随着科技的不断进步和社会的进步,智能手机的用户对手机应用软件、软件的可操作性和软件的界面的友好性等方面提出了更高的要求。除了期望所用手机的硬件配置高外,更加期望应用软件能尽可能的为他们提供一个舒适、友好的操作体验。传统手机的图片管理系统现在已经不能满足用户的使用要求。设备轻便化,电子产品的拍照效果越来
15、越好,手机中存放的图片也越来越多,用户将手机中的图片进行管理越来越有必要。Android平台具有高度的开放性,因此开发者可以充分利用Android的开放性,推出功能各具特色的图片管理系统,定会吸引消费者的眼球。2 需求分析2.1 系统需求随着科技的发展和智能手机的不断普及,用户的需求也在不断地变化。系统自带的图片管理系统已经不能满足用户的使用要求。智能手机的拍摄功能越来越好,手机中存放的图片也越来越多,设计一个基于android智能手机的图片管理系统来管理图片很有必要。图片重命名,采用按字母排列组合的方式来排列图片,使图片便于检索,查找图片容易;图片缩放和旋转,能方便用户对图片进行处理;图片管
16、理系统的操作界面友好,能第一时间吸引用户,提高用户与系统的交互性;还需要确保系统的稳定性和安全性,系统正常运行,才能保证软件的质量。2.2 需求分析根据系统分析,图片管理系统的要求如下 :1. 系统需求分析:(1) 能够输入关键字、图片名称、内容等快速定位到需要查找的图片图;(2) 能够实现图片浏览、缩放功能;(3) 能够实现图片类别的管理,包括类别添加、修改删除等功能;(4) 用户交互界面友好;2. 系统性能要求:(1) 系统稳定、安全;2.3 系统功能分析图图片管理系统各功能分析图:用户图片浏览图片查找图片处理滑动浏览图片图片幻灯片效果播放输入关键字查找按描述查找图片缩放图片旋转图片删除图
17、2-1 系统功能分析图3 总体设计3.1 系统结构图图片管理系统结构图:图片管理系统图片浏览图片缩放图片旋转滑动浏览图片删除幻灯片播放图片查找关键字检索按描述检索图片处理图3-1系统结构图3.2 总体功能设计3.2.1 系统设计目标系统设计的目标为:根据图片管理系统的需求来完成图片管理问题,充分考虑系统的安全性和稳定性,在图片管理方面做到更加高效,便捷,方便用户使用,赢取用户口碑,主要完成图片分类,浏览,检索,删除功能。3.3 数据库设计3.3.1 系统数据分析通过对图片管理管理系统的分析,可以得出该系统涉及两类实体:用户、图片。这些实体涉及的数据项有:图片名,编号,日期,类别,类型,描述,大
18、小等等。3.3.2 系统ER图通过对系统实体数据关系的分析,可以画出如下E-R图:图片图片ID图片名称图片摘要图片上传时间属于图片类型类型ID类型名称类型描述属于图片类别类别ID类别名称类别描述图片大小1111n11n11图3-2 系统E-R图3.4 功能流程图以下为功能流程图:主界面用户登录是否会员注册图片浏览图片处理图片查找滑动浏览幻灯片播放图片缩放图片旋转图片删除按关键字查找按描述查找退出图3-3功能流程图3.5 数据字典3.5.1 图片信息表描述:对图片基本信息的详细记录,图片的基本信息包括: Picture ID、 Class ID、Picture Name、Key word、Siz
19、e、Impute Time、Description几个项。表3-1 图片信息表3.5.2 图片类别表描述:图片类别表记录图片的种类,包括三个基本项:Class ID、Class Name和Description。表3-2 图片类别表3.5.3 图片类型表描述:图片类型表记录图片的格式,包括三个基本项:TypeID,Description,TypeName。表3-3 图片类型表4 设计思想与实现4.1 用户登陆模块图4-1登录界面示意图用户登陆模块主要是用来验证用户名和密码是否正确,保证用户信息的安全。输入的用户名和密码都不能为空,如果3次都不能输入不正确的密码,就会提示用户密码错误并自动关闭登
20、陆窗口。密码至少为6位最多12位,密码输入框设置为隐蔽,输入的密码纸显示*,密码隐蔽起来,避免密码泄露。用户名和密码都输入正确,就可以转入图片管理系统主界面。如果需要退出系统,点击退出按钮就能完成。登陆界面实现关键代码:public class BActivity extends Activityimplements OnClickListener/* Called when the activity is first created. */private EditText name = null;private EditText pswd = null;private CheckBox au
21、totest = null;private Button login = null;SharedPreferences sp = null;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.login);sp = this.getSharedPreferences(userinfo, Context.MODE_PRIVATE);init();public void init()name = (EditText) findViewBy
22、Id(R.id.name);pswd = (EditText) findViewById(R.id.pswd);autotest = (CheckBox) findViewById(R.id.autotest);login = (Button) findViewById(R.id.login);if (sp.getBoolean(auto, false)name.setText(sp.getString(name, null);pswd.setText(sp.getString(pswd, null);autotest.setChecked(true);login.setOnClickList
23、ener(this);public void onClick(View v) if (v = login)String name = name.getText().toString();String pswd = pswd.getText().toString();if(name.trim().equals()Toast.makeText(this, 请您输入用户名!, Toast.LENGTH_SHORT).show();return;if(pswd.trim().equals()Toast.makeText(this, 请您输入密码!, Toast.LENGTH_SHORT).show()
24、;return;boolean autoLogin = auto.isChecked();if (autoLogin)Editor editor = sp.edit();editor.putString(name, name);editor.putString(pswd, pswd);editor.putBoolean(autotest, true);mit();elseEditor editor = sp.edit();editor.putString(name, null);editor.putString(pswd, null);editor.putBoolean(auto, false
25、);mit();/ TODO Auto-generated method stub4.2 图片浏览功能图4-2图片浏览示意图当用户点击进入系统,所有图片以缩略图的形式显示出来,用手点击其中一张图片,进入浏览模式,图片以适屏的形式显示出来。左或右滑动屏幕,就可以观看图片,图片跟着滑动方向移动,向左滑动,图片向左移动显示在屏幕;向右滑动,图片向右移动显示在屏幕。图片浏览实现关键代码:public class PImageAdapter extends BaseAdapter int mGalleryItemBackground;private Context context;public Inte
26、ger PImageIds = R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.photo4,R.drawable.photo5,R.drawable.photo6,R.drawable.p7,R.drawable.p8,R.drawable.p9;public PImageAdapter(Context context)this.context = context;TypedArray typedArray = context.obtainStyledAttributes(R.styleable.Gallery);mGalleryIt
27、emBackground = typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);typedArray.recycle();public int getCount() /TODO Auto-generated method stubreturn myImageIds.length;public Object getItem(int position)/ TODO Auto-generated method stubreturn position;public long getItemId(
28、int position) / TODO Auto-generated method stubreturn position;public View getView(int position, View convertView, ViewGroup parent) / TODO Auto-generated method stubImageView iView = new ImageView(context);iView.setImageResource(myImageIdsposition);iView.setScaleType(ImageView.ScaleType.FIT_XY);iVi
29、ew.setLayoutParams(new Gallery.LayoutParams(128, 128);iView.setBackgroundResource(mGalleryItemBackground);return imageView;4.3 图片缩放功能图4-3图片缩放示意图两个手指放在给定的图片上,慢慢撑开两个手指,图片放大显示;两个手指撑开放在给定的图片上,慢慢紧合两个手指,图片缩小显示。主要原理是通过设置onTouchEvent事件监听器,来监听屏幕发生的动作。onTouchEvent监听事件中的有一个参数为MotionEvent,这个参数有一个方法是getSize()。在一
30、个点的时候,这个方法返回的值永远是0,当有两个触点的时候,该方法就会根据两点在屏幕的相对位置的变化而返回不同的值。这时我们只需要计算出两个点之间的距离变化,而距离的大小就是我们希望图片缩放趋势。getX()方法和getY()方法座落在屏幕的两触点之间, 这样图片的缩放趋势就知道了。图片缩放实现的关键代码:public class TouchTestActivity extends Activity /*Called when the activity is first created. */Overridepublic void onCreate(Bundle savedInstanceSta
31、te) super.onCreate(savedInstanceState);/ setContentView(R.layout.main);Viewview = new MultiTouchView(this);setContentView(view);class TouchView extends View private float x1;private float y1;private float x2;private float y2;public TouchView(Context context) super(context);/ TODO Auto-generated cons
32、tructor stubOverridepublic boolean onTouchEvent(MotionEvent event) / TODO Auto-generated method stubfloat size = event.getSize();int szi = (int) size;int dxi = szi 12;int dyit = (1 = r ? 50 : r;Paint paint = new Paint();paint.setColor(Color.BLUE);canvas.drawCircle(x1, y1, r, paint);4.4 图片旋转功能图4-4图片旋
33、转示意图在Android中进行图像旋转需要使用Matrix矩阵对象,它包含了一个3X3的矩阵,专门用于进行图像变换匹配。Matrix没有结构体,必须初始化才能使用,通过reset()方法和set()方法来实现。通过setRotate()方法设置旋转角度,用createBitmap()方法创建一个经过旋转等待处理的Bitmap对象,然后将Bitmap对象绘制到屏幕之上,就能实现旋转操作。图片旋转实现的关键代码:public class Rotation extends Activityprivate TextView mTextView01;Overridepublic void onCreat
34、e(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);Gallery gallery = (Gallery) findViewById(R.id.myGallery1);gallery.setAdapter(new ImageAdapter(this);gallery.setSelection(200);gallery.setOnItemSelectedListener(new OnItemSelectedListener()public void onItemS
35、elected(AdapterView arg0, View arg1, int arg2,long arg3)Toast.makeText(Rotation.this, 当前位置: + arg2, Toast.LENGTH_SHORT).show();public void onNothingSelected(AdapterView arg0);public class ImageAdapter extends BaseAdapter/* 类成员 myContext为Context父类 */private Context myContext;/*声明GalleryItemBackground
36、*/int mGalleryItemBackground;private int myImageIds = R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4,R.drawable.a5, R.drawable.a27 ;public ImageAdapter(Context c)myContext = c;TypedArray a = obtainStyledAttributes(R.styleable.Gallery);/* 取得Gallery属性的Index id */mGalleryItemBackground = a.
37、getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);/* 让对象的styleable属性能够反复使用 */a.recycle();/ public int getCount() return this.myImageIds.length; / 为了使资源循环使用public int getCount()return Integer.MAX_VALUE;public Object getItem(int position)return position;public long getItemId(int posi
38、tion)return position;public View getView(int position, View convertView, ViewGroup parent)/* 创建一个ImageView对象 */ImageView i = new ImageView(this.myContext);i.setPadding(10, 10, 10, 10);i.setAlpha(80);/ i.setImageResource(this.myImageIdsposition);if(position0)position =position+myImageIds.length;i.set
39、ImageResource(this.myImageIdsposition% myImageIds.length);i.setScaleType(ImageView.ScaleType.FIT_XY);i.setBackgroundResource(mGalleryItemBackground);/* 设置这个ImageView对象的宽高,单位为dip */i.setLayoutParams(new Gallery.LayoutParams(85, 72);return i;/* 依据距离中央的位移量利用getScale返回views的大小(0.0f to 1.0f) */public flo
40、at getScale(boolean focused, int offset)return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset);4.5 图片幻灯片播放功能图4-5图片幻灯片播放示意图这个操作主要是为了方便用户,免去用户手指滑动这个动作也能观看手机中存放的图片。系统的设置是每两秒播放一张图片,当用户使用这个功能,只要眼睛盯着屏幕,就能轻松的浏览图片,像观看电影一样。使用控件ViewFlipper来实现图片幻灯片播放效果,如果想加上手势滑动随意切换图片,可以重写ViewAnimator()方法,使幻灯片播放随意的显示图片
41、。图片幻灯片播放实现的关键代码:protected void onCreate(Bundle savedInstanceState) ? ?super.onCreate(savedInstanceState);? detector = new GestureDetector(this);? flipper=new ViewFlipper(this);? flipper.setBackgroundColor(Color.BLACK);? imageCount=imageSource.length-25;? addViewToFlipper();? setContentView(flipper);
42、? startFlipping();public void addViewToFlipper()?for (int i = 0; i imageCount; i+) ?flipper.addView(addMyView(imageSourcei,i);?/*? * 初始化要播放的图片资源? */?public View addMyView(int id,int index)?ImageView imageView=new ImageView(this);?LinearLayout lin=new LinearLayout(this);?lin.setBackgroundResource(R.d
43、rawable.myfacebg);?LinearLayout.LayoutParams params=new LayoutParams? (ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT );?lin.setOrientation(LinearLayout.VERTICAL);?Drawable draw;?draw=this.getResources().getDrawable(id);?imageView.setBackgroundDrawable(draw);?imageView.setLayoutParams(params);?lin.setGravity(Gravity.CENTER);?lin.addView(imageView);?return lin;?imageCount=imageSource.length-25;public boolean onOptionsItemSelected(MenuItem item) ?switch (item.getI