12
Android 下下下下 下下下下 下下下 下下下 2011.12.25

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Android下的多媒体资源管理

报告人:杨战中

2011.12.25

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

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

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

一、 Android 应用程序框架

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

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

(一) 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 ;该库支持多种常用的音频、视频格式 回放和录制。

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

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 。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

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

所有的应用程序其实是一组服务和系统,包括: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 语言言写的。

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

二、资源管理软件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){}

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

ItemShowActivity: 显示选中的文件夹下的内容( 1 )多选( 2 ) Menu: 删除、信息、浏览(幻灯片)、播放(连续播放)

单张和多张时功能的不同、视频和图片的不同技术点:( 1 )多选的实现 : 缩图和 checkbox 的组合( 2 )删除功能对上层 Activity 的影响 : 生命周期、 Sharedpreference

ImageScanActivity: 进行单张的图片的浏览以及多张图片的幻灯片展示功能:( 1 )放大缩小图片( 2 )上下一张图的浏览技术点:( 1 )按比例调整到适应屏幕 :

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

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

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);

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

谢谢大家!

2011 年 12 月 25日