亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android平臺(tái)的VLC播放器實(shí)現(xiàn)機(jī)制研究

        2015-09-12 06:42:28陳建明
        關(guān)鍵詞:用戶(hù)界面設(shè)置多媒體

        陳建明

        (紹興市人力資源和社會(huì)保障局 信息管理中心,紹興312000)

        陳建明(工程師),主要研究方向?yàn)槎嗝襟w通信、網(wǎng)絡(luò)安全。

        引 言

        VLC(Video LAN Client)是一款開(kāi)源軟件,其安裝簡(jiǎn)單且運(yùn)行穩(wěn)定,支持多種平臺(tái)(包括 Windows、Linux、Mac、Unix)。VLC Media Player媒體播放器是為多媒體播放而服務(wù)的軟件,系統(tǒng)占用率非常低,支持大多數(shù)的主流音視頻格式,如MPEG、WMV、MP4、MOV、3GP、FLV(Flash)等。既可播放DVD 影碟,又支持在線媒體播放。

        目前VLC已完全支持中文,被國(guó)內(nèi)用戶(hù)廣泛使用,也被越來(lái)越多Android平臺(tái)愛(ài)好者所關(guān)注[1]。在智慧校園和數(shù)字化校園的建設(shè)中,隨著多媒體通信的不斷應(yīng)用,在網(wǎng)絡(luò)教學(xué)和遠(yuǎn)程教育過(guò)程中應(yīng)用移植和擴(kuò)展VLC源碼的方案越來(lái)越多[2]。本項(xiàng)目是開(kāi)發(fā)一款基于Android平臺(tái)的學(xué)習(xí)資源視頻點(diǎn)播平臺(tái),以擴(kuò)展遠(yuǎn)程教育中對(duì)移動(dòng)學(xué)習(xí)的支持方式。通過(guò)對(duì)VLC源碼深入分析和核心模塊移植而進(jìn)行二次開(kāi)發(fā),利用其良好的多媒體格式支持庫(kù)和UI框架,大大加快了項(xiàng)目的開(kāi)發(fā)進(jìn)度。

        1 Android平臺(tái)依賴(lài)庫(kù)編譯

        由于VLC的跨平臺(tái)性,在多個(gè)平臺(tái)下都可成功編譯和移植,本次項(xiàng)目討論在Ubuntu 12.10環(huán)境下的VLC庫(kù)生成過(guò)程。首先系統(tǒng)環(huán)境需要安裝ant、gawk、libtool、m4、patch、pkg-config、ragel等 工 具,使 用“apt-get builddep vlc”命令安裝VLC相關(guān)依賴(lài)庫(kù),完成后安裝JDK、Android SDK、NDK,并在/etc/profile中設(shè)置相應(yīng)的環(huán)境變量和CPU 類(lèi)型,最后使用“sh compile.sh”命令開(kāi)始編譯。成 功 后 在vlc-android/libs/armeabi目 錄 下 生 成libiomxgingerbread.so、libiomx-h(huán)c.so、libiomx-ics.so和libvlcjni.so四個(gè)動(dòng)態(tài)庫(kù)。需要注意的是,盡量保證Ubuntu系統(tǒng)版本和JDK、SDK、NDK 版本為最新,編譯過(guò)程如遇無(wú)法下載依賴(lài)文件導(dǎo)致終止,則手動(dòng)下載該文件后存放到android/vlc/contrib/tarballs/目錄下。

        當(dāng)VLC的Android工程在eclipse中編譯時(shí),需要同時(shí)導(dǎo)入ActionBarSherlock、SlidingMenu和WheelView 三個(gè)依賴(lài)庫(kù)的工程,并在主工程屬性中設(shè)置正確的依賴(lài)庫(kù)路徑。如出現(xiàn)無(wú)法生成目標(biāo)版本的apk文件錯(cuò)誤,有可能是由于SDK版本與VLC工程文件中目標(biāo)版本不符,需要修改android-vlc目錄下project.properties文件中的target值。

        2 源碼實(shí)現(xiàn)分析

        從UI設(shè)計(jì)模式和底層數(shù)據(jù)庫(kù)操作兩個(gè)方面對(duì)Android平臺(tái)上的VLC播放器實(shí)現(xiàn)機(jī)制進(jìn)行分析。在編譯過(guò)程中可以發(fā)現(xiàn),整個(gè)VLC工程除了C代碼與播放相關(guān)的編解碼庫(kù)之外,還有3個(gè)與UI設(shè)計(jì)緊密相關(guān)的依賴(lài)工程。

        2.1 UI設(shè)計(jì)分析

        VLC在Android終端上的運(yùn)行界面(如圖1所示)非常簡(jiǎn)潔、美觀、易于操作,主要由操作欄、側(cè)邊導(dǎo)航、主框架構(gòu)成。

        圖1 VLC主操作界面

        操 作 欄(Action bar)是Android用戶(hù)界面中最經(jīng)典的用戶(hù)界面設(shè)計(jì)模式之一[3],位 于 用 戶(hù) 界 面 視圖中的頂欄(如圖1 中標(biāo)識(shí)1),左邊由應(yīng)用圖標(biāo)和上下文形式的操作按鈕組成,右邊包含了一個(gè)溢出菜 單。在 Android 3.0 Honeycomb 版本的SDK中添加了對(duì)操作欄的支持,在4.0 版本中加入了對(duì)手機(jī)操作欄的支持。這里使用了第三方開(kāi)源庫(kù)ActionBarSherlock,能夠支持Android舊版本。

        具體實(shí)現(xiàn)在prepareActionBar()函數(shù)里,先調(diào)用set-NavigationMode()接口設(shè)置操作欄的風(fēng)格,支持標(biāo)準(zhǔn)、列表和標(biāo)簽3種模式,這里先設(shè)置NAVIGATION_M(jìn)ODE_STANDARD值為標(biāo)準(zhǔn)模式,再調(diào)用setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE)接口顯示標(biāo)題,最后調(diào) 用setDisplayHomeAsUpEnabled(true)顯 示Up 按鈕。當(dāng)然,ActionBarSherlock還提供很多其他的設(shè)置以支持更復(fù)雜和個(gè)性化的設(shè)計(jì),這里只描述與本項(xiàng)目相關(guān)的。

        對(duì)于Android 3.0之后的版本,應(yīng)用啟動(dòng)時(shí),如果附帶操作欄會(huì)在view 創(chuàng)建完成后調(diào)用onCreateOptions-Menu()來(lái)對(duì)Option Memu進(jìn)行布局。這里的布局文件是R.menu.media_library,菜單項(xiàng)包括搜索、刷新等。需要注意的是,showAsAction屬性值ifRoom 能夠讓菜單根據(jù)操作欄右側(cè)的空間來(lái)響應(yīng)式布局,根據(jù)屏幕尺寸動(dòng)態(tài)調(diào)整顯示菜單項(xiàng)個(gè)數(shù)。

        整個(gè)主框架分為左邊導(dǎo)航和右邊內(nèi)容顯示,該布局為一個(gè)全屏的FrameLayout。圖1 中標(biāo)識(shí)2 部分是側(cè)邊導(dǎo)航面板,與儀表盤(pán)設(shè)計(jì)模式相比,提供了對(duì)媒體文件更直接的分類(lèi)訪問(wèn)。通過(guò)輕擊操作欄上的Up按鍵或者邊緣滑動(dòng)手勢(shì)打開(kāi)側(cè)邊導(dǎo)航面板。這里使用了開(kāi)源庫(kù)Sliding-Menu項(xiàng)目實(shí)現(xiàn),導(dǎo)航通過(guò)mMenu.setBehindOffset()接口設(shè)置導(dǎo)航面板尺寸,為導(dǎo)航項(xiàng)設(shè)置容器,封裝到listview中,在SidebarAdapter類(lèi)中可看到放入了Video、Audio等4個(gè)選擇項(xiàng)。右邊內(nèi)容顯示部分由R.layout.main布局,使用幀布局來(lái)局部刷新顯示內(nèi)容,定義了一個(gè)專(zhuān)用的幀框架作為片段的占位符,其ID 為fragment_placeholder。最后通過(guò)SlidingMenu的接口setMenu(sidebar)和setContent(main)來(lái)呈現(xiàn)。

        主框架的內(nèi)容顯示就是圖1中標(biāo)識(shí)3部分,在導(dǎo)航的listview 中注冊(cè)了點(diǎn)擊監(jiān)聽(tīng)器OnItemClickListener(),其實(shí)現(xiàn)右側(cè)內(nèi)容顯示流程如圖2所示。

        圖2 主框架內(nèi)容顯示流程

        內(nèi)容顯示使用了片段(fragment)來(lái)制作響應(yīng)式用戶(hù)界面。根據(jù)用戶(hù)點(diǎn)擊的導(dǎo)航項(xiàng)獲取不同的ID 標(biāo)識(shí),在連續(xù)2次輕擊過(guò)程中,多媒體文件有可能做了添加或刪除操作,所以需要把a(bǔ)ctivity后退棧中的片段清空,然后根據(jù)ID號(hào)提交對(duì)應(yīng)的片段來(lái)添加、刪除或替換。實(shí)現(xiàn)這些操作需要定義一個(gè)FramentManager實(shí)例,并能支持事務(wù)更改片段,這里只做了replace()操作。正是因?yàn)闃?gòu)建了活動(dòng)與片段交互的方法,才使多媒體文件的瀏覽過(guò)程具有了很大的靈活性。

        2.2 多媒體文件的數(shù)據(jù)庫(kù)管理

        Android系統(tǒng)自帶關(guān)系型數(shù)據(jù)庫(kù)SQLite,能輕松實(shí)現(xiàn)管理本地存儲(chǔ)的多媒體文件,包括音頻和視頻文件類(lèi)型。VLC實(shí)現(xiàn)文件管理的功能包括按文件類(lèi)型(音頻或視頻)、存儲(chǔ)目錄或者搜索過(guò)的歷史記錄來(lái)分別展現(xiàn)和管理,其功能實(shí)現(xiàn)的源文件主要包括MediaLibrary.java、Media-Database.java。

        數(shù)據(jù)庫(kù)操作類(lèi)DatabaseHelper繼承SQLiteOpenHelper輔助類(lèi)來(lái)管理數(shù)據(jù)庫(kù)的創(chuàng)建和版本,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行一些操作[4]。vlc_database數(shù)據(jù)庫(kù)創(chuàng)建的表包括媒體文件信息表Media_table、存放路徑表directories_table、播放排列表playlist_table、playlist_media_table和歷史查找表searchhistory_table五個(gè)表,與媒體文件信息相關(guān)的Media_table表內(nèi)容非常關(guān)鍵,各字段和數(shù)據(jù)類(lèi)型如表1所列。

        表1 Media_table表信息

        利用adb調(diào)試程序可查看模擬器中數(shù)據(jù)庫(kù)的實(shí)際信息,如Media_table表中存儲(chǔ)的一條信息格式如下:

        file:///mnt/sdcard/When%20You%20Believe.mp3|0|276148|1||When You Believe|Mariah Carey|R&b|Mariah Carey Story|0|0||-1|-2

        媒體文件的信息獲取由Media類(lèi)來(lái)實(shí)現(xiàn),通過(guò)調(diào)用libVLC.readTracksInfo(mLocation)接口把文件信息保存到TrackInfo類(lèi)中。系統(tǒng)啟動(dòng)時(shí)會(huì)在目錄/media/、/Android/data/和外部存儲(chǔ)SD卡上查找后綴是音頻或視頻的文件,讀取信息并保存到表Media_table中。libVLC類(lèi)是底層VLC庫(kù)提供的播放接口,里面的方法是通過(guò)native關(guān)鍵字定義。

        這正是利用VLC 庫(kù)來(lái)開(kāi)發(fā)Android上播放器的優(yōu)點(diǎn),JNI是雙向接口,不僅可以通過(guò)JNI在Java代碼中訪問(wèn)Native模塊,還可以在Native代碼中嵌入一個(gè)JVM,并通過(guò)JNI訪問(wèn)運(yùn)行于其中的Java模塊,實(shí)現(xiàn)了Java代碼與Native代碼的互訪,提高了多媒體文件解碼和定位的效率。

        基于5張表中的信息,上層可以實(shí)現(xiàn)按文件類(lèi)型(音頻或視頻)檢索、按存儲(chǔ)目錄檢索、按歷史搜索行為檢索等,而且在音頻文件類(lèi)型展示中還可以應(yīng)用表中字段(如ARTIST,ALBUM,TITLE,GENRE)按類(lèi)型對(duì)所有文件進(jìn)行分門(mén)別類(lèi),還可以選擇按名字或長(zhǎng)度進(jìn)行排序,提供了良好的操作體驗(yàn)。

        系統(tǒng)查找所有媒體文件的具體實(shí)現(xiàn)在MediaLiarary類(lèi)中,定義了內(nèi)部類(lèi)GetMediaItemsRunnable開(kāi)啟獨(dú)立線程,主要操作directories_table、media_table兩個(gè)表,實(shí)現(xiàn)流程如圖3所示。

        圖3 多媒體文件搜索流程

        結(jié) 語(yǔ)

        本項(xiàng)目通過(guò)分析源代碼,從依賴(lài)庫(kù)編譯、UI設(shè)計(jì)和數(shù)據(jù)庫(kù)管理的文件表單設(shè)計(jì)等方面入手,理清了代碼組織結(jié)構(gòu)、設(shè)計(jì)思路和實(shí)現(xiàn)機(jī)制,對(duì)后續(xù)的VLC跨平臺(tái)移植和移動(dòng)學(xué)習(xí)平臺(tái)的視頻點(diǎn)播系統(tǒng)開(kāi)發(fā)具有很好的借鑒作用。

        設(shè)計(jì)中需要考慮以下幾點(diǎn):界面設(shè)計(jì)以易用性為重要品質(zhì),構(gòu)建心智模型,并以用戶(hù)為中心;恰當(dāng)應(yīng)用第三方開(kāi)源庫(kù);使用片段實(shí)現(xiàn)響應(yīng)式用戶(hù)界面等。

        [1]張曉霞.基于VLC 的校園信息發(fā)布系統(tǒng)[J].通信技術(shù),2011,44(7):86-88.

        [2]賈友波.VLC Media Player在教學(xué)中的應(yīng)用探索[J].中國(guó)教育現(xiàn)代裝備,2011,11(19):24-26.

        [3]Juhani Lehtimaki.精彩絕倫的Android UI設(shè)計(jì)[M].王東明,譯.北京:機(jī)械工業(yè)出版社,2013.

        [4]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2011.

        猜你喜歡
        用戶(hù)界面設(shè)置多媒體
        自然用戶(hù)界面在智能家居系統(tǒng)中的應(yīng)用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
        包裝工程(2023年16期)2023-08-25 11:40:58
        借助多媒體探尋有效設(shè)問(wèn)的“四度”
        中隊(duì)崗位該如何設(shè)置
        基于CiteSpace的國(guó)外用戶(hù)界面體驗(yàn)圖譜量化分析
        多媒體在《機(jī)械制圖》課中的應(yīng)用
        UI用戶(hù)界面色彩設(shè)計(jì)研究
        流行色(2017年12期)2017-10-26 03:08:44
        多媒體達(dá)人煉成記
        河南電力(2016年5期)2016-02-06 02:11:40
        本刊欄目設(shè)置說(shuō)明
        中俄臨床醫(yī)學(xué)專(zhuān)業(yè)課程設(shè)置的比較與思考
        基于B/S的跨平臺(tái)用戶(hù)界面可配置算法研究
        在线观看av手机网址| 成人欧美一区二区三区在线观看| 亚洲中文字幕成人无码| 亚洲精品无码人妻无码| 精品欧洲AV无码一区二区免费| 国产自拍成人在线免费视频| 国产欧美综合一区二区三区 | 中文字幕人妻久久久中出| 色综合久久中文娱乐网| 伊人久久无码中文字幕| 精品一区二区三区在线视频观看| 偷拍视频这里只有精品| 国产麻豆精品精东影业av网站| 最新国产乱人伦偷精品免费网站| 国产成人久久蜜一区二区| 一道本加勒比在线观看| 欧美老熟妇乱xxxxx| 日韩a毛片免费观看| 无码人妻专区一区二区三区| 99久久精品一区二区国产 | 91亚洲国产成人精品一区.| 全免费a敌肛交毛片免费| 国产区精品| 人妻色中文字幕免费视频| 日本一区二区视频免费在线看| 99在线精品免费视频九九视| 激情久久无码天堂| 男女视频在线观看一区二区| 丁香五月亚洲综合在线| 国产不卡精品一区二区三区| 亚洲日韩av无码| 国产成人国产在线观看| 久久精品国产亚洲av专区| 中文字幕日韩精品有码视频| 最近中文字幕视频高清| 亚洲国产剧情一区在线观看| 亚洲中文字幕日韩综合| 久久不见久久见中文字幕免费 | 亚洲第一女人的天堂av| 久久精品国产亚洲av高清热| 中字无码av电影在线观看网站|