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

        ?

        基于Android的自定義媒體播放控件設(shè)計與實現(xiàn)

        2016-05-14 21:05:59張香倩黃林生陳陽德
        軟件導(dǎo)刊 2016年5期

        張香倩 黃林生 陳陽德

        摘要:針對日益增加的個性化應(yīng)用需求,提出了基于Android的自定義媒體播放控件。該控件通過繼承VideoView實現(xiàn)視頻、圖片媒體的播放,與網(wǎng)絡(luò)、數(shù)據(jù)庫進(jìn)行結(jié)合可以下載媒體資源與管理資源。控件中定義了下載回調(diào),即實時顯示當(dāng)前的、下載進(jìn)度,因而有助于提升用戶體驗。

        關(guān)鍵詞:Android;自定義控件;媒體播放;VideoView

        DOIDOI:10.11907/rjdk.161461

        中圖分類號:TP319

        文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2016)005-0079-03

        0 引言

        在Android系統(tǒng)中,提供了很多控件用于Android應(yīng)用的開發(fā),其控件的豐富性能可滿足基本的應(yīng)用開發(fā)需求。但是隨著定制應(yīng)用的日益增加,基本的控件已很難滿足需求,從另一方面而言,這也約束了個性化應(yīng)用的發(fā)展。Google提供的自定義控件方法可以達(dá)到應(yīng)用開發(fā)的個性化要求[1]。在Android程序中,視頻媒體播放使用VideoView控件實現(xiàn),或者使用MediaPlayer與SurfaceView結(jié)合實現(xiàn)媒體播放功能。對于圖片的顯示則使用ImageView來實現(xiàn)[2]。日常生活中,視頻和圖片都是大眾最常見的媒體,在一個界面上要既能顯示圖片又能顯示視頻,所以,本文提出了一種繼承VideoView的自定義媒體播放控件,該控件不僅可以顯示圖片,還可以播放視頻,并且在下載視頻的過程中可以顯示下載進(jìn)度。同時,自定義媒體播放控件和數(shù)據(jù)庫結(jié)合,能夠?qū)崿F(xiàn)媒體文件的自動循環(huán)播放。

        1 Android系統(tǒng)

        Android系統(tǒng)由Google公司2007年在Google I/O開發(fā)者大會上發(fā)布的移動操作系統(tǒng), Google將其源碼開放以供廣大開發(fā)者研究。Android系統(tǒng)采用分層架構(gòu),具體分為Applications、Application Framework、Libraries(包含Android Runtime)、Linux Kernel四層。Android應(yīng)用開發(fā)者最常接觸的是前兩層,后兩層主要用于底層庫和硬件驅(qū)動等[3-5]。

        2 View及其自定義媒體控件相關(guān)類

        2.1 View類介紹

        在Android系統(tǒng)的Application Framework層,提供了豐富的UI控件,所有UI控件都是直接或間接繼承View類。View類是所有UI控件的基類,該類表示了用戶界面的基本構(gòu)建模塊——一個View占用屏幕的矩形區(qū)域并且負(fù)責(zé)界面繪制和事件處理[6-7]。

        View類中有很多方法,這些方法都與其界面繪制和事件處理相關(guān),下面簡單介紹幾個方法:

        ①onMeasure(int,int):該方法用于獲取控件的寬、高,由系統(tǒng)的measure方法調(diào)用;

        ②onDraw(Canvas):該方法用于繪制需要在View中顯示的內(nèi)容,由系統(tǒng)的draw函數(shù)調(diào)用;

        ③onLayout(boolean,int,int,int,int):該方法用于指定View的位置,由系統(tǒng)的layout函數(shù)調(diào)用;

        ④onSizeChanged(int,int,int,int):該方法用于當(dāng)View大小改變時進(jìn)行調(diào)用。

        2.2 自定義媒體控件相關(guān)類

        (1)VideoView類[8-9]。

        本文中自定義媒體播放控件的實現(xiàn)采用繼承VideoView類。VideoView類在包android.widget中,其繼承自android.widget.SurfaceView類。VideoView有幾個重要的方法,如setVideoPath()、setBackground()、start()、seekTo()、getCurrentPosition()等。setVideoPath方法可以設(shè)置視頻路徑,setBackground方法可以設(shè)置背景,start方法可以開始播放。

        (2)Drawable類。

        Drawable類是一個抽象類,用于在屏幕上繪制圖片,即可以顯示圖片,但沒有事件處理能力。子類主要復(fù)寫其onDraw方法,然后在里面繪制需要呈現(xiàn)的圖片。

        (3)SurfaceView類[10-11]。

        SurfaceView在包android.view中,它是一種特殊的視圖,擁有獨立的繪圖界面,繪圖可以在一個獨立的線程中進(jìn)行。SurfaceView可以實現(xiàn)復(fù)雜而高效的UI且不會導(dǎo)致用戶輸入響應(yīng)不及時。

        3 自定義媒體播放控件實現(xiàn)

        3.1 概述

        自定義媒體播放控件實現(xiàn)的功能包括:播放視頻、播放圖片、下載視頻、下載圖片等。Android為開發(fā)者提供了很多的API,其中就有實現(xiàn)媒體播放的類,如VideoView。本實現(xiàn)通過繼承VideoView實現(xiàn)播放功能,在其子類中能夠獲取到媒體文件的播放狀態(tài)、當(dāng)前播放位置等。其次,自定義繼承自Drawable類的內(nèi)部類BackgroundDrawable用于顯示大圖。

        3.2 邏輯設(shè)計及實現(xiàn)

        要實現(xiàn)5個方面的功能:①用于獲取數(shù)據(jù)的數(shù)據(jù)庫操作類及數(shù)據(jù)類;②繼承VideoView類的子類VideoPlayer;③用于實現(xiàn)大圖縮放處理的BackgroundDrawable類;④用于實現(xiàn)播放流程控制的PlayControl類;⑤用于下載視頻、圖片的類WgetDownload。下面分別介紹其邏輯設(shè)計。

        (1)數(shù)據(jù)庫操作類及數(shù)據(jù)類。

        數(shù)據(jù)庫操作類需要實現(xiàn)數(shù)據(jù)庫的基本功能,如查找、刪除、增加等。在本實現(xiàn)中采用OrmLite框架,構(gòu)建數(shù)據(jù)庫操作類VideoRecord與ImageRecord,用于操作數(shù)據(jù)VideoTable、ImageTable,提供給外部操作數(shù)據(jù)庫的方法。其中VideoRecord、ImageRecord通過MediaDBHelper獲取。此外,在MediaDBHelper中實現(xiàn)創(chuàng)建數(shù)據(jù)表、更新數(shù)據(jù)表功能。

        如圖1所示,當(dāng)程序啟動時,初始化單例類MediaDBHelper類,該類用于創(chuàng)建表和提供獲取VideoRecord及ImageRecord的方法,代碼如下:

        (2)VideoPlayer類。

        VideoPlayer類主要用于播放視頻、圖片,同時實現(xiàn)下載回調(diào)接口WgetCallback,實現(xiàn)播放順序控制PlayControl類的復(fù)寫。在下載回調(diào)中,可以由函數(shù)ready、process、finished顯示下載進(jìn)度。其內(nèi)部邏輯如圖2所示。

        4 結(jié)語

        本文在介紹VideoView的基礎(chǔ)上,提出了繼承VideoView實現(xiàn)自定義媒體播放控件的類VideoPlayer。介紹了在該類中使用的其它輔助類,如數(shù)據(jù)庫操作類用于加載數(shù)據(jù)等,類BackgroundDrawable用于有效顯示大圖,類PlayControl用于控制播放順序,類WgetDownload用于下載媒體文件。在這些類的輔助下,VideoPlayer控件實現(xiàn)設(shè)計的功能,將該控件布局在XML文件中即可。其中數(shù)據(jù)類可以自定義其屬性,根據(jù)需求將該控件布置在Android程序中,進(jìn)而與服務(wù)器結(jié)合實現(xiàn)媒體文件的遠(yuǎn)端管理。

        參考文獻(xiàn):

        [1]馬建敏.基于Android的蒙文基本控件的設(shè)計與實現(xiàn)[D].呼和浩特:內(nèi)蒙古大學(xué),2014.

        [2]王建功.基于Android的自定義控件設(shè)計[J].德州學(xué)院學(xué)報,2015,31(2):62-65.

        [3]關(guān)晶鑫,李永全.Android中的多媒體技術(shù)應(yīng)用開發(fā)與研究[J].桂林理工大學(xué)學(xué)報,2013,33(3):542-546.

        [4]李楊,馮剛,李亮,等.基于Android的多媒體應(yīng)用開發(fā)與研究[J].華南師范大學(xué)學(xué)報,2011(4):149-152.

        [5]葉曉靜,黃俊偉.基于Android系統(tǒng)的多媒體播放器解決方案[J].現(xiàn)代電子技術(shù),2011,34(24):73-76.

        [6]趙曉影.Android應(yīng)用開發(fā)中的UI設(shè)計[J].勞動保障世界,2013(5):111-113.

        [7]趙亮,張維.基于Android技術(shù)的界面設(shè)計與研究[J].電腦知識與技術(shù),2009(29):8183-8185.

        [8]李哲夫,張煥明.基于Android的校園流媒體播放系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代計算機(jī),2013(10):67-71.

        [9]汪永松.Android平臺開發(fā)媒體盒子[J].電腦編程技巧與維護(hù),2010(19):62-68.

        [10]張小菲.Android平臺上音視頻系統(tǒng)的研究及播放器開發(fā)[D].西安:西安電子科技大學(xué),2012.

        [11]李光革,苗建松.基于Android的物聯(lián)網(wǎng)環(huán)境監(jiān)控應(yīng)用設(shè)計與實現(xiàn)[J].軟件,2013,34(9):32-35.

        (責(zé)任編輯:杜能鋼)

        九九久久国产精品大片| 亚洲成在人线av品善网好看| 国产va免费精品高清在线| 日韩人妻一区二区三区蜜桃视频 | 国产成人综合久久久久久| аⅴ天堂一区视频在线观看| 亚洲一区二区三区av无| 亚洲国产精品自拍成人| 在线日本看片免费人成视久网| 天天爽夜夜爽夜夜爽精品视频| 人妻少妇精品专区性色av| 国产精品麻豆综合在线| 国产亚洲美女精品久久| 少妇极品熟妇人妻高清| 91久久精品一区二区三区大全| 精品国产天堂综合一区在线 | 亚洲av午夜一区二区三| 国产精品午夜爆乳美女视频| 真实国产乱视频国语| 亚洲女同性恋在线播放专区| 人妻久久久一区二区三区蜜臀| 激情综合一区二区三区| 无码少妇一级AV便在线观看| 国产美女黄性色av网站| 自拍视频在线观看首页国产| 少妇人妻大乳在线视频不卡| 久久精品免费免费直播| 亚洲av午夜福利一区二区国产 | 亚洲精品乱码久久久久久日本蜜臀| 精品久久久久久无码不卡| 自拍av免费在线观看| 亚洲av无码成h在线观看| 亚洲裸男gv网站| 毛片毛片免费看| 亚洲中文高清乱码av中文| 精品露脸国产偷人在视频| 成人无码区免费a片www| 久久久2019精品视频中文字幕| 久久精品国产亚洲av蜜点| 欧洲精品免费一区二区三区| 丁香综合网|