1 / 12

Android 下的多媒体资源管理 报告人:杨战中 2011.12.25

Android 下的多媒体资源管理 报告人:杨战中 2011.12.25. Android 应用程序框架 资源管理软件. 四层结构 第 1 层: Linux 内核库( Linux Kernel ): GNU/Linux 、 GPL 第 2 层:系统运行库 第 3 层:应用程序框架 第 4 层:应用程序. 一、 Android 应用程序框架. (一) Android 软件结构的层次: ( 1 )操作系统层( linux ,相关驱动) 第 1 层使用 C 语言编写,运行于内核空间。

Télécharger la présentation

Android 下的多媒体资源管理 报告人:杨战中 2011.12.25

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android下的多媒体资源管理报告人:杨战中2011.12.25Android下的多媒体资源管理报告人:杨战中2011.12.25

  2. Android应用程序框架 资源管理软件

  3. 四层结构 第1层:Linux内核库(Linux Kernel):GNU/Linux、GPL 第2层:系统运行库 第3层:应用程序框架 第4层:应用程序 一、Android应用程序框架

  4. (一) Android软件结构的层次: (1)操作系统层(linux,相关驱动) 第1层使用C语言编写,运行于内核空间。 Android的核心系统服务依赖于Linux2.6内核,包含了显示驱动、摄像头驱动、蓝牙 驱动、闪存驱动、IPC管道通讯驱动、USB串口驱动、键盘驱动、Wifi无线驱动、音频驱动和电源管理驱动,当然最下层是Linux系统核心驱动主要协调CPU处理和内存管理。 Linux内核也同时作为硬件和软件栈之间的抽象层,它隐藏具体硬件细节而为 上层提供统一的服务 。 (2)系统库(Libraries)和运行库(Android Runtime) 第2层使用C/C++实现,两层之间是内核空间与用户空间的分界线,第一层运行于内核空间,第2、3、4层运行于用户空间。 Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。 1、系统 C 库 :一个从 BSD 继承来的标准 C 系统函数库,专门为基于嵌入式linux 的设备定制的。 2、媒体库 :基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式 回放和录制。

  5. 3、Surface Manager管理库 :对显示子系统的管理,图层功能。 4、WebCore : 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。 5、SGL 图形引擎:Skia的2D图形引擎 6、3D libraries : 基于OpenGL 实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。 7、FreeType引擎 :位图(bitmap)和矢量(vector)字体显示。 8、SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎。 Android 运行库(Android RunTime): Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。  每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制 (3)应用程序框架(Application Framework) 第2层和第3层之间,是本地代码层和JAVA代码层的接口。 通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

  6. 所有的应用程序其实是一组服务和系统,包括:所有的应用程序其实是一组服务和系统,包括: 1、视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 2、内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据 3、资源管理器(Resource Manager):提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。 4、通知管理器 (Notification Manager): 使得应用程序可以在状态栏中显示自定义的提示信息。 5、活动管理器( Activity Manager) :用来管理应用程序生命周期并提供常用的导航回退功能。 (4)应用程序(Application) 第3层和第4层之间,是Android的系统API的接口,对于Android应用程序的开发,第3层以下的内容是不可见的,仅考虑系统API即可。 Android会同一系列核心应用程序包一起发布,这些应用程序包也就是预置的应用程序。主要包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序。所有的应用程序都是使用JAVA语言言写的。

  7. ItemManagerActivity: 加载SD卡多媒体资源信息,以文件夹的方式呈现 显示方式: (1)列表视图: 文件夹缩图:文件夹中最近修改的文件的缩图 文件夹名称(文件个数)、绝对路径、最后修改时间 横屏模式下双列显示 (2)网格视图: 文件夹缩图:前最多四幅图的合成缩图,文件夹名称(文件个数) 菜单功能: (1)排序:按修改日期、按文件夹名称 (2)显示方式:全部、仅图片、仅视频 技术点: (1)缩图的获取 MediaProvider: 创建媒体资源的数据库表,提供对应的操作 MediaScannerCursor:搜索到的信息 (2)缩图的组合: Canvas和Bitmap (3)横屏模式下双列的显示及点击效果的实现: selector (4)动态缩图的显示: Message和Handler Message msg = Message.obtain(mHandler, 1, sendBitmap); public void handleMessage(Message msg){} 二、资源管理软件

  8. ItemShowActivity: 显示选中的文件夹下的内容 (1)多选 (2)Menu: 删除、信息、浏览(幻灯片)、播放(连续播放) 单张和多张时功能的不同、视频和图片的不同 技术点: (1)多选的实现: 缩图和checkbox的组合 (2)删除功能对上层Activity的影响: 生命周期、Sharedpreference ImageScanActivity: 进行单张的图片的浏览以及多张图片的幻灯片展示 功能: (1)放大缩小图片 (2)上下一张图的浏览 技术点: (1)按比例调整到适应屏幕: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm);

  9. String[] imageInfo = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.DISPLAY_NAME,MediaStore.Images.Media.SIZE, MediaStore.Images.Media.DATE_MODIFIED, MediaStore.Images.Media.MIME_TYPE}; Cursor imageCursor = MediaStore.Images.Media.query(getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageInfo); String itemPath = new String(); itemPath = c.getString(1).substring(4);

  10. 谢谢大家! 2011年12月25日

More Related