




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Android課程設計視頻播放器所在系(院):數學與信息技術學院學生姓名:學生姓名:指導教師:研究起止日期:二○一二年二月至二○一二年五月摘要Android平臺谷歌與開放手機聯盟合作開發了Android,這個聯盟由涉及中國移動、摩托羅拉、高通、宏達和T-Mobile在內的30多家技術和無線應用的領軍公司組成。Android是一個真正意義上的開放性移動設備綜合平臺。通過與運營商、設備制造商、開發商和其他有關各方結成深層次的合作伙伴關系,來建立標準化、開放式的移動電話軟件平臺,在移動產業內形成一個開放式的生態系統,這樣應用之間的通用性和互聯性將在最大限度上得到保持。所有的Android應用之間是完全平等的。所有的應用都運營在一個核心的引擎上面,這個核心引擎其實就是一個虛擬機,它提供了一系列用于應用和硬件資源間進行通訊的API。撇開這個核心引擎,Android的所有其他的東西都是“應用”。Android打破了應用之間的界線,比如開發人員可以把Web上的數據與本地的聯系人,日歷,位置信息結合起來,為用戶發明全新的用戶體驗。Java開發環境Java技術包含了一個編程語言及一個平臺。Java編程語言具有很多特性,如面向對象、跨平臺、分布式、多線程、解釋性等等。Java編程語言起源于Sun公司的一個叫“Green”的項目,目的是開發嵌入式家用電器的分布式系統,使電氣更加智能化。1996年1月發布了JDK1.1版本,一門新語言自此走向世界。之后,1998年12月發布了1.2版本,2023年2月發布1.4版本,2023年10月發布1.5版本(5.0),2023年12月發布1.6(6.0)版本,這是目前的最新版本。Java1.2版本是一個重要的版本,基于該版本,Sun將Java技術分為J2SE、J2ME、J2EE,其中J2SE為創建和運營Java程序提供了最基本的環境,J2ME與J2EE建立在J2SE的基礎上,J2ME為嵌入式應用(如運營在手機里的Java程序)提供開發與運營環境,J2EE為分布式的公司應用提供開發與運營環境。EclipseEclipse的基礎是富客戶機平臺(RichClientPlatform,即RCP)。RCP涉及下列組件:核心平臺(Eclipse,運營插件)標準集束框架(OSGi:OpenServiceGatewayinitiative)可移植構件工具包(SWT:Eclipse'sStandardWidgetToolkit)JFace(文獻緩沖,文本解決,文本編輯器)Eclipse采用的技術是IBM公司開發的SWT,這是一種基于Java的窗口組件,類似Java自身提供的AWT和Swing窗口組件:但是IBM聲稱SWT比其他Java窗口組件更有效率。Eclipse的用戶界面還使用了GUI中間層JFace,從而簡化了基于SWT的應用程序的構建。Eclipse的設計思想是:一切皆插件。Eclipse核心很小,其他所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基于內核涉及:圖形API(SWT/JFace),Java開發環境插件(JDT),插件開發環境(PDE)等。Eclipse的插件機制是輕型軟件組件化架構。在富客戶機平臺上,Eclipse使用插件來提供所有的附加功能,例如支持Java以外的其他語言。已有的分離的插件已經可以支持C/C++(CDT)、Perl、Ruby、Python、telnet和數據庫開發。插件架構可以支持將任意的擴展加入到現有環境中,例如配置管理,而決不僅僅限于支持各種編程語言。Android程序基礎—Android應用程序的構成1.Activity顧名思義,Activity就是活動。應用程序必須至少包含一個Activity。Activity提供了一個虛擬的用戶接口,每一個Activity都有一個默認的窗口可以用來顯示用戶界面,一般情況下,它是全屏的窗口。例如,影音播放軟件的每個用戶界面就是Activity。2.ServiceService與Activity的重要區別在于,Service是在后臺活動的,它沒有用戶界面。典型的應用場景是,用戶選擇了一個播放列表開始播放后,離開了該用戶界面(Activity),假如仍然希望歌曲不會暫停,就可以用Service去調用播放器,而不是在Activity中調用播放器。3.Intent在Android中,每一個行為都可以抽象為一個Intent。可以簡樸地把Intent理解為一個包含了數據的消息。Intent可以用于啟動一個Act-ivity或者Service,可以用于進程間的通信。事實上,應用程序的啟動也是通過Intent實現的。4.ContentprovidersAndroid平臺內置了一套SQLite數據儲存機制,并包含一系列管理SQLiteDatabase的相關方法。在應用程序中,可以通過Contentprov-iders訪問數據庫。每個Contentprovider都定義了一系列的方法用于訪問它相應的數據庫。應用程序在新建數據庫時也可以定義相應的Con-tentprovider用于向其他應用程序共享數據。一般情況下,應用程序不直接調用Contentprovider定義的函數,而是通過ContentResolver間接調用。目錄TOC\o"1-2"\h\z\u1軟件產品介紹 31.1軟件產品名稱 31.2軟件總體功能 32軟件開發環境 32.1JDK安裝 32.2AndroidSDK安裝以及系統設立 32.3Eclipse安裝以及ADT工具的安裝 43軟件功能說明 43.1軟件布局 43.2視頻文獻搜索功能 63.3播放控制功能 63.4其他功能 84程序流程圖 85軟件界面及程序重要代碼 95.1軟件在虛擬機上調試及分析 95.2軟件在手機上的調試及分析 105.3程序重要代碼 116設計總結 127設計收獲 138附錄 131軟件產品介紹1.1軟件產品名稱一個基于Android平臺的視頻播放器1.2軟件總體功能(1)可以播放.avi,.mp4等文獻
(2)能解決簡樸的異常,例如文獻不存在等(3)能正常啟動,退出(4)可以在手機上使用該系統2軟件開發環境2.1JDK安裝JDK是Java語言的原創者推出的原始開發環境。采用JDK開發Java程序可以不久理解程序中各部分代碼之間的關系,有助于理解Java面向對象的設計思想。在Windows上安裝JDK非常簡樸,訪問Oracle官方網站下載頁面,網址為,也可從其他網站下載。下載完畢后,雙擊運營JDK安裝程序并根據提醒設定環境變量。2.2AndroidSDK安裝以及系統設立下載好SDK包后,將zip文獻解壓縮至合適的地方。在下文中,默認SDK安裝目錄為$SDK_ROOT。Linux下,打開文獻~/.bash_profile或者~/.bashrc,找到設定PATH環境變量的一行,將$SDK_ROOT/tools的完整途徑加入其中。假如沒有找到設定PATH變量的行,可以自己添加一行:exportPATH=${PATH}:<$SDK_ROOT/tools的完全途徑>Mac下,在home目錄中找到文獻.bash_profile,和Linux的同樣解決。假如還沒有在機器上設定這個文獻,可以創建一個.bash_profile文獻。Windows下,右鍵點擊【我的電腦】,選擇【屬性】,在【高級】頁中,點擊【環境變量】按鍵,在彈出的對話框中雙擊“系統變量”中的變量“Path”,將$SDK/tools的完全途徑加入其中。通過將$SDK/tools加入系統途徑,在運營adb和其它一些命令行工具時就不需要鍵入完全途徑名了。需要注意到是,當升級了SDK后,假如安裝途徑有變動的話,不要忘掉了更新PATH變量的設立,將其指向變動后的途徑。配置SDK有兩種方法:第一種,通過SDK下載器自動下載和配置。適合網絡好,下載速度快的情況;第二種,借助工具下載SDK文獻,手工配置。適合網絡不是很好,下載速度慢的情況下。2.3Eclipse安裝以及ADT工具的安裝下載Eclipse安裝包后,無需安裝,只需解壓縮,點擊“eclipse.exe”文獻即可運營。Android為Eclipse定制了一個插件,即AndroidDevelpomentTools(ADT),目的是為用戶提供一個強大的綜合環境用于開發Android應用程序。ADT擴展了Eclipse的功能,可以讓用戶快速建立Android項目,創建應用程序界面,在基于Android框架API的基礎上添加組件,以及用SDK工具集調試應用程序,甚至導出署名(或未署名)的APKs以便發行應用程序。安裝ADT:啟動Eclipse,選擇Help>InstallNewSoftware,在出現的對話框里,點擊Add按鈕,在對話框的name一欄輸入"ADT",然后點擊Archive...,瀏覽和選擇已經下載的ADT插件壓縮文獻,點擊OK。返回可用軟件的視圖,你會看到這個插件,然后選擇DevelopmerTools,點擊Next,最后重啟Eclipse。軟件開發環境搭建好后,便可以開始創建項目了。3軟件功能說明3.1軟件布局此為一個視頻播放器,設計的軟件需要支持快進、快退、暫停、繼續和進度拖曳等功能。視頻播放軟件工程文獻重要涉及src文獻夾(Java源碼)、res文獻夾(資源文獻)和AndroidMainfest.xml(程序清單)。軟件重要由Activities組成,每個Activity相應一個模塊。不同的Activity通過Intent進行通信和互相調用。軟件的布局(main.xml)如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=""android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="鍵入文獻名稱"android:textSize="20dp"/><EditText android:id="@+id/edittext" android:layout_width="fill_parent"android:layout_height="wrap_content"/><Button android:id="@+id/starttoplay" android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Openfile"android:textSize="20dp"/><VideoView android:id="@+id/video" android:layout_width="fill_parent"android:layout_height="fill_parent"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="點擊界面獲取播放控制鍵"android:textSize="20dp"/><Button android:id="@+id/quit" android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Quit"android:textSize="20dp"/></LinearLayout>布局主體為LinearLayout,由多個TextView、Button等類組成。3.2視頻文獻搜索功能此程序需要輸入文獻的絕對途徑,例如"/sdcard/video.mp4";輸入文獻名字之后,點擊openfile,即可搜索到你想要播放的視頻,部分程序如下:if(video.exists()){ videoView.setVideoPath(video.getAbsolutePath());//文獻絕對途徑 videoView.setMediaController(mediaController);//設立videoView與mediaControler的關聯 mediaController.setMediaPlayer(videoView); videoView.requestFocus(); }圖13.3播放控制功能在打開播放文獻之后,點擊畫面的空白部分,這時會彈出視頻播放控制按鈕,分別是后退、播放/暫停和前進,下面顯示視頻播放時間軸,可以進行拖曳。圖2點擊qiut即可退出界面圖33.4其他功能此程序還能解決簡樸的異常,輸入文獻后,若文獻不存在,會提醒你“很抱歉,您輸入的文獻不存在,請重新輸入”,若文獻格式不符合,也會有相應的提醒。部分程序如下:if(video.exists()){}else{ Toast.makeText(VideoPlayerActivity.this,"很抱歉,您輸入的文獻不存在,請重新輸入",Toast.LENGTH_LONG).show(); }圖44程序流程圖明確了重要功能后,就需要對此軟件基本流程有一個總體規劃,本款手機視頻播放器基本流程圖如圖所示。開開始打開視頻播放器輸入文獻的絕對途徑點擊Openfile打開文獻進入視頻播放界面退出軟件YN5軟件界面及程序重要代碼5.1軟件在虛擬機上調試及分析本次調試采用的虛擬機是Android2.1,并且分別導入avi,mp4,mp3等文獻進行調試。一開始系統點擊視頻播放器的圖標進入視頻播放器的界面,執行VideoPlayerActivity.java就可以執行視頻播放器的操作了:播放,暫停,快進,快退,退出。在調試過程中,碰到了不少問題,大體如下:Unabletoresolvetarget'android-2'因素:將一個低版本的Android項目導入到workspace里通常會在第一時間出現這樣的錯誤提醒。解決辦法:將perties屬性文獻中的Projecttarget修改為android-7即可,android2.1相應的API為7.2)Androidrequirescompilercompliancelevel5.0or6.0.Found'1.7'instead.PleaseuseAndroidTools>FixProjectProperties.解決辦法:點擊菜單欄中的project>properties>JavaCompiler>Enableprojectspecificsettings,將Compilercompliancelevel改為1.6。3)CouldnotfindvideoPlayer.apk!解決辦法:點擊菜單欄中的project>properties>JavaBuildPath,選擇Libraries,點下面的Android2.1,然后點右邊按鈕Remove,然后apply,然后ok。再選擇project>androidtools>Fixprojectproperties,運營就可以了。還碰到了許多小小的錯誤,如向sdcard中導入文獻不能使用中文途徑,在此不一一列出。在解決這些問題過程中,更加純熟地掌握了虛擬機的調試方法,最終能成功地播放文獻。在模擬器上大體不錯,界面很酷,并且很整齊,功能都可以實現。下面是在模擬器上的實現:圖55.2軟件在手機上的調試及分析播放器的安裝:將程序安裝包下載到手機上,在手機中找到videoplay.apk的安裝文獻,打開文獻按指示安裝videoplay播放器,并在手機的sd卡中放入相應的音頻、視頻文獻。文獻的播放:1)安裝成功后,直接打開視頻播放器,找到音頻、視頻文獻所在地方,按播放器界面提醒,輸入要播放的文獻的絕對途徑,打開文獻使之播放,在手機上視頻播放更為流暢。流程圖如下所示:文獻途徑,打開播放器,在第一個輸入框中輸入要播放的文獻的打開途徑,點擊下方Openfile即可打開文獻,手機屏幕上提醒顯示“點擊屏幕獲取播放控制鍵”,按指示點擊,跳出控制鍵,點擊播放鍵,即可聽音樂或放視頻。控制小界面上有播放/暫停、上一曲/快退、下一曲/快進控制鍵,以及播放進度顯示條,我們亦可點擊進度條,使播放文獻迅速跳轉到我們需要的地方。當文獻播放完時,屏幕顯示跳回到流程圖中第三個畫面。而當打開的途徑不對的時,屏幕上也會給犯錯誤提醒,如第六個圖所示。如若要退出程序,則點擊下方的Quit鍵,即可退出播放器。打開sd卡內文獻夾,找到音頻、視頻文獻所在地,直接點擊文獻,文獻即可在播放器中播出。5.3程序重要代碼此程序需要輸入文獻的絕對途徑,例如"/sdcard/video.mp4";輸入文獻名字之后,點擊openfile,即可搜索到你想要播放的視頻,部分程序如下:if(video.exists()){ videoView.setVideoPath(video.getAbsolutePath());//文獻絕對途徑 videoView.setMediaController(mediaController);//設立videoView與mediaControler的關聯 mediaController.setMediaPlayer(videoView); videoView.requestFocus(); }輸入文獻后,若文獻不存在,會提醒你“很抱歉,您輸入的文獻不存在,請重新輸入”,若文獻格式不符合,也會有相應的提醒。部分程序如下:else{ Toast.makeText(VideoPlayerActivity.this,"很抱歉,您輸入的文獻不存在,請重新輸入",Toast.LENGTH_LONG).show(); }設立窗口的像素格式、,實現按鈕//publicWindowgetWindow()返回當前activity的window//voidandroid.view.Window.setFormat(intformat)//publicvoidsetFormat(intformat)設立窗口的像素格式//PixelFormat.TRANSLUCENT透明格式getWindow().setFormat(PixelFormat.TRANSLUCENT);setContentView(R.layout.main);videoView=(VideoView)findViewById(R.id.video);editText=(EditText)findViewById(R.id.edittext);openButton=(Button)findViewById(R.id.starttoplay);openButton.setOnClickListener(newstartlistener());qiutButton=(Button)findViewById(R.id.quit);qiutButton.setOnClickListener(newqiutlistener());mediaController=newMediaController(this);6設計總結在本次課程設計中,不僅了解到了android的有關知識,并且學習了Java語言以及eclipse等硬件環境。有幾點需要特別注意:要明確課程設計的規定,想好系統應當包含哪些功能模塊。否則,在軟件設計的后期,再想添加新的功能就需要花費大量的時間。要對android系統有一定的了解。在軟件設計過程中,大量的用到了android系統的四大組件:Activity(提供可視化的界面)、Service(運營在后臺的服務程序)、BroadcastReceiver(廣播事件解決機制)、ContentProvider(使應用程序互相訪問數據)。只有對這些組件純熟掌握后,才可以真正設計出穩健搞笑的多媒體播放器。要對Java語言純熟掌握。Android軟件開發都是用Java語言寫的,而Java又是由類組成的。而Java語言自身又具有眾多機制,只有深刻理解這些機制后,才干輕松地實現自己想要的功能。要對界面設計有一定的了解。Android所有的布局都放在了res/layout中,而所有的菜單選項都放在了res/menu中。合理的布局對人性化的界面也是至關重要的。(5)要具有快速上網查資料的能力。面對從沒接觸過的知識,要有信心才是最重要的。此外,網上的很多現成的資料都可借鑒、學習。在純熟理解了別人的應用程序的基礎上,再做二次開發。還需要改善的地方:播放器的播放界面設立較為簡樸,不夠精美和方便,看過班上很多同學設計的播放器有些甚是完整,完全可以在手機上作為專門的媒體播放器使用,可以向他們學習,加以改善,使我們的作品也更完善;只支持.avi,.mp3,.mp4格式的,還應支持.flv等其他格式的;只能播放一個視頻,以后還要擴展成能播放多個視頻的;播放音頻文獻時不能顯示播放歌曲的歌詞,這是一個較大的缺陷,在程序上可以進行補充和調整,對于下載的模擬器中一些功能的調用更全面,可以將之改善;播放音頻文獻時不能實現播放模式的選擇。7設計收獲現學現做的能力。從圖書館借一些參考光盤,對某項內容的原理大體了解后,直接運營它的源代碼,先觀測效果,給大腦直接的印象,然后再去理解程序。團隊協作意識。身為團隊的一員,必須與自己的隊友合作。特別是剛開始做時,要將任務分派明確,還要定期監督各自的進度。上網查資料的能力。網絡是一個十分強大的信息工具。網上有大量的Android參考資料以及很多著名的Android論壇,這上面為我提供了大量的有用信息。特別是碰到錯誤時,上網搜一搜,能不久找到解決辦法。英語閱讀能力。由于很多資料都是起源于國外,而很多參考書也是英文的。此外,Android官網以及著名的Android論壇都是英文版,此外,具有一定的英語閱讀能力也是非常重要的。與同學間的交流探討。本次我們團隊為兩個人,我們經常交流,有助于開拓自己的思維,取長補短,共同解決碰到的問題,這正是一個互相學習的過程。8附錄VideoPlayerActivity.java:packageLd.videoPlayer;importjava.io.File;importandroid.app.Activity;importandroid.graphics.PixelFormat;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.MediaController;importandroid.widget.Toast;importandroid.widget.VideoView;publicclassVideoPlayerActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/ VideoViewvideoView; privateStringfielname; MediaControllermediaController; EditTexteditText; ButtonopenButton; ButtonqiutButton;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//publicWindowgetWindow()返回當前activity的window//voidandroid.view.Window.setFormat(intformat)//publicvoidsetFormat(intformat)設立窗口的像素格式//PixelFormat.TRANSLUCENT透明格式getWindow().setFormat(PixelFormat.TRANSLUCENT);setContentView(R.layout.main);videoView=(VideoView)findViewById(R.id.video);editText=(EditText)findViewById(R.id.edittext);openButton=(Button)findViewById(R.id.starttoplay);openButton.setOnClickListener(newstartlistener());qiutButton=(Button)findViewById(R.id.quit);qiutButton.setOnClickListener(newqiutlistener());mediaController=newMediaController(this);/*Filevideo=newFile("/sdcard/re.mp4");//若文獻被找到if(video.exists()){ videoView.setVideoPath(video.getAbsolutePath());//文獻絕對途徑 videoView.setMediaController(mediaController);//設立videoView與mediaControler的關聯 mediaController.setMediaPlayer(videoView); videoView.requestFocus();}*/}classstartlistenerimplementsOnClickListener{ @Override publicvoidonClick(Viewv) { //TODOAuto-generatedmethodstub fielname=editText.getText().toString(); System.out.println(fielname); //Filevideo=newFile("/sdcard/re.mp4"); Filevideo=newFile(fielname); //若文獻被找到 if(video.exists()){ videoView.setVideoPath(video.getAbsolutePath());//文獻絕對途徑 videoView.setMediaController(mediaController);//設立videoView與mediaControler的關聯 mediaController.setMediaPlayer(videoView); videoView.requestFocus(); } else{ Toast.makeText(VideoPlayerActivity.this,"很抱歉,您輸入的文獻不存在,請重新輸入",Toast.LENGTH_LONG).show(); } }}classqiutlistenerimplementsOnClickListener{ @Override publicvoidonClick(Viewv) { //TODOAuto
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理財師考試考后總結及反思試題及答案
- 微生物檢驗信息技術應用試題及答案
- 證券交易所功能與2025年考試的關系試題及答案
- 企業財務信息透明度探討試題及答案
- 2025年考試真題解析試題及答案
- 銀行從業資格證考試科技應用前景分析試題及答案
- 項目調度技巧與工具比較試題及答案
- 注會考試重要考證點分析試題及答案
- 2025年證券從業資格證考試預測題及試題及答案
- 2025年證券從業資格證解讀政策變化試題及答案
- 我愛刷牙幼兒課件
- 智慧樹知到《演講學(同濟大學)》2025章節測試附答案
- 高等數學(慕課版)教案 教學設計-3.4函數的單調性與極值;3.5函數的最值及其應用
- 政府審計 課件 第五章 金融審計
- 2025年度文化產業競業禁止與知識產權保護協議
- 孕產婦分娩恐懼預防和管理的最佳證據總結
- 2025年國核鈾業發展有限責任公司招聘筆試參考題庫含答案解析
- 國家開放大學《小企業管理基礎》綜合練習題形成性考核參考答案
- 吊裝設備知識培訓課件
- 《兒童保健學緒論》課件
- 2025山東能源集團中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論