《電子技術應用》
您所在的位置:首頁 > 顯示光電 > 設計應用 > Android重力感應實現方式簡介
Android重力感應實現方式簡介
摘要: Android中對于圖形界面以及多媒體的相關操作比較容易實現。而且對于大多數手機用戶來說,他們主要也就是根據這些方面的功能來對系統那個進行修改。我們可以通過本文介紹的Android多媒體框架的源碼解讀,來具體分析一下這方面的基本知識。
Abstract:
Key words :

  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: 輸入輸出控制的抽象接口

  * protocols:主要是與網絡相關的RTSP、RTP、HTTP等協議的相關內容

  * pvcommon:pvcommon庫文件的Android.mk文件,沒有源文件。

  * pvplayer:pvplayer庫文件的Android.mk文件,沒有源文件。

  * pvauthor:pvauthor庫文件的Android.mk文件,沒有源文件。

  * tools_v2:編譯工具以及一些可注冊的模塊。

  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類和node factory類。

  播放引擎PVPlayerEngine類中有PVPlayerNodeRegistry iPlayerNodeRegistry成員變量。

  在PVPlayerNodeRegistry的構造函數中,將 AMR, AAC, MP3等splitter的輸入與輸出類型標示和node factory類中的create node與release delete接口通過PVPlayerNodeInfo類push到Oscl_Vector《PVPlayerNodeInfo, OsclMemAllocator》 iType成員變量中。

  當前Splitter的匹配過程

  PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector《PVUuid, OsclMemAllocator》& aUuids)函數的功能是根據輸入類型和輸出類型,在已注冊的node vector中尋找是否有匹配的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.static void android_media_MediaPlayer_setDataSource

  (JNIEnv *env, jobject thiz, jstring path)

  此函數中先得到當前的MediaPlayer實例,然后調用其setDataSource函數,傳入路徑

  3.status_t MediaPlayer::setDataSource(const char *url)

  此函數通過調getMediaPlayerService()先得到當前的MediaPlayerService, const sp《IMediaPlayerService》& service(getMediaPlayerService());

  然后新建一個IMediaPlayer變量, sp《IMediaPlayer》 player(service-》create(getpid(), this, fd, offset, length));

  在sp《IMediaPlayer》 MediaPlayerService::create(pid_t pid, const sp《IMediaPlayerClient》& client, const char* url)中

  調status_t MediaPlayerService::Client::setDataSource(const char *url)函數,Client是MediaPlayerService的一個內部類。

  在MediaPlayerService::Client::setDataSource中,調sp《MediaPlayerBase》 MediaPlayerService::Client::createPlayer(player_type playerType)

  生成一個繼承自MediaPlayerBase的PVPlayer實例。

  以上就是對Android多媒體框架的源代碼的解讀。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲第一中文字幕| 亚洲视频在线视频| 日韩小视频在线观看| 伊人色综合久久天天五月婷| 国产精品一区二区久久久久| 欧美日韩你懂的| 欧美福利小视频| 久久一区激情| 久久免费视频网| 久久久亚洲高清| 久久精品男女| 久久九九热免费视频| 欧美一级视频免费在线观看| 亚洲欧美日韩在线不卡| 亚洲资源av| 亚洲免费在线电影| 亚洲欧美日韩区| 午夜老司机精品| 亚洲欧美制服另类日韩| 亚洲免费影视第一页| 亚洲欧美春色| 欧美一区成人| 久久精品视频在线看| 久久米奇亚洲| 麻豆精品视频| 欧美精品福利视频| 欧美日韩视频免费播放| 欧美色精品在线视频| 国产精品视频免费观看| 国产日产亚洲精品| 狠狠色香婷婷久久亚洲精品| 1024成人网色www| 91久久午夜| 一本色道久久综合亚洲二区三区| 一区二区三区免费网站| 亚洲一区二区三区四区视频| 亚洲欧美日韩国产综合| 欧美在线视频一区二区三区| 亚洲国产精品成人综合| 亚洲免费电影在线| 亚洲在线一区| 久久久国产精品一区二区三区| 免费久久久一本精品久久区| 欧美理论电影在线播放| 国产精品免费视频观看| 国产一区视频观看| 亚洲国产精品嫩草影院| 一区二区毛片| 久久福利毛片| 在线亚洲一区观看| 欧美一级一区| 欧美aaaaaaaa牛牛影院| 欧美亚男人的天堂| 国产自产女人91一区在线观看| 亚洲国产老妈| 亚洲免费视频一区二区| 亚洲国产精品美女| 亚洲网站在线观看| 久久久久久久久久久成人| 欧美女人交a| 国产日韩一区二区三区| 亚洲国产成人精品女人久久久| 一区二区欧美在线观看| 久久99在线观看| 亚洲无限av看| 久久阴道视频| 国产精品大片wwwwww| 黑丝一区二区三区| av成人毛片| 亚洲国产高清aⅴ视频| 亚洲影院色在线观看免费| 鲁大师成人一区二区三区| 国产精品黄视频| 91久久午夜| 欧美影院在线播放| 亚洲一二三区视频在线观看| 久久在线视频| 国产精品视频一二三| 亚洲国产三级在线| 欧美在线一二三| 亚洲免费观看高清完整版在线观看| 欧美一区二区三区久久精品| 欧美精品xxxxbbbb| 韩日成人av| 亚洲午夜免费视频| 99视频精品在线| 麻豆精品在线视频| 国产日产亚洲精品| 国产精品99久久久久久白浆小说| 亚洲高清激情| 欧美一区观看| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产91| 久久精品官网| 久久黄金**| 国产精品久久久久影院亚瑟| 亚洲精品国精品久久99热一| 久久精品一区二区三区不卡| 欧美在线观看日本一区| 国产精品草莓在线免费观看| 91久久精品一区二区三区| 久久精品国产亚洲5555| 久久不射2019中文字幕| 国产精品乱码久久久久久| 99riav国产精品| 日韩视频免费在线观看| 欧美aⅴ99久久黑人专区| 禁久久精品乱码| 久久av免费一区| 欧美在线精品免播放器视频| 国产精品国产一区二区| 艳妇臀荡乳欲伦亚洲一区| 亚洲美女黄色| 欧美成人免费在线视频| 玉米视频成人免费看| 欧美在线观看一区二区三区| 欧美一区二视频在线免费观看| 国产精品久久一区主播| 亚洲网友自拍| 亚洲一区二区精品在线观看| 欧美日韩在线视频首页| 亚洲精品一区二区三区婷婷月| 亚洲精品欧洲| 欧美极品一区| 亚洲精品久久久久| 99精品视频免费| 欧美日韩精品福利| 99精品国产99久久久久久福利| 一区二区三区四区五区在线| 欧美日韩精品一区二区三区| 亚洲另类视频| 亚洲午夜久久久久久久久电影网| 欧美亚男人的天堂| 亚洲在线免费观看| 欧美在线播放高清精品| 国产一区二区黄色| 久久精品视频在线播放| 免费黄网站欧美| 亚洲精品美女在线观看| 一本一道久久综合狠狠老精东影业| 欧美日韩国产综合新一区| 一区二区三区精品视频在线观看| 亚洲淫片在线视频| 国产欧美精品在线| 久久精品免费看| 欧美高清视频| 一级成人国产| 欧美一区二区三区播放老司机| 国产一区二区高清视频| 亚洲国产一区二区精品专区| 欧美精品一区二| 亚洲视频一起| 久久久久www| 亚洲国产另类久久久精品极度| 一本色道久久综合亚洲91| 国产精品久久久久一区二区三区共| 香蕉亚洲视频| 免费在线成人av| av72成人在线| 久久久91精品| 亚洲国产欧美一区| 亚洲男人的天堂在线| 国产一区二区按摩在线观看| 亚洲日本一区二区三区| 欧美日韩综合在线| 性欧美8khd高清极品| 欧美电影在线| 一区二区免费看| 久久免费午夜影院| 最新日韩精品| 性欧美长视频| 亚洲国内精品| 午夜精品久久久久久久久久久久| 国内精品久久久久久影视8| 一二美女精品欧洲| 国内精品99| 亚洲视频久久| 国内成人精品2018免费看| 99在线|亚洲一区二区| 国产欧美亚洲精品| 99国产精品一区| 国产欧美精品xxxx另类| 亚洲另类自拍| 国产精品一二一区| 亚洲精品影院| 国产视频不卡| 亚洲天堂男人| 亚洲丶国产丶欧美一区二区三区| 先锋影音国产精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美日韩国产在线一区| 欧美一区二区三区播放老司机| 欧美全黄视频| 欧美在线观看天堂一区二区三区| 欧美日韩一区二区在线| 亚洲国产精品黑人久久久| 国产精品日韩在线观看| 日韩一区二区精品葵司在线| 国模 一区 二区 三区| 亚洲欧美色婷婷|