Android重力感应实现方式简介
本文摘要:Android中针对用户界面及其多媒体的涉及到作业者比较更非常容易构建。并且针对大部分移动用户而言,她们关键也就是依据这种层面的作用来系统对哪个进行修改。我们可以根据文中解读的Android多媒体框架的源代码了解,来深入分析一下这些方面的基础知识。 Android多媒体框架的编码在下列文件目录中:external/opencore/。

亚博买球

Android中针对用户界面及其多媒体的涉及到作业者比较更非常容易构建。并且针对大部分移动用户而言,她们关键也就是依据这种层面的作用来系统对哪个进行修改。我们可以根据文中解读的Android多媒体框架的源代码了解,来深入分析一下这些方面的基础知识。  Android多媒体框架的编码在下列文件目录中:external/opencore/。

这一文件目录是Android多媒体框架的网站根目录,在其中包含的根目录以下下图:  *android:这里边是一个顶层的库,它根据PVPlayer和PVAuthor的SDK构建了一个为Android用以的Player和Author。  *baselibs:包含算法设计和线程安全性等內容的最底层库  *codecs_v2:这是一个內容较多的库,关键包含编码解码的构建,及其一个OpenMAX的构建  *engines:包含PVPlayer和PVAuthor模块的构建  *extern_libs_v2:包含了khronos的OpenMAX的头文件  *fileformats:格式文件的据确立解析(parser)类  *nodes:编码解码和文档解析的每个node类。  *oscl:电脑操作系统相溶库  *pvmi:I/O操控的抽象概念控制模块  *protocols:主要是与互联网涉及到的RTSP、RTP、HTTP等协议书的涉及到內容  *pvcommon:pvcommon库文件的Android.mk文档,没源代码。

  *pvplayer:pvplayer库文件的Android.mk文档,没源代码。  *pvauthor:pvauthor库文件的Android.mk文档,没源代码。  *tools_v2:c语言编译器专用工具及其一些可登记的控制模块。

  Splitter的界定与复位  以wav的splitter为例证,在fileformats文件目录下有解析wav文件文件格式的pvwavfileparser.cpp文件,在nodes文件目录上面有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h,pvmf_wavffparser_port.h等文档。  大家由底往上面看,vwavfileparser.cpp中的PV_Wav_Parser类有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的组员函数,该类理应便是最终的解析类。大家寻找PV_Wav_Parser类被选用的地区由此可知,在PVMFWAVFFParserNode类中有PV_Wav_Parser的一个表针成员函数。

  再作寻找由此可知,PVMFWAVFFParserNode类是根据PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()组员函数溶解的。而CreatePVMFWAVFFParserNode()函数是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()类结构函数中根据PVPlayerNodeInfo类被备案到Oscl_Vector《PVPlayerNodeInfo,OsclMemAllocator》的vector中,在这个结构函数中,AMR,mp3等node也是某种意义被备案的。

  由上由此可知,Android多媒体框架中对splitter的管理方法也是与ffmpeg等类似,全是在框架的复位时备案的,只不过是Opencore备案的是每一个splitter的factory函数。  具体描述一下splitter的界定与复位全过程:  每一个splitter都会fileformats文件目录下有一个相匹配的根目录,其上面有分别的解析类。

  每一个splitter都会nodes文件目录下相关相匹配的根目录,其上面有分别的统一控制模块的node类和nodefactory类。  开播模块PVPlayerEngine类中有PVPlayerNodeRegistryiPlayerNodeRegistry成员函数。

  在PVPlayerNodeRegistry的结构函数中,将AMR,AAC,MP3等splitter的輸出与键入种类标出和nodefactory类中的createnode与releasedelete控制模块根据PVPlayerNodeInfo类push到Oscl_Vector《PVPlayerNodeInfo,OsclMemAllocator》iType成员自变量中。  当今Splitter的给出全过程  PVMFStatusPVPlayerNodeRegistry::QueryRegistry(PVMFFormatTypeaInputType,PVMFFormatTypeaOutputType,Oscl_Vector《PVUuid,OsclMemAllocator》aUuids)函数的作用是依据輸出种类和键入种类,在登记的nodevector中寻找否有给出的node,有得话传入其唯一识别标志PVUuid。  从QueryRegistry这一函数至底向上寻找可得到 ,在android中splitter的给出全过程以下:  android_media_MediaPlayer.cpp当中界定了一个JNINativeMethod(JAVA当地启用方式)种类的数组gMethods,供java编码中启用MultiPlayer类的setDataSource组员函数时找寻相匹配的c 函数  1.{setDataSource,(Ljava/lang/String;)V,(void*)  android_media_MediaPlayer_setDataSource},  2.staticvoidandroid_media_MediaPlayer_setDataSource  (JNIEnv*env,jobjectthiz,jstringpath)  此函数中再作得到 当今的MediaPlayer案例,随后启用其setDataSource函数,始于途径  3.status_tMediaPlayer::setDataSource(constchar*url)  此函数根据调getMediaPlayerService()再作得到 当今的MediaPlayerService,constsp《IMediaPlayerService》service(getMediaPlayerService());  随后新创建一个IMediaPlayer自变量,sp《IMediaPlayer》player(service-》create(getpid(),this,fd,offset,length));  在sp《IMediaPlayer》MediaPlayerService::create(pid_tpid,constsp《IMediaPlayerClient》client,constchar*url)中  调status_tMediaPlayerService::Client::setDataSource(constchar*url)函数,Client是MediaPlayerService的一个内部类。

  在MediaPlayerService::Client::setDataSource中,调sp《MediaPlayerBase》MediaPlayerService::Client::createPlayer(player_typeplayerType)  溶解一个承续自MediaPlayerBase的PVPlayer案例。  之上便是对Android多媒体框架的源码的了解。


本文关键词:Android,重力,感应,实现,方式,简介,Android,亚博APP买球,中

本文来源:亚博买球-www.gumziyuan.com