2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  如今,隨著基于android的智能手機(jī)的興起,一款具有個(gè)性化的多功能播放器是消費(fèi)者的一個(gè)主要需求。因此,設(shè)計(jì)一個(gè)基于android手機(jī)的簡(jiǎn)單音頻播放器,具有重要的實(shí)際意義。遵循軟件工程規(guī)范,文中主要介紹了基于android的簡(jiǎn)單影音播放器的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,實(shí)現(xiàn)了手機(jī)中視頻文件的過(guò)濾讀取、播放、暫停、重復(fù)、停止等功能。同時(shí)簡(jiǎn)單的

2、實(shí)現(xiàn)了實(shí)時(shí)流協(xié)議RTSP(Real Time Streaming Protocol)網(wǎng)上視頻流的播放功能。選用的開(kāi)發(fā)環(huán)境是基于Eclipse和Android ADT 的Java編寫(xiě)代碼,使用了具有信息緩沖的surface view控件、美化界面布局的Android Activity和存放數(shù)據(jù)的數(shù)據(jù)庫(kù)SQLite。</p><p>  關(guān)鍵詞:Android;簡(jiǎn)單影音播放器; 視頻播放器</p>&l

3、t;p><b>  目錄</b></p><p>  第1章 開(kāi)發(fā)工具與環(huán)境1</p><p>  1.1 Android平臺(tái)1</p><p>  1.2 Java開(kāi)發(fā)環(huán)境1</p><p>  1.3 Eclipse2</p><p>  1.4 Android程序基礎(chǔ)—Andr

4、oid應(yīng)用程序的構(gòu)成3</p><p>  1.5 JDK安裝4</p><p>  1.6 Android SDK安裝以及系統(tǒng)設(shè)置4</p><p>  1.7 Eclipse安裝以及ADT工具的安裝5</p><p>  第2章 系統(tǒng)分析與設(shè)計(jì)6</p><p>  2.1系統(tǒng)的可行性分析6</p

5、><p>  2.2 系統(tǒng)的需求分析6</p><p>  2.3系統(tǒng)的用例分析7</p><p>  第3章 系統(tǒng)詳細(xì)設(shè)計(jì)8</p><p>  3.1 本系統(tǒng)的主要代碼VideoActivity8</p><p>  3.2 軟件布局設(shè)計(jì)11</p><p>  3.3 視頻文件搜索功

6、能的設(shè)計(jì)13</p><p>  3.3 其他功能的設(shè)計(jì)13</p><p><b>  總結(jié)14</b></p><p><b>  參考文獻(xiàn)15</b></p><p>  第1章 開(kāi)發(fā)工具與環(huán)境</p><p>  1.1 Android平臺(tái)</p>

7、<p>  1. 谷歌與開(kāi)放手機(jī)聯(lián)盟合作開(kāi)發(fā)了Android, 這個(gè)聯(lián)盟由包括中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)和T-Mobile在內(nèi)的30多家技術(shù)和無(wú)線(xiàn)應(yīng)用的領(lǐng)軍企業(yè)組成。</p><p>  2. Android是一個(gè)真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái)。通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、開(kāi)發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,來(lái)建立標(biāo)準(zhǔn)化、開(kāi)放式的移動(dòng)電話(huà)軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng)

8、,這樣應(yīng)用之間的通用性和互聯(lián)性將在最大程度上得到保持。</p><p>  3. 所有的Android應(yīng)用之間是完全平等的。</p><p>  4. 所有的應(yīng)用都運(yùn)行在一個(gè)核心的引擎上面,這個(gè)核心引擎其實(shí)就是一個(gè)虛擬機(jī),它提供了一系列用于應(yīng)用和硬件資源間進(jìn)行通訊的API。撇開(kāi)這個(gè)核心引擎,Android的所有其他的東西都是“應(yīng)用”。</p><p>  5. An

9、droid打破了應(yīng)用之間的界限,比如開(kāi)發(fā)人員可以把Web上的數(shù)據(jù)與本地的聯(lián)系人,日歷,位置信息結(jié)合起來(lái),為用戶(hù)創(chuàng)造全新的用戶(hù)體驗(yàn)。</p><p>  1.2 Java開(kāi)發(fā)環(huán)境</p><p>  Java技術(shù)包含了一個(gè)編程語(yǔ)言及一個(gè)平臺(tái)。Java編程語(yǔ)言具有很多特性,如面向?qū)ο?、跨平臺(tái)、分布式、多線(xiàn)程、解釋性等等。Java編程語(yǔ)言起源于Sun公司的一個(gè)叫“Green”的項(xiàng)目,目的是開(kāi)發(fā)嵌

10、入式家用電器的分布式系統(tǒng),使電氣更加智能化。1996年1月發(fā)布了JDK1.1版本,一門(mén)新語(yǔ)言自此走向世界。之后,1998年12月發(fā)布了1.2版本,2002年2月發(fā)布1.4版本,2004年10月發(fā)布1.5版本(5.0),2006年12月發(fā)布1.6(6.0)版本,這是目前的最新版本。Java1.2版本是一個(gè)重要的版本,基于該版本,Sun將Java技術(shù)分為J2SE、J2ME、J2EE,其中J2SE為創(chuàng)建和運(yùn)行Java程序提供了最基本的環(huán)境,J

11、2ME與J2EE建立在J2SE的基礎(chǔ)上,J2ME為嵌入式應(yīng)用(如運(yùn)行在手機(jī)里的Java程序)提供開(kāi)發(fā)與運(yùn)行環(huán)境,J2EE為分布式的企業(yè)應(yīng)用提供開(kāi)發(fā)與運(yùn)行環(huán)境。</p><p>  1.3 Eclipse</p><p>  Eclipse的基礎(chǔ)是富客戶(hù)機(jī)平臺(tái)(Rich Client Platform,即RCP)。</p><p>  RCP包括下列組件:</p

12、><p>  1. 核心平臺(tái)(Eclipse,運(yùn)行插件)</p><p>  2. 標(biāo)準(zhǔn)集束框架(OSGi : Open Service Gateway initiative)</p><p>  3. 可移植構(gòu)件工具包(SWT : Eclipse's Standard Widget Toolkit)</p><p>  5. JFace

13、(文件緩沖,文本處理,文本編輯器)</p><p>  Eclipse采用的技術(shù)是IBM公司開(kāi)發(fā)的SWT,這是一種基于Java的窗口組件,類(lèi)似Java本身提供的AWT和Swing窗口組件:不過(guò)IBM聲稱(chēng)SWT比其他Java窗口組件更有效率。Eclipse的用戶(hù)界面還使用了GUI中間層JFace,從而簡(jiǎn)化了基于SWT的應(yīng)用程序的構(gòu)建。Eclipse的設(shè)計(jì)思想是:一切皆插件。Eclipse核心很小,其他所有功能都以插

14、件的形式附加于Eclipse核心之上。Eclipse基于內(nèi)核包括:圖形API(SWT/JFace),Java開(kāi)發(fā)環(huán)境插件(JDT),插件開(kāi)發(fā)環(huán)境(PDE)等。Eclipse的插件機(jī)制是輕型軟件組件化架構(gòu)。在富客戶(hù)機(jī)平臺(tái)上,Eclipse使用插件來(lái)提供所有的附加功能,例如支持Java以外的其他語(yǔ)言。已有的分離的插件已經(jīng)能夠支持C/C++(CDT)、Perl、Ruby、Python、telnet和數(shù)據(jù)庫(kù)開(kāi)發(fā)。插件架構(gòu)能夠支持將任意的擴(kuò)展加入

15、到現(xiàn)有環(huán)境中,例如配置管理,而決不僅僅限于支持各種編程語(yǔ)言。</p><p>  1.4 Android程序基礎(chǔ)—Android應(yīng)用程序的構(gòu)成</p><p>  1.Activity 顧名思義,Activity就是活動(dòng)。應(yīng)用程序必須至少包含一個(gè)Activity。Activity提供了一個(gè)虛擬的用戶(hù)接口,每一個(gè)Activity都有一個(gè)默認(rèn)的窗口可以用來(lái)顯示用戶(hù)界面,一般情況下,它

16、是全屏的窗口。例如,影音播放軟件的每個(gè)用戶(hù)界面就是Activity。</p><p>  2.Service Service與Activity的主要區(qū)別在于,Service是在后臺(tái)活動(dòng)的,它沒(méi)有用戶(hù)界面。典型的應(yīng)用場(chǎng)景是,用戶(hù)選擇了一個(gè)播放列表開(kāi)始播放后,離開(kāi)了該用戶(hù)界面(Activity),如果仍然希望歌曲不會(huì)暫停,就可以用Service去調(diào)用播放器,而不是在A(yíng)ctivity中調(diào)用播放器。</

17、p><p>  3.Intent 在A(yíng)ndroid中,每一個(gè)行為都可以抽象為一個(gè)Intent??梢院?jiǎn)單地把Intent理解為一個(gè)包含了數(shù)據(jù)的消息。Intent可以用于啟動(dòng)一個(gè)Act-ivity或者Service,可以用于進(jìn)程間的通信。事實(shí)上,應(yīng)用程序的啟動(dòng)也是通過(guò)Intent實(shí)現(xiàn)的。</p><p>  4.Content providers Android平臺(tái)內(nèi)置了一套SQLit

18、e數(shù)據(jù)儲(chǔ)存機(jī)制,并包含一系列管理SQLite Database的相關(guān)方法。在應(yīng)用程序中,可以通過(guò)Content prov-iders訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。每個(gè)Content provider都定義了一系列的方法用于訪(fǎng)問(wèn)它對(duì)應(yīng)的數(shù)據(jù)庫(kù)。應(yīng)用程序在新建數(shù)據(jù)庫(kù)時(shí)也可以定義相應(yīng)的Con-tent provider用于向其他應(yīng)用程序共享數(shù)據(jù)。一般情況下,應(yīng)用程序不直接調(diào)用Content provider定義的函數(shù),而是通過(guò)ContentResolver間接

19、調(diào)用。</p><p><b>  1.5 JDK安裝</b></p><p>  JDK是Java語(yǔ)言的原創(chuàng)者推出的原始開(kāi)發(fā)環(huán)境。采用JDK開(kāi)發(fā)Java程序能夠很快理解程序中各部分代碼之間的關(guān)系,有利于理解Java面向?qū)ο蟮脑O(shè)計(jì)思想。在Windows上安裝JDK非常簡(jiǎn)單,訪(fǎng)問(wèn)Oracle官方網(wǎng)站下載頁(yè)面,網(wǎng)址為http://www.oracle.com/techne

20、twork/indexes/downloads/index.html,也可從其他網(wǎng)站下載。下載完成后,雙擊運(yùn)行JDK安裝程序并根據(jù)提示設(shè)定環(huán)境變量。</p><p>  1.6 Android SDK安裝以及系統(tǒng)設(shè)置</p><p>  下載好SDK包后,將zip文件解壓縮至合適的地方。在下文中,默認(rèn)SDK安裝目錄為$SDK_ROOT 。</p><p>  1.

21、Linux下,打開(kāi)文件~/.bash_profile或者~/.bashrc,找到設(shè)定PATH環(huán)境變量的一行,將$SDK_ROOT/tools的完整路徑加入其中。如果沒(méi)有找到設(shè)定PATH變量的行,可以自己添加一行: export PATH=${PATH}:<$SDK_ROOT/tools的完全路徑></p><p>  2. Mac下,在home目錄中找到文件.bash_profile,和Linux的一

22、樣處理。如果還沒(méi)有在機(jī)器上設(shè)定這個(gè)文件,可以創(chuàng)建一個(gè).bash_profile文件。</p><p>  3. Windows下,右鍵點(diǎn)擊【我的電腦】,選擇【屬性】,在【高級(jí)】頁(yè)中,點(diǎn)擊【環(huán)境變量】按鍵,在彈出的對(duì)話(huà)框中雙擊“系統(tǒng)變量”中的變量“Path”,將$SDK/tools的完全路徑加入其中。</p><p>  通過(guò)將$SDK/tools加入系統(tǒng)路徑,在運(yùn)行adb和其它一些命令行工

23、具時(shí)就不需要鍵入完全路徑名了。需要注意到是,當(dāng)升級(jí)了SDK后,如果安裝路徑有變動(dòng)的話(huà),不要忘記了更新PATH變量的設(shè)置,將其指向變動(dòng)后的路徑。</p><p>  配置SDK有兩種方法:第一種,通過(guò)SDK下載器自動(dòng)下載和配置。適合網(wǎng)絡(luò)好,下載速度快的情況;第二種,借助工具下載SDK文件,手工配置。適合網(wǎng)絡(luò)不是很好,下載速度慢的情況下。</p><p>  1.7 Eclipse安裝以及AD

24、T工具的安裝</p><p>  下載Eclipse安裝包后,無(wú)需安裝,只需解壓縮,點(diǎn)擊“eclipse.exe”文件即可運(yùn)行。</p><p>  Android為Eclipse定制了一個(gè)插件,即Android Develpoment Tools(ADT),目的是為用戶(hù)提供一個(gè)強(qiáng)大的綜合環(huán)境用于開(kāi)發(fā)Android應(yīng)用程序。ADT擴(kuò)展了Eclipse的功能,可以讓用戶(hù)快速建立Android

25、項(xiàng)目,創(chuàng)建應(yīng)用程序界面,在基于A(yíng)ndroid框架API的基礎(chǔ)上添加組件,以及用SDK工具集調(diào)試應(yīng)用程序,甚至導(dǎo)出簽名(或未簽名)的APKs以便發(fā)行應(yīng)用程序。安裝ADT:?jiǎn)?dòng)Eclipse,選擇Help>Install New Software,在出現(xiàn)的對(duì)話(huà)框里,點(diǎn)擊Add按鈕,在對(duì)話(huà)框的name一欄輸入"ADT",然后點(diǎn)擊Archive...,瀏覽和選擇已經(jīng)下載的ADT插件壓縮文件,點(diǎn)擊OK。返回可用軟件的視圖

26、,你會(huì)看到這個(gè)插件,然后選擇Developmer Tools,點(diǎn)擊Next,最后重啟Eclipse。</p><p>  軟件開(kāi)發(fā)環(huán)境搭建好后,便可以開(kāi)始創(chuàng)建項(xiàng)目了。</p><p>  第2章 系統(tǒng)分析與設(shè)計(jì)</p><p>  2.1系統(tǒng)的可行性分析</p><p>  可行性研究是為了弄清楚系統(tǒng)開(kāi)發(fā)的項(xiàng)目是不是可以實(shí)現(xiàn)和值得進(jìn)行研究的過(guò)

27、程,實(shí)際上是一次大大簡(jiǎn)化系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的過(guò)程,所以,進(jìn)行可執(zhí)行性的分析是非常必要的,也是很重要的,經(jīng)過(guò)最初的設(shè)計(jì)目標(biāo)和進(jìn)行的實(shí)時(shí)調(diào)查得出以下四點(diǎn)的可行性分析:</p><p> ?。?)技術(shù)可行性:Eclipse + Android ADT的技術(shù)已經(jīng)較為成熟,通過(guò)SUN公司(現(xiàn)被ORCEL公司收購(gòu))推出的跨平臺(tái)、動(dòng)態(tài)的JAVA語(yǔ)言進(jìn)行開(kāi)發(fā)。</p><p>  (2)運(yùn)行可行性:該系統(tǒng)

28、需要Android虛擬機(jī)環(huán)境,Eclipse中安裝ADT,DDMS等Google Android相關(guān)插件。其運(yùn)行環(huán)境已經(jīng)相當(dāng)穩(wěn)定,它功能豐富,包括了完備的Android程序的編碼、調(diào)試、測(cè)試和發(fā)布功能,其中支持所有Android應(yīng)用開(kāi)發(fā)相關(guān)技術(shù),包括SQLite,Skia,3D制作,Android XML,能夠很好的發(fā)布Android的應(yīng)用程序APK包。</p><p> ?。?)法律可行性:因?yàn)槭亲灾鏖_(kāi)發(fā)設(shè)計(jì),

29、所以不會(huì)構(gòu)成侵權(quán),在法律上是可行的。</p><p>  通過(guò)以上的可行性分析,將采用Eclipse+Android ADT + DDMS技術(shù),運(yùn)用JAVA語(yǔ)言進(jìn)行系統(tǒng)的開(kāi)發(fā)。</p><p>  2.2 系統(tǒng)的需求分析</p><p>  根據(jù)分析需求,這個(gè)系統(tǒng)必須實(shí)現(xiàn)以下的功能:</p><p>  (1) 實(shí)現(xiàn)手機(jī)支持的視頻格式文件的播

30、放功能。</p><p>  作為播放器,其核心就是能夠流暢的播放視頻文件。手機(jī)一般不會(huì)支持對(duì)解碼要求太高的格式,如rmvb。作為手機(jī)硬件能夠承載的視頻流文件,都能夠流暢的播放,如MP3,MP4。</p><p>  (2) 能夠在手機(jī)里面定位視頻文件。</p><p>  在本播放器設(shè)計(jì)中,就是實(shí)現(xiàn)這樣一個(gè)能夠直接給出視頻文件的絕對(duì)地址,能夠?qū)ζ溥M(jìn)行相關(guān)的播放相關(guān)

31、的控制相應(yīng)。如直接播放,暫停,重播等。</p><p>  2.3系統(tǒng)的用例分析</p><p>  視頻基本播放用例如圖2.1所示。</p><p>  圖2.1 視頻基本播放用例圖</p><p>  第3章 系統(tǒng)詳細(xì)設(shè)計(jì)</p><p>  3.1 本系統(tǒng)的主要代碼VideoActivity</p>

32、<p>  VideoActivity中包含了播放器的所有的功能動(dòng)作。詳細(xì)代碼如下:</p><p>  import android.app.Activity;</p><p>  import android.media.AudioManager;</p><p>  import android.media.MediaPlayer;</p&

33、gt;<p>  import android.os.Bundle;</p><p>  import android.util.Log;</p><p>  import android.view.SurfaceHolder;</p><p>  import android.view.SurfaceView;</p><p>

34、;  import android.view.View;</p><p>  import android.widget.EditText;</p><p>  import android.widget.ImageButton;</p><p>  public class VideoActivity extends Activity {</p>&

35、lt;p>  private static final String TAG = "VideoActivity";</p><p>  private EditText filenameText;</p><p>  private SurfaceView surfaceView;</p><p>  private MediaPlayer

36、 mediaPlayer;</p><p><b>  @Override</b></p><p>  public void onCreate(Bundle savedInstanceState) {</p><p>  super.onCreate(savedInstanceState);</p><p>  set

37、ContentView(R.layout.main);</p><p>  ButtonClickListener listener = new ButtonClickListener();</p><p>  ImageButton playButton =(ImageButton) this.findViewById(R.id.play);</p><p>  

38、playButton.setOnClickListener(listener);</p><p>  ImageButton pauseButton =(ImageButton) this.findViewById(R.id.pause);</p><p>  pauseButton.setOnClickListener(listener);</p><p>  I

39、mageButton resetButton =(ImageButton) this.findViewById(R.id.reset);</p><p>  resetButton.setOnClickListener(listener);</p><p>  ImageButton stopButton =(ImageButton) this.findViewById(R.id.stop

40、);</p><p>  stopButton.setOnClickListener(listener);</p><p>  filenameText =(EditText) this.findViewById(R.id.filename);</p><p>  surfaceView =(SurfaceView) this.findViewById(R.id.s

41、urfaceView);</p><p>  /*下面設(shè)置Surface不維護(hù)自己的緩沖區(qū),而是等待屏幕的渲染引擎將內(nèi)容推送到用戶(hù)面前*/</p><p>  surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);</p><p>  surfaceView.getHolde

42、r().setFixedSize(176, 144);//設(shè)置分辨率</p><p>  mediaPlayer = new MediaPlayer();</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  protected voi

43、d onDestroy() {</p><p>  if(mediaPlayer.isPlaying()) mediaPlayer.stop();</p><p>  mediaPlayer.release();</p><p>  super.onDestroy();</p><p><b>  }</b></p

44、><p><b>  @Override</b></p><p>  protected void onPause() {</p><p>  if(mediaPlayer.isPlaying()) mediaPlayer.pause();</p><p>  super.onPause();</p><

45、p><b>  }</b></p><p><b>  @Override</b></p><p>  protected void onResume() {</p><p>  if(!mediaPlayer.isPlaying()) mediaPlayer.start();</p><p>

46、;  super.onResume();</p><p><b>  }</b></p><p>  private class ButtonClickListener implements View.OnClickListener{</p><p><b>  @Override</b></p><p

47、>  public void onClick(View v) {</p><p><b>  try {</b></p><p>  String filename = filenameText.getText().toString();</p><p>  switch (v.getId()) {</p><p>

48、;  case R.id.play://來(lái)自播放按鈕</p><p>  mediaPlayer.reset();</p><p>  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);</p><p>  mediaPlayer.setDataSource("/sdcard/"+

49、 filename);//設(shè)置需要播放的視頻</p><p>  mediaPlayer.setDisplay(surfaceView.getHolder());//把視頻畫(huà)面輸出到SurfaceView</p><p>  mediaPlayer.prepare();</p><p>  mediaPlayer.start();</p><p&

50、gt;<b>  break;</b></p><p>  case R.id.pause://來(lái)自暫停按鈕</p><p>  if(mediaPlayer.isPlaying()){</p><p>  mediaPlayer.pause();</p><p><b>  }else{</b>&

51、lt;/p><p>  mediaPlayer.start();</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case R.id.reset://來(lái)自重新播放按鈕</p><p>  if(!mediaPlayer

52、.isPlaying()){</p><p>  mediaPlayer.reset();</p><p>  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);</p><p>  mediaPlayer.setDataSource("/sdcard/"+ filename);/

53、/設(shè)置需要播放的視頻</p><p>  mediaPlayer.setDisplay(surfaceView.getHolder());//把視頻畫(huà)面輸出到SurfaceView</p><p>  mediaPlayer.prepare();</p><p>  mediaPlayer.start();</p><p><b>

54、  }</b></p><p>  mediaPlayer.seekTo(0);</p><p><b>  break;</b></p><p>  case R.id.stop://來(lái)自停止按鈕</p><p>  if(mediaPlayer.isPlaying()){</p><p

55、>  mediaPlayer.stop();</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  } catch (Exception e) {</p>&l

56、t;p>  Log.e(TAG, e.toString());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>&l

57、t;p>  3.2 軟件布局設(shè)計(jì)</p><p>  此為一個(gè)簡(jiǎn)單的視頻播放器,設(shè)計(jì)的軟件需要支持快進(jìn)、快退、暫停、繼續(xù)和進(jìn)度拖曳等功能。視頻播放軟件工程文件主要包括src文件夾(Java源碼)、res文件夾(資源文件)和AndroidMainfest.xml(程序清單)。軟件主要由Activities組成,每個(gè)Activity對(duì)應(yīng)一個(gè)模塊。不同的Activity通過(guò)Intent進(jìn)行通信和相互調(diào)用。軟件的布

58、局(main.xml)如下:</p><p>  <?xml version="1.0" encoding="utf-8"?></p><p>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p>

59、<p>  android:background="#FFFFFF"</p><p>  android:orientation="vertical"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_he

60、ight="fill_parent"</p><p><b>  ></b></p><p>  <TextView </p><p>  android:layout_width="fill_parent" </p><p>  android:layout_hei

61、ght="wrap_content" </p><p>  android:text="@string/filename"</p><p><b>  /></b></p><p>  <EditText </p><p>  android:layout_width

62、="fill_parent" </p><p>  android:layout_height="wrap_content" </p><p>  android:text="oppo.mp4"</p><p>  android:id="@+id/filename"</p>

63、<p><b>  /></b></p><p>  <LinearLayout</p><p>  android:orientation="horizontal"</p><p>  android:layout_width="fill_parent"</p>

64、<p>  android:layout_height="wrap_content"</p><p><b>  ></b></p><p>  <ImageButton</p><p>  android:layout_width="wrap_content" </p>

65、<p>  android:layout_height="wrap_content" </p><p>  android:src="@drawable/play"</p><p>  android:id="@+id/play"</p><p><b>  /></b&

66、gt;</p><p>  <ImageButton</p><p>  android:layout_width="wrap_content" </p><p>  android:layout_height="wrap_content" </p><p>  android:src="

67、;@drawable/pause"</p><p>  android:id="@+id/pause"</p><p><b>  /></b></p><p>  <ImageButton</p><p>  android:layout_width="wrap_co

68、ntent" </p><p>  android:layout_height="wrap_content" </p><p>  android:src="@drawable/reset"</p><p>  android:id="@+id/reset"</p><p>

69、;<b>  /></b></p><p>  <ImageButton</p><p>  android:layout_width="wrap_content" </p><p>  android:layout_height="wrap_content" </p><

70、p>  android:src="@drawable/stop"</p><p>  android:id="@+id/stop"</p><p><b>  /></b></p><p>  </LinearLayout></p><p>  <Su

71、rfaceView</p><p>  android:layout_width="fill_parent" </p><p>  android:layout_height="240dip"</p><p>  android:id="@+id/surfaceView"</p><p&

72、gt;<b>  /></b></p><p>  </LinearLayout></p><p>  布局主體為L(zhǎng)inearLayout,由多個(gè)TextView、Button等類(lèi)組成。視頻播放器設(shè)計(jì)的運(yùn)行效果如圖3.1所示。</p><p>  圖3.1 視頻播放器設(shè)計(jì)圖</p><p>  3.3

73、視頻文件搜索功能的設(shè)計(jì)</p><p>  此程序需要輸入文件的絕對(duì)路徑,例如"/sdcard/video.mp4";輸入文件名字之后,部分程序如下:</p><p>  if(video.exists()){</p><p>  videoView.setVideoPath(video.getAbsolutePath());//文件絕對(duì)路徑&l

74、t;/p><p>  videoView.setMediaController(mediaController);//設(shè)置videoView與mediaControler的關(guān)聯(lián)</p><p>  mediaController.setMediaPlayer(videoView);</p><p>  videoView.requestFocus();</p>

75、;<p><b>  } </b></p><p>  3.3 其他功能的設(shè)計(jì)</p><p>  此程序還能處理簡(jiǎn)單的異常,輸入文件后,若文件不存在,會(huì)提醒你“很抱歉,您輸入的文件不存在,請(qǐng)重新輸入”,若文件格式不符合,也會(huì)有相應(yīng)的提示。部分程序如下:</p><p>  if(video.exists()){......}&l

76、t;/p><p><b>  else{</b></p><p>  Toast.makeText(VideoPlayerActivity.this,"很抱歉,您輸入的文件不存在,請(qǐng)重新輸入", Toast.LENGTH_LONG).show();</p><p><b>  }</b></p>

77、<p><b>  總結(jié)</b></p><p>  在此次課程設(shè)計(jì)中,不僅了解到了android的有關(guān)知識(shí),而且學(xué)習(xí)了Java語(yǔ)言以及eclipse等硬件環(huán)境。有幾點(diǎn)需要特別注意:</p><p>  1. 要明確課程設(shè)計(jì)的要求,想好系統(tǒng)應(yīng)該包含哪些功能模塊。否則,在軟件設(shè)計(jì)的后期,再想添加新的功能就需要花費(fèi)大量的時(shí)間。</p><

78、p>  2. 要對(duì)android系統(tǒng)有一定的了解。在軟件設(shè)計(jì)過(guò)程中,大量的用到了android系統(tǒng)的四大組件:Activity(提供可視化的界面)、Service(運(yùn)行在后臺(tái)的服務(wù)程序)、Broadcast Receiver(廣播事件處理機(jī)制)、Content Provider(使應(yīng)用程序相互訪(fǎng)問(wèn)數(shù)據(jù))。只有對(duì)這些組件熟練掌握后,才能夠真正設(shè)計(jì)出穩(wěn)健搞笑的多媒體播放器。</p><p>  3. 要對(duì)Jav

79、a語(yǔ)言熟練掌握。Android軟件開(kāi)發(fā)都是用Java語(yǔ)言寫(xiě)的,而Java又是由類(lèi)組成的。而Java語(yǔ)言本身又含有眾多機(jī)制,只有深刻理解這些機(jī)制后,才能輕松地實(shí)現(xiàn)自己想要的功能。</p><p>  4. 要對(duì)界面設(shè)計(jì)有一定的了解。Android所有的布局都放在了res/layout中,而所有的菜單選項(xiàng)都放在了res/menu中。合理的布局對(duì)人性化的界面也是至關(guān)重要的。</p><p>  

80、5. 要具備快速上網(wǎng)查資料的能力。面對(duì)從沒(méi)接觸過(guò)的知識(shí),要有信心才是最重要的。另外,網(wǎng)上的很多現(xiàn)成的資料都可借鑒、學(xué)習(xí)。在熟練理解了別人的應(yīng)用程序的基礎(chǔ)上,再做二次開(kāi)發(fā)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 余志龍,陳昱勛. Google Android SDK開(kāi)發(fā)范例大全(第二版)[M].

81、人民郵電出版社.2010 </p><p>  [2] 王志超,王敏.基于A(yíng)ndroid平臺(tái)的MP3播放器的分析與設(shè)計(jì).[J].Forum論壇.2011.9 </p><p>  [3] 何曉杰. Android開(kāi)發(fā)經(jīng)驗(yàn)談[J].移動(dòng)開(kāi)發(fā)大勢(shì)圖.2010.9 </p><p>  [4] Ed&#

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論