转自
http://blog.csdn.net/Harrison_zhu/archive/2009/05/15/4187523.aspx
android 多媒体相关代码概况—(JAVA SCOPE) 收藏
1 ./packages/providers/MediaProvider/
编译后生成MediaProvider.apk。会在开机时扫描本机和sdcard上的媒体文件(图片、视频、音频),
并在/data/data/com.android.providers.media/databases 目录下生成internal.db(/system/meida)
和external-?.db(/sdcard)两个数据库文件.此后,所有的多媒体信息都从这两个数据库中获取。
2 ./packages/apps/Music
编译后生成Music.apk,用来播放音频文件。播放列表及相关信息从external-?.db中获取。
3 ./packages/apps/Camera/
编译后生成Camera.apk,对应于Camera、Gallery、Camcorder三个应用。
其中Gallery用来管理所有的视频和图片文件,具有播放、查看、删除等功能。
4 ./frameworks/base/core/java/android/widget/VideoView.java
android 封装的一个视频播放控件,可一通过下面的方式使用:
import android.widget.VideoView;
...
final VideoView view = (VideoView)findViewById(R.id.video_view);
view.setVideoPath("/sdcard/test.mp4");
view.start();
...
在XML描述中加入:
<VideoView android:id="@+id/video_view"
android:layout_width="fill_parent"
android:layout_height="300px"
/>
5 ./frameworks/base/core/java/android/provider/MediaStore.java
android 提供的多媒体数据库, android 的所有多媒体数据信息都可以从这里提取。数据库
的操作通过利用ContentResolver调用相关的接口实现。
6 ./frameworks/base/media/java/android/media
提供了android上 多媒体应用层的操作接口。主要说明:
MediaPlayer.java:提供了视频、音频、数据流的播放控制等操作的接口。
MediaRecorder.java:提供了视频、音频录制的接口。
AudioManager.java: 提供了音频音量,以及播放模式(静音、震动等)的控制。
RingtoneManager.java、Ringtone.java: 提供了提醒、闹钟、事件等声音的播放控制。
MediaScanner*.java: 提供了媒体扫描接口的支持。
AudioTrack.java:SoundPool.java 播放android application的生音资源。
AudioRecord.java: 为android applicatio 提供录音设置(sample、chanel等)的接口;
简单的例子:
播放一个文件:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(“/sdcard/test.mp3”);
mp.prepare();
mp.start();
播放raw resouce
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
录音:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(“/sdcard/test.amr”);
recorder.prepare();
recorder.start();
...
alarmclock 调用Media 的基本过程:
...
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setVolume(IN_CALL_VOLUME, IN_CALL_VOLUME);
// 检查是否是在通话中,若是,就换用较小的声音提示。
if (tm.getCallState() != TelephonyManager.CALL_STATE_IDLE) {
Log.v("Using the in-call alarm");
mMediaPlayer.setVolume(IN_CALL_VOLUME, IN_CALL_VOLUME);
setDataSourceFromResource(context.getResources(),
mMediaPlayer, R.raw.in_call_alarm);
}
else
{
mMediaPlayer.setDataSource(context, Uri.parse(mAlert));
}
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
mMediaPlayer.prepare();
...
android 多媒体相关代码概况二(FrameWork相关)
由 dycl3 于 2009-04-22 18:50
1、./frameworks/base/media/jni
JAVA本地调用部分。编译后生成的目标是libmedia_jni.so.
android_media_MediaPlayer.cpp: MediaPlayer 的JAVA本地调用部分。
它定义了一个JNINativeMethod(JAVA本地调用方法)类型的数据gMethods,
用来描述,接口的关联信息。
android_media_MediaRecorder.cpp: 定义了录音的本地调用实现。
android_media_AmrInputStream.cpp: amr 编码相关的本地调用实现。
android_media_MediaScanner.cpp: 媒体扫描相关的本地调用实现。
soundpool/android_media_SoundPool.cpp:定义了音频系统的本地调用实现。
2、 ./frameworks/base/media/libmedia
./frameworks/base/include/media/
这里为多媒体的的底层库,编译生成libmedia.so.这个库处于android多媒体架构的核心
位置,它对上层提供的接口主要有MediaPlayer、MediaRecorder、MediaScanner等类.
android.meida.* 就是通过libmedia_jni.so 调用libmedia.so实现的接口实现的。
还需要注意的是MediaPlayerInterface.h 这个头文件,他定义了MediaPlayer的
底层接口。它主要定义了下面的类:
MediaPlayerBase:MediaPlayerInterface的抽象基础类,里面包含了音频输出、
视频输出、播放控制等的基本接口。
MediaPlayerInterface、MediaPlayerHWInterface 继承自MediaPlayerBase针对不同输出作出的扩展。
3、 ./frameworks/base/media/libmediaplayerservice
这是多媒体的服务部分,编译生成libmediaplayerservice.so.
MediaPlayerService.cpp 实现了一个名字为media.player的服务,MediaPlayer通过
IPC同其实现通讯,以建立合适的播放器。
在MediaPlayerService.cpp 会根据playerType的类型来决定创建不同的播放器。
现有的播放器类型有PVPlayer、MidiFile、VorbiPlayer三个播放器类,他们都是有继承
MediaPlayerInterface得到,具有相同的播放接口。我们这里可以通过继承MediaPlayerInterface
的方法,实现增加新的播放器实现。
4、 ./external/opencore/
opencore多媒体播放器部分,编译主要生成libopencoreplayer.so。他提供给上层的主要有两个部分:
* PVPlayer:提供了媒体的播放功能。
* PVAuthor:提供媒体的记录的功能。
opencore/android 目录下实现了opencore同libmediaplayerservice.so的交互接口。
分享到:
相关推荐
### Android多媒体框架详细分析 #### 一、摘要 本文旨在深入剖析Android系统的多媒体架构,并重点关注其内部机制,尤其是OpenCore的工作原理。通过本篇分析,读者将了解到Android多媒体架构的层次结构、各组件间的...
本书名为《Android多媒体编程从初学到精通》,由苗忠良等编著,是一本详细分析Android平台下多媒体编程的知识与技术的教材。该书详细讲解了从基础到进阶的Android多媒体编程技术,内容覆盖了多媒体开发的多个方面,...
Android多媒体框架是Android操作系统的核心组成部分之一,主要负责处理音频、视频和图像等多媒体内容的编码、解码、播放和显示。这个框架的构建基于Android系统的五大部分:Linux Kernel、Android Runtime、...
在深入分析Android多媒体构架之前,我们必须先了解Android系统作为一个整体是如何处理多媒体信息的。Android多媒体构架是一套复杂的系统,它涵盖了音频、视频、图形和图像的捕获、处理和播放。本分析报告将侧重于Ice...
《Android多媒体应用开发详解》 一、Android多媒体应用概述 Android多媒体应用开发是移动应用开发中的重要组成部分,涉及音频、视频、图像等多种媒体格式的处理与展现。Android平台提供了丰富的多媒体API,使得...
Android 多媒体框架分析 Android 多媒体框架是 Android 系统中负责处理多媒体任务的核心组件,包括音频、视频、图像等多媒体数据的处理和播放。基于 PacketVideo 公司的 OpenCORE 平台,多媒体框架提供了一套通用的...
这篇博客"android多媒体框架分析"将深入探讨这一领域,旨在帮助开发者理解和优化多媒体应用的性能。由于没有具体的描述,我们将根据标题和标签来推测文章可能涵盖的关键知识点。 1. **多媒体框架概述**: Android...
### Android多媒体框架知识点详解 #### 一、概览 **标题**:“Android多媒体框架.pdf”这一文档主要聚焦于Android系统中的多媒体框架,旨在为开发者提供深入理解与掌握Android平台多媒体功能的技术指南。 **描述*...
本节将深入探讨Android多媒体开发的高级编程技巧,帮助开发者实现更高效、更丰富的多媒体应用。 1. **多媒体框架概述** Android的多媒体框架基于开放移动联盟(OMA)的开放移动 Alliance Digital Media ...
Android多媒体框架是Android系统中处理音频、视频和图像的核心组件,为开发者提供了强大的多媒体功能支持。这个框架位于Android系统的Libraries层,主要由C/C++编写,并通过JNI(Java Native Interface)与Java层...
在Android平台上进行多媒体编程是一...通过理解和掌握以上知识点,开发者可以构建出功能丰富的Android多媒体应用,为用户提供丰富的视听体验。在实际开发中,应结合具体需求灵活运用,同时注意性能优化和用户体验设计。
《Android多媒体开发高级编程》是一本专为Android平台上的多媒体应用开发者量身打造的专业书籍。这本书深入探讨了如何在智能手机和平板电脑上构建图形、音乐和视频应用,涵盖了Android多媒体开发的各个方面,对于想...
理解多媒体API的工作原理,以及如何优化性能和用户体验,是开发高质量Android多媒体应用的关键。 总结,Android多媒体应用开发涉及到图像处理、音频和视频操作,以及2D和3D图形渲染等多个层面。开发者需要深入理解...
《Android多媒体编程从初学到精通》是一本专为Android开发者设计的书籍,旨在帮助读者深入理解和熟练掌握在Android平台上进行多媒体编程的各种技术和实践。作者苗忠良等人通过丰富的实例和详细讲解,引领读者逐步...
**Android 多媒体文件选择器详解** 在移动应用开发中,提供用户选择多媒体文件(如图片和视频)的功能是常见的需求。"Android 多媒体文件选择器" 是一个专为此目的设计的开源解决方案,由 getchute.com 开发,并且...
【Android多媒体框架与开发应用框架】 在Android系统中,多媒体框架是实现音频、视频和图像处理的核心组件,而应用框架则是开发者构建应用程序的基础。本文将深入解析这两个关键领域的概念和工作原理。 一、...