嵌入式基于Android的音樂播放器設(shè)計與實現(xiàn)_第1頁
嵌入式基于Android的音樂播放器設(shè)計與實現(xiàn)_第2頁
嵌入式基于Android的音樂播放器設(shè)計與實現(xiàn)_第3頁
嵌入式基于Android的音樂播放器設(shè)計與實現(xiàn)_第4頁
嵌入式基于Android的音樂播放器設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué)校代碼: 10128學(xué) 號: 200920201039嵌入式系統(tǒng)綜合設(shè)計說明書題 目: 基于android的音樂播放器設(shè)計與實現(xiàn)姓 名: 王若禹學(xué) 院: 信息工程學(xué)院班 級: 計算機09-2指導(dǎo)教師: 劉志強 莊旭飛 王曉強 杜秋陽2012 年 9 月 25 日摘 要 當(dāng)今社會的生活節(jié)奏越來越快,隨著硬件移動設(shè)備的越來越先進,人們對移動設(shè)備的要求也越來越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺效果及用戶體驗,因此,也逐步的提高了對系統(tǒng)的要求。本文主要是在android系統(tǒng)上對音樂播放器應(yīng)用程序的設(shè)計與實現(xiàn)進行討論,通過這一過程來進一步學(xué)習(xí)與應(yīng)用android平臺,這樣對個人的未來發(fā)展也很有意義。

2、 本論文的音樂播放器采用了android開源系統(tǒng)技術(shù),利用java語言和eclipse開發(fā)工具對播放器代碼進行編寫。同時給出了詳細的系統(tǒng)設(shè)計過程、部分界面截圖及主要的功能流程圖,本文還對開發(fā)過程中遇到的問題和解決方法進行了詳細的討論,該音樂播放器集下載、播放、暫停、停止等功能于一體,性能良好,在android系統(tǒng)中能獨立運行。mp3是一種聲音文件的壓縮格式,由于本播放器只限于應(yīng)用層程序的探討,所以對具體的壓縮算法不做深究。 實驗證明,基于android平臺的軟件開發(fā)簡單,使用方便簡潔,必將成為未來幾年的發(fā)展方向,具有普遍意義。 關(guān)鍵詞:android;音樂播放器;mp3;java目 錄第一章引

3、言11.1項目背景11.2 編寫目的1第二章android應(yīng)用軟件開發(fā)基礎(chǔ)22.1 android的基本介紹22.2 android應(yīng)用開發(fā)語言22.3 android應(yīng)用程序組件22.4 androidmanifest.xml文件4第三章搭建android開發(fā)環(huán)境53.1 安裝jdk53.2 安裝eclipse53.3安裝sdk53.4安裝adt53.5 創(chuàng)建avd6第四章系統(tǒng)的總體設(shè)計74.1 設(shè)計思想74.2 系統(tǒng)功能結(jié)構(gòu)圖7第五章音樂播放器的詳細設(shè)計115.1項目ui篇115.2開機動畫頁面的設(shè)計115.2.1 設(shè)計步驟115.2.2效果圖125.3基本代碼的編寫125.3.1在ser

4、vice 里定義一系列關(guān)于播放狀態(tài)的常量125.3.2注冊廣播接收 以及定義廣播的action135.3.3寫發(fā)送廣播(前歌曲的信息及狀態(tài))的一些方法135.3.4播放控制代碼的編寫135.4主頁面的代碼實現(xiàn)145.4.1 初始化頁面的一些基本控件145.4.2 seekbar的更新與監(jiān)聽145.5播放列表頁面的實現(xiàn)155.5.1適配器的創(chuàng)建155.5.2 musiclist 中g(shù)etmultidata( )方法的創(chuàng)建155.5.3 點擊列表中的一項 跳轉(zhuǎn)到播放列表 并播放當(dāng)前歌曲155.6 notification功能的實現(xiàn)165.6.1 創(chuàng)建mynotification 這個類165.6.

5、2在activity中調(diào)用notifation這個類165.7菜單功能的實現(xiàn)165.8 appwidget的實現(xiàn)175.8.1 appwidget布局頁面175.8.2 appwidget類的創(chuàng)建18第六章總結(jié)19參考文獻20第一章 引言1.1項目背景android是谷歌于2007年公布的開放式源代碼手機系統(tǒng),一直受到人們的熱捧。android是基于linux內(nèi)核的軟件平臺和操作系統(tǒng),它開放性就優(yōu)于其他封閉式的手機系統(tǒng)。因此,任何人都可能根據(jù)自己的喜好將手機系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關(guān)注這個操作系統(tǒng)。本次作品音樂播放器就是基于android平臺的。 隨著計算機的廣泛運用,手機

6、市場的迅速發(fā)展,各種音頻資源也在網(wǎng)上廣為流傳。這些資源卡是平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發(fā)展起來,但是很多播放器一味最求外觀花俏,功能龐大,對用戶的手機造成很多資源浪費。比如cpu、內(nèi)存等的占用率過高、在用戶需要多任務(wù)操作時,受到不小的影響,帶來了許多不便。而對于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對以上各種弊端,選擇了開發(fā)多語種的音頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶聽歌的需求。現(xiàn)今社會生活緊張,而欣賞音樂史其中最好的舒緩壓力的方式之一。本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器。本設(shè)計的實現(xiàn)的這主要功

7、能是播放mp3等音樂文件,并且能夠控制播放器播放、暫停、停止、上一曲、下一曲。界面簡單,操作簡單。本項目是一款基于android手機,平臺的音樂播放器,使android手機擁有個性的播放器,讓手機主人隨時隨地處于音樂的旋律中。使人們的生活更加多樣化。也使設(shè)計者更加熟練android的技術(shù)和其它在市場上的特點。1.2 編寫目的現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放mp3文件格式的播放器,并且可以從服務(wù)器下載歌曲,控制播放,暫停,停止,音量調(diào)節(jié),播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡明,操作簡單。本項目是一款基于android手機

8、平臺的音樂播放器,使android手機擁有個性的多媒體播放器,使手機顯得更加生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂旋律之中。使人們的生活更加多樣化,也使設(shè)計者更加熟悉基于android平臺的應(yīng)用布局及開發(fā)模式的特點,為以后實現(xiàn)更復(fù)雜的應(yīng)用打好基礎(chǔ)。第二章 android應(yīng)用軟件開發(fā)基礎(chǔ)2.1 android的基本介紹android一詞的本義指“機器人”同時也是google于2007年11月5日宣布的基于linux平臺的開源手機操作系統(tǒng)的名稱。該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。android是基于linux內(nèi)核的

9、軟件平臺和操作系統(tǒng)。早期由google開發(fā),在華注冊商標(biāo)名為“安致”,后由開放手機聯(lián)盟(open handset alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu)。主要分為三部分。低層以linux內(nèi)核工作為基礎(chǔ),只提供基本功能,其他的應(yīng)用軟件則由各公司自行開發(fā),以java作為編寫程序的一部分。另外,為了推廣此技術(shù),google和其他幾十個手機公司建立開發(fā)手機聯(lián)盟。android在未公開之前常被傳聞為google電話或gphone。大多傳聞?wù)J為google開發(fā)的是自己的手機電話產(chǎn)品,而不是一套軟件平臺。到了2010年1月,google開始發(fā)表自家品牌

10、手機電話的nexus one。2.2 android應(yīng)用開發(fā)語言java是android上的主流開發(fā)語言,各種支持也最完善。android發(fā)布的api和sdk也都主要是面向java開發(fā)人員的。我們的播放器實例也是用java開發(fā)的。2.3 android應(yīng)用程序組件 android應(yīng)用程序最大的一個特點就是每個應(yīng)用都由若干組件構(gòu)成。而且各個應(yīng)用程序的組件還可以相互調(diào)用(需要在代碼中設(shè)置相應(yīng)權(quán)限)。例如假設(shè)我們需要編寫一個內(nèi)嵌有網(wǎng)頁的程序,那么我們無需親自編寫瀏覽器,而是可以直接調(diào)用系統(tǒng)自帶的chrome lite瀏覽器組件。又如假設(shè)我們編寫了兩個應(yīng)用程序,其中一個程序中有列表顯示圖片的組件,那么

11、我們在另外一個應(yīng)用程序中就可以使用該組件,而不需要再編寫該功能。也就是說,不同于我們平常編寫的程序,android的應(yīng)用程序不是單一入口,而是可以從代碼的不同位置啟動。這就要依靠組件來實現(xiàn)。 android應(yīng)用程序的組件有以下四種: 1. activity 一個activity實際上表現(xiàn)出來的就是一個程序的界面。這個界面可能有許多種不同的形式,比如有列表形式,有文字形式,有圖像格子等形式。一個應(yīng)用程序也可能有不止一個activity。比如一個短消息的程序,需要有列表顯示所有消息的activity,還至少需要一個編輯短消息的activity(界面),還可能需要設(shè)置、菜單等界面。每個activit

12、y都有一個默認(rèn)的窗口用于繪制界面,一般情況下,它是充滿全屏的,但是我們可以通過程序控制它,使其小于屏幕大小,也可以控制其浮動于其它窗口之上(如android中的toast信息)。 activity中顯示出來的內(nèi)容其實是由view堆疊形成的,view是由view基類派生出來的各種形式的界面元素,如listview,gridview等等,通過組合這些view,就形成了一個可見的activity。我們可以用activity.setcontentview()方法來設(shè)置一個activity中所要顯示的view。2. service service是一種沒有界面的組件,同我們平常在windows或linu

13、x系統(tǒng)中所理解的“服務(wù)”一樣,android上的service也是運行在后臺的,運行時間可以從系統(tǒng)啟動到系統(tǒng)關(guān)閉為止。對于許多應(yīng)用程序來說,service組件是至關(guān)重要的。以下載管理器為例,用戶肯定希望能夠在切換到其它程序時仍然在后臺進行下載,這就需要用到service完成下載工作。而顯示下載進度、已下載文件等信息則由activity完成,同時我們還希望能控制下載過程,如停止、繼續(xù)等,這就需要activity與service之間進行通信。 android允許activity連接到或者綁定到service上,這樣就可以讓用戶在界面上控制后臺service的行為。 3.broadcast rece

14、iver broadcast意為廣播消息,android系統(tǒng)自身會發(fā)出許多廣播消息,如電量不足,用戶修改了全局設(shè)置等,各個應(yīng)用程序也以向整個系統(tǒng)廣播消息,如文件下載完畢等。 broadcast receiver則是程序中專門用來接收廣播消息的組件,它沒有界面顯示,只負(fù)責(zé)監(jiān)聽、接收廣播消息,然后根據(jù)程序邏輯,啟動其它組件去處理廣播消息。它可以啟動一個activity來同用戶交互,也可以使用notificationmanager向用戶發(fā)出通知。nitificationmanager的通知形式有許多種,比如說振動、響鈴、閃led燈,還可以在android界面的消息欄處顯示信息。 4.content

15、provider content provider是一種為其它應(yīng)用程序提供數(shù)據(jù)的組件。這些數(shù)據(jù)可以保存在文件中,也可以保存在sqlite數(shù)據(jù)庫中,還可以以其它任何有效的方式保存。contentprovider類為我們提供了一系列保存數(shù)據(jù)的方法供我們調(diào)用,可以很方便地存儲數(shù)據(jù)。其它應(yīng)用程序在需要使用這些數(shù)據(jù)時,可以用contentresolver對象,使用其中的方法。contentresolver可以與任何content provider交互,獲取其中的數(shù)據(jù)。 只要需要某個組件,android就會盡力保證它的可用:如果該組件還沒啟動,就啟動它,如果該組件所屬的應(yīng)用程序還沒擁有一個進程,則為它啟動

16、一個進程,如果系統(tǒng)資源不足以容納一個新的進程,則將后臺的某個進程殺死為新進程騰出資源。2.4 androidmanifest.xml文件androidmanifest.xml是每一個應(yīng)用都需要的文件, 位于應(yīng)用根目錄下,它 描述了程序包的全局變量, 包括暴露的應(yīng)用組件(activities, services等等)和為每個組件的實現(xiàn)類, 什么樣的數(shù)據(jù)可以操作,以及在什么地方運行。 androidmanifest.xml文件是一個結(jié)構(gòu)化的xml文件,它除了包含有各個組件的信息,還包括許多其它的信息,它的基本樣式如下所示: . . . 不難看出,name,icon,lable這些屬性就分別指act

17、ivity的名稱、圖標(biāo)、標(biāo)識。我們通過manifest描述程序的信息,android系統(tǒng)就能讀取出來并產(chǎn)生相應(yīng)的行為。第三章 搭建android開發(fā)環(huán)境3.1 安裝jdk由于android開發(fā)是基于java的基礎(chǔ)上的,所以我們必須得安裝jdk(jdk下載地址: 1.右擊計算機-屬性-高級系統(tǒng)設(shè)置-高級-環(huán)境變量,新建“系統(tǒng)變量”,設(shè)置變量名:“java_home”。變量值:“c:program filesjavajdk1.7.0_02”(視個人安裝路徑而定)。 2.找到變量名為path的項,雙擊,在變量值后面添加:“;%java_home%bin;”, 3.新建“系統(tǒng)變量”變量名:“class

18、path”,變量值:“.;%java_home%libdt.jar;%java_home%libtools.jar;” 配置完成后,重啟可以在cmd下輸入java或者javac測試。3.2 安裝eclipseeclipse是我們以后在android開發(fā)時使用的開發(fā)平臺,它集成了很多功能以及插件,在開發(fā)的過程中便于我們使用,在官網(wǎng)(/downloads/)可以下載到對應(yīng)系統(tǒng)以及功能的安裝包,在安裝提示安裝完成后并且完成了jdk的安裝后即可正常使用。 3.3安裝sdksdk(software development kit)初始包中有開發(fā)android程序

19、所要用到的工具,它包括了從編譯到運行android應(yīng)用程序所需要的各種工具。安裝時可以根據(jù)自己的需求選擇安裝相應(yīng)的版本。 3.4安裝adt 按照2.3.4安裝完sdk初始包后,就可以開始開發(fā)android應(yīng)用程序了,但是為了更高效地進行開發(fā),android團隊推出了android development tools (adt) 。adt是目前開發(fā)android應(yīng)用最有效的工具,它是一個eclipse插件,支持eclipse 3.4及3.4以上的版本。以eclipse 3.5 (galileo)為例,安裝過程如下: 1. 打開eclipse,選擇 help install new softare

20、。 2. 在available software 對話框中,點擊add.。 3. 在彈出的add site 對話框中,任意填寫一個名字到name一欄。在location一欄,則填入這一url:“https:/dl-4. 返回到available software 窗口后,就能看到列表中出現(xiàn)了developer tools ,選中它前面的復(fù)選框,再點擊“next”,就會開始下載安裝adt的各種組件了。5. 安裝完畢后將彈出窗口顯示adt相關(guān)的各種信息以及許可協(xié)議,點擊“finish“即可完成安裝。6.重新啟動:eclipse。3.5 創(chuàng)建avd在安裝好jdk,eclipse,sdk,adk之后我

21、們就可以進行android項目開發(fā)了,但是在開發(fā)的過程中我們經(jīng)常需要運行、調(diào)試我們所開發(fā)的軟件,這就需要用到avd(android virtual device),也就是android虛擬機。1. 打開eclipse。 2. 點擊opens the android virtual device manager圖標(biāo)按鈕。 3. 在彈出的窗口中點擊new新建一個android虛擬機。 4. 在彈出的新建虛擬機窗口中name一欄填上虛擬機的名稱(一般與虛擬機的版本號相同,便于區(qū)分)。 5. 在target一欄選擇一個android虛擬機版本(如android2.2或android2.1)。 6. 在

22、sd card下的size一欄填上我們要設(shè)定的sd卡容量大小。 7. 點擊create avd,這樣我們的一個android虛擬機就創(chuàng)建好了。第四章 系統(tǒng)的總體設(shè)計軟件功能設(shè)計是使整個軟件能基本實現(xiàn)音樂的播放、上一首、下一首、暫停等功能能讓用戶通過本軟件欣賞音樂。在線音樂瀏覽和下載背景皮膚的切換等功能更好的增強用戶體驗。4.1 設(shè)計思想(1)將系統(tǒng)分成幾個相對獨立的模塊。 (2)分層的模塊化程序設(shè)計思想,整個系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計。作為應(yīng)用程序有較強的可操作性和擴展性。(3)合理的數(shù)據(jù)流設(shè)計,在應(yīng)用系統(tǒng)設(shè)計中,相對獨立的模塊間以數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運行,提高系統(tǒng)安全

23、性。4.2 系統(tǒng)功能結(jié)構(gòu)圖根據(jù)上述需求分析,本android版音樂播放器可分為一下幾個模塊: 圖4.2.1播放器基本功能圖4.2.2播放清單列表圖4.2.3系統(tǒng)流程圖功能類別子功能子功能播放列表播放列表菜單退出播放從擴展卡尋找歌曲歌曲菜單播放-進入播放界面刪除-數(shù)據(jù)庫同步更新重命名-數(shù)據(jù)庫同步更新向上、下移動-數(shù)據(jù)庫同步更新播放界面播放播放歌曲-線程啟動-時間更新暫停暫停歌曲-線程暫停-時間暫停停止停止歌曲-線程停止-時間停止上一首播放列表索引變化-尋找上一id歌曲下一首播放列表索引變化-尋找下一id歌曲播放界面菜單返回到播放列表返回到主菜單從擴展卡尋找歌曲退出播放器隱藏播放界面主菜單退出程序

24、程序退出進入播放列表顯示播放列表表4.2.1系統(tǒng)功能表圖4.2.4音樂播放器 e-r圖圖4.2.5音樂播放器菜單結(jié)構(gòu)圖第五章 音樂播放器的詳細設(shè)計 5.1項目ui篇1.先實現(xiàn)播放頁面的ui設(shè)計(包括控制按鈕和專輯圖片) 布局代碼 main.xml2.播放列表的實現(xiàn) 布局代碼 playlist.xml基本效果 如下圖: 其中播放按鈕采用xml文件,在按下和得到焦點的時候會做相應(yīng)的改變selector xmlns:android= 5.2開機動畫頁面的設(shè)計5.2.1 設(shè)計步驟1. 準(zhǔn)備2個 動畫xml文件 log.xml log_two.xml2. 當(dāng)動畫結(jié)束時 啟動另外一個activity3.

25、動畫特效是兩個imageview同時采用 淡入,旋轉(zhuǎn)和,縮放的特效 調(diào)用動畫的方法代碼animation animation=animationutils.loadanimation(logo.this, r.anim.logo);5.2.2效果圖5.3基本代碼的編寫5.3.1在service 里定義一系列關(guān)于播放狀態(tài)的常量public static final int cmd_default = -1;/默認(rèn)public static final int cmd_start = 0;/開始public static final int cmd_pause = 1;/暫停public stat

26、ic final int cmd_resume =3;/繼續(xù)播放public static final int cmd_next = 4;/下一首public static final int cmd_prev = 5;/前一首public static final int cmd_seek = 6;/移動到某一播放位置public static final int cmd_jump = 7;/選擇列表歌曲 播放public static final int status_playing = 0;/播放狀態(tài)public static final int status_paused = 1;/暫

27、停狀態(tài)public static final int status_stopped = 2;/停止?fàn)顟B(tài)5.3.2注冊廣播接收 以及定義廣播的actionpublic static final string music_control = miniplayer.action_control;public static final string update_status = miniplayer.action_update_status;public static final string update_time = miniplayer.action_update_time;public st

28、atic final string update_info = miniplayer.action_update_info;在oncreant里注冊廣播/ 注冊receiver-可以xml注冊,也可以代碼注冊。代碼注冊,當(dāng)程序退出,相關(guān)廣播也就無效了docommand = new commandreceiver();intentfilter filter = new intentfilter();filter.addaction(music_control);registerreceiver(docommand, filter);注意:在結(jié)束時 解除廣播的注冊 public void onde

29、stroy() unregisterreceiver(docommand); super.ondestroy(); savestatus(); 5.3.3寫發(fā)送廣播(前歌曲的信息及狀態(tài))的一些方法 / 發(fā)送更新的播放狀態(tài)private void updatestatus()/ 發(fā)送更新的歌曲信息private void updateinfo()/ 發(fā)送跟新的播放時間private void updatetime() 5.3.4播放控制代碼的編寫 init()方法主要是 初始話音樂數(shù)據(jù) 其次就是在廣播里面調(diào)用相應(yīng)的方法play( ) pause( ) previce( )next( )最后注意:

30、在manifest中注冊service5.4主頁面的代碼實現(xiàn)5.4.1 初始化頁面的一些基本控件寫3個廣播接收的broadcastreceiver分別接收當(dāng)前歌曲的信息 狀態(tài) 以及播放時間private statusupdatereceiver dostatusupdate;private timeupdatereceiver dotimeupdate;private infoupdatereceiver doinfoupdate;在oncreat這些broadcastreceiver用于更新頁面歌曲當(dāng)前信息接下來是各個按鈕的點擊事件public void btclick()5.4.2 see

31、kbar的更新與監(jiān)聽 首先在service里寫更新進度條的方法updateprogress( ) 方法主要就是開辟一個線程 每隔一秒鐘更新一次當(dāng)前時間并且在方法中實現(xiàn)mediaplayer的監(jiān)聽當(dāng)一首音樂播放完成時,去播放下一首然后就是在activity里對seekbar的監(jiān)聽 拖拽到某一位置播放核心代碼seekbar.setonseekbarchangelistener(new onseekbarchangelistener( )if (isenable = false & math.abs(prog - progress) = 5) progress = prog;intent i = n

32、ew intent(musicservice.music_control);int cmd = musicservice.cmd_seek;i.putextra(cmd, cmd);i.putextra(progress, progress);sendbroadcast(i);sb.setprogress(progress);5.5播放列表頁面的實現(xiàn)5.5.1適配器的創(chuàng)建 第一個適配器musicinfoadapter()在做適配器之前需要準(zhǔn)備 item的布局文件music_list_item.xml其次是viewholder類的創(chuàng)建 靜態(tài)類中的對象只會掉用一次 所以我們布局中的imagevie

33、w和textview等控件要在靜態(tài)類中創(chuàng)建??梢詼p少內(nèi)存的使用適配器的核心方法就是getview( )的使用其中convertview 的復(fù)用性是listview優(yōu)化顯示的核心完成適配器的創(chuàng)建我們就可以,調(diào)取數(shù)據(jù)來顯示 效果圖如下 5.5.2 musiclist 中g(shù)etmultidata( )方法的創(chuàng)建通過游標(biāo)查詢系統(tǒng)中media表中的所有音頻文件的信息,保存在map集合中吧數(shù)據(jù)放到適配器中加載 在listview中顯示完成這一步我們的播放器 基本功能已經(jīng)完善的差不多了!5.5.3 點擊列表中的一項 跳轉(zhuǎn)到播放列表 并播放當(dāng)前歌曲首先是listview的itemclick事件的處理照例我們要

34、發(fā)送一個廣播給service告訴我們點擊的是列表中的哪一首歌曲所以要在service中寫一個方法去調(diào)用游標(biāo)類,查詢那個歌曲的信息人后播放也就是把當(dāng)前的位置 賦值給position 核心代碼:intent i = new intent(miniplayerservice.music_control);i.putextra(cmd, miniplayerservice.cmd_jump);i.putextra(pos, pos);sendbroadcast(i);finish();5.6 notification功能的實現(xiàn)5.6.1 創(chuàng)建mynotification 這個類 該類的主要功能就是現(xiàn)實

35、通知欄及通知欄狀態(tài)的信息首先要準(zhǔn)備notifation頁面的布局文件然后在那個類里吧布局裝載進去/ 指定這個通知的布局文件remoteviews remoteviews = new remoteviews(context.getpackagename(),r.layout.notification);5.6.2在activity中調(diào)用notifation這個類當(dāng)我們按下播放按鈕 ,就要調(diào)用notifation當(dāng)我們拉開通知欄,點擊notifation視圖,進入到播放頁面其中會調(diào)用一個方法/ 指定點擊通知后跳到那個activitynotification.contentintent = pend

36、ingintent.getactivity(context, 0, new intent(context,playactivity.class),pendingintent.flag_update_current);5.7菜單功能的實現(xiàn)1.在主activity重寫父類的方法oncreateoptionsmenu()2.在oncreateoptionsmenu中添加各種按鈕menu.add(menu.none, - 所在組的idmenu.first + 1, -菜單項的id5, - 在菜單欄的順序 刷新曲庫 -菜單項的名字).seticon(android.r.drawable.ic_menu_

37、search);-指定菜單對應(yīng)的圖片當(dāng)我們點擊菜單中的某一項時要進行相應(yīng)的處理這里就需要從重父類的onoptionsitemselected(menuitem item) 我們可以根據(jù)item.getitemid()來分辨那個是我們點擊的菜單,因為我們在創(chuàng)建菜單的的時候,就已經(jīng)吧id給寫了 所以那get的id跟那個id對比就能知道那個是我們點擊的菜單。5.8 appwidget的實現(xiàn)5.8.1 appwidget布局頁面實現(xiàn)如圖所示的布局效果布局文件 appwidgetlayout.xml寫完布局文件定義appwidgetprovideinfo的元數(shù)據(jù),需要定義為xml文件,一般在res/下面

38、新建個xml目錄,然后新建appwidget_info.xml主要有以下屬性 updateperiodmills 為執(zhí)行更新時間,1.5以后默認(rèn)好像要半小時(測試下基本不能時時更新)android:previewimage=drawable/preview和 android:resizemode 3.0以上才能使用 定義顯示圖標(biāo)android:initiallayout=layout/example_appwidget 為該app widget頁面顯示的內(nèi)容5.8.2 appwidget類的創(chuàng)建定義一個appwidgetprovider 得子類在manfiest中注冊appwidget app

39、 widget 是通過廣播機制進行傳播的eiver android:name 定義的appwidgetprovider類action android:name 因為通過廣播機制實現(xiàn),所以 默認(rèn)的action不能變,主要有android:resource 調(diào)用一個appwidget之后我們要去重寫父類的幾個方法public void onreceive(context context, intent intent) onreceive方法就是接受系統(tǒng)相應(yīng)的廣播 public void onupdate(context context, appwidgetmanager appwidgetmana

40、ger,int appwidgetids) onupdate( )就是當(dāng)我們點擊桌面的appwidget的控件時 調(diào)用的相應(yīng)的方法寫完了這些我們就要在service中去注冊相應(yīng)的廣播接受 去控制當(dāng)前的音樂播放首先要在service中的oncreat方法中注冊相應(yīng)的廣播/注冊appwidgetn廣播intentfilter filter1 = new intentfilter();filter1.addaction(com.tarena.playmusic);filter1.addaction(com.tarena.nextone);filter1.addaction(com.tarena.lastone);filter1.addaction(com.tarena.startapp);re

溫馨提示

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

評論

0/150

提交評論