




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
多媒體應(yīng)用開發(fā)16、云無心以出岫,鳥倦飛而知還。17、童孺縱行歌,斑白歡游詣。18、福不虛至,禍不易來。19、久在樊籠里,復(fù)得返自然。20、羈鳥戀舊林,池魚思故淵。多媒體應(yīng)用開發(fā)多媒體應(yīng)用開發(fā)16、云無心以出岫,鳥倦飛而知還。17、童孺縱行歌,斑白歡游詣。18、福不虛至,禍不易來。19、久在樊籠里,復(fù)得返自然。20、羈鳥戀舊林,池魚思故淵。本章要求:第3章
多媒體應(yīng)用開發(fā)使用MediaPlayer播放音頻使用SoundPool播放音頻使用VideoView組件播放視頻使用MediaPlayer和SurfaceView播放視頻3.1播放音頻與視頻3.2綜合實(shí)例第3章
多媒體應(yīng)用開發(fā)創(chuàng)設(shè)質(zhì)疑情境,變“被動接受”為“主動探索”“學(xué)起于思,思源于疑?!眴栴}是推動創(chuàng)新的原動力,鼓勵學(xué)生質(zhì)疑是培養(yǎng)學(xué)生創(chuàng)新意識的重要途徑。教師應(yīng)引導(dǎo)學(xué)生在學(xué)習(xí)過程中發(fā)現(xiàn)問題,大膽質(zhì)疑。例如,在學(xué)習(xí)推導(dǎo)圓面積的計算公式時,一位學(xué)生提出:“圓的面積定要用s=πr2這個公式來求嗎?”教師鼓勵學(xué)生闡述思考過程“我們把圓割拼成了一個近似的長方形,這個長方形的長是圓周長的一半,寬是圓直徑的一半,因此,s=cd=πr2?!边@一討論思考過程,為全體學(xué)生的學(xué)習(xí)拓寬了思維空間,同時又激發(fā)了學(xué)生的探究欲望。創(chuàng)設(shè)交流情境,變“個人學(xué)習(xí)”為“集體合作”合作討論,探究學(xué)生學(xué)習(xí)潛能。在教學(xué)中,尤其是在深入探討某一關(guān)鍵性問題時,若能組織學(xué)生進(jìn)行小組合作、自由討論,會有利于發(fā)揮每一個學(xué)生的潛力。如教學(xué)《平面幾何的整理與復(fù)習(xí)》時,教師設(shè)計了這樣一個探究的情境:在復(fù)習(xí)了6種平面圖形特征的基礎(chǔ)上,要求學(xué)生小組合作,將這6種圖形之間的相互聯(lián)系,以網(wǎng)絡(luò)結(jié)構(gòu)圖的形式顯現(xiàn)出來。學(xué)生一起思考、大膽嘗試。最終,每個小組都創(chuàng)作出了不同形式的知識結(jié)構(gòu)圖,并分別向大家進(jìn)行了展示和講解。一題多解,培養(yǎng)學(xué)生發(fā)散思維。一題多解是培養(yǎng)學(xué)生思維橫向發(fā)散的一種重要方法,是拓寬學(xué)生思路的有效手段,也是開拓學(xué)生創(chuàng)造性思維的主要途徑。如在學(xué)習(xí)“正比例應(yīng)用題”后,教師設(shè)計了一道發(fā)散思維的訓(xùn)練題,題目是:學(xué)校買塑料繩135米,先剪下9米做5根跳繩,照這樣計算,剩下的塑料繩還可以做多少根跳繩?學(xué)生在獨(dú)立思考,嘗試解答的基礎(chǔ)上,開始進(jìn)行組內(nèi)的交流,學(xué)生從不同的角度去思考問題,分別用比例、方程、算術(shù)三種思路進(jìn)行分析,獲得了多種解答方法。創(chuàng)設(shè)想象情境,變“單一思維”為“多向拓展”再造想象拓寬思維。再造想象是指根據(jù)人的言語或圖樣的示意,在人腦中形成新形象的過程。在鞏固圓柱、圓錐體積的計算一課時,有這樣一道題:一個糧囤,上面是圓錐形狀,高為1.5米,下面是圓柱體,底面半徑2米,高也是1.5米,求這個糧囤的體積。學(xué)生在做這道題時,幾乎全是用圓柱體積加上圓錐體積的方法。這時教師啟發(fā)學(xué)生:請大家再認(rèn)真觀察一下這個糧囤,你還能想出不同的方法嗎?一位學(xué)生說“由于糧囤上面的圓錐體與下面的圓柱體是等底等高的,那么,糧囤的體積應(yīng)該是它上面這個圓錐體積的4倍?!边€有一種解法更有趣,學(xué)生把糧囤上面的圓錐體想象成是一個高縮小了3倍的小柱體,這樣糧囤就可以看作一個高為(1.5+1.5+3)=2米的圓柱體了,它的體積就為:3.14×2×2×2。經(jīng)常引導(dǎo)學(xué)生從不同角度去想象,學(xué)生的創(chuàng)造個性會得到發(fā)展。創(chuàng)造想象變通思維。創(chuàng)造想象,是指不依據(jù)現(xiàn)成的描述而獨(dú)立地創(chuàng)造出新形象的過程。在小學(xué)階段,培養(yǎng)學(xué)生創(chuàng)造想象的最佳方法就是訓(xùn)練學(xué)生進(jìn)行必要的聯(lián)想。如在學(xué)習(xí)了“比”的知識后,老師提出:根據(jù)班中男、女生人數(shù)的比是4:3這條信息你還能想到什么?學(xué)生們由此聯(lián)想到:男生人數(shù)和全班人數(shù)的比是4:7;女生人數(shù)與全班人數(shù)的比是3:7;女生人數(shù)是男生人數(shù)的3/4;女生人數(shù)是全班人數(shù)的3/7;男生人數(shù)比女生人數(shù)多1/3;女生人數(shù)比男生人數(shù)少1/4……培養(yǎng)學(xué)生的創(chuàng)造個性,僅僅停留在創(chuàng)設(shè)以上教學(xué)情境是遠(yuǎn)遠(yuǎn)不夠的。數(shù)學(xué)課堂是培養(yǎng)學(xué)生創(chuàng)新意識、創(chuàng)新精神的主陣地,教師必須樹立“以學(xué)生為中心,以學(xué)生為主體”的教學(xué)觀,讓學(xué)生在教師和學(xué)生自己設(shè)計的情境中,學(xué)會學(xué)習(xí),學(xué)會創(chuàng)造,從而培養(yǎng)學(xué)生終身發(fā)展的學(xué)習(xí)能力。陽光體育活動是為了提高青少年體質(zhì)健康水平在學(xué)校里開展的實(shí)效性活動。2007年5月,中共中央下發(fā)了《關(guān)于加強(qiáng)青少年體育增強(qiáng)青少年體質(zhì)的意見》,隨即教育部、國家體育總局、共青團(tuán)中央全面啟動“全國億萬學(xué)生陽光體育運(yùn)動”,號召廣大青少年學(xué)生走向操場,走進(jìn)大自然,走到陽光下,積極參加體育鍛煉,練就健康體魄。作為一所享受慈溪市政府邊遠(yuǎn)補(bǔ)貼的偏僻農(nóng)村小學(xué),如何針對自身的實(shí)際來組織和開展有效的陽光體育活動,讓全體師生積極參與陽光體育運(yùn)動,我們進(jìn)行了積極的探索和思考。一、小學(xué)校在開展陽光體育活動中的優(yōu)勢和不足隨著經(jīng)濟(jì)的快速發(fā)展,政府不斷加大了對學(xué)校硬件設(shè)施的投入,特別是像慈溪這樣沿海經(jīng)濟(jì)發(fā)達(dá)的地區(qū),學(xué)校雖然地處偏僻,但體育設(shè)施基本完善,學(xué)校的體育器材配備率基本達(dá)標(biāo),加上學(xué)生人數(shù)相對城鎮(zhèn)學(xué)校來說較少,使得學(xué)生人均活動場地面積大大超過國家標(biāo)準(zhǔn),這就為小學(xué)校有效開展陽光體育活動創(chuàng)造了比較有利的硬件環(huán)境。但同時也應(yīng)看到,農(nóng)村體育教師仍然總體不足,存在著專職教師少,兼課教師多,骨干教師少,年輕體育教師多的現(xiàn)狀,體育教師的專業(yè)素質(zhì)有待于進(jìn)一步提高,體育專項經(jīng)費(fèi)投入也有待于進(jìn)一步增加。農(nóng)村偏僻小學(xué)校由于有著獨(dú)特的環(huán)境和實(shí)際情況,在開展陽光體育活動時必須遵循著一切從學(xué)校實(shí)際出發(fā),因地制宜,以激發(fā)學(xué)生體育興趣,提高學(xué)生身體素質(zhì)為目的,走一條農(nóng)村小學(xué)獨(dú)特的陽光體育活動之路。二、小學(xué)校開展有效的陽光體育活動的前提條件所謂有效的陽光體育活動必須包含以下幾點(diǎn)要素:時間有保障,內(nèi)容有創(chuàng)新、鍛煉有實(shí)效、人員有落實(shí)、評價有制度。1.學(xué)校領(lǐng)導(dǎo)對開展陽光體育活動重要性的認(rèn)識是根本。校長作為學(xué)校體育工作和學(xué)生健康的第一責(zé)任人,如果能投入更多的精力,采取更有力的措施,加強(qiáng)對體育工作的組織管理的話,那么,以體育、尤其是開展學(xué)生陽光體育運(yùn)動作為全面推進(jìn)素質(zhì)教育的突破口,從而為培養(yǎng)黨和國家合格的接班人這一難題也就迎刃而解了。我校(注:此處指浙江省慈溪周巷鎮(zhèn)義四小學(xué),下文同)作為一所四百人不到的農(nóng)村小學(xué)校,由校長主管抓體育,積極投入體育專項經(jīng)費(fèi),骨干教師抓業(yè)務(wù)培訓(xùn),根據(jù)各兼課教師的特長,精心選擇鍛煉項目,安排體育活動,爭創(chuàng)學(xué)校體育特色。2.具有一支有責(zé)任心和業(yè)務(wù)水平的體育教師隊伍是基礎(chǔ)。體育教師是學(xué)習(xí)開展體育活動的主要力量,體育教師的專業(yè)能力和敬業(yè)精神決定了陽光體育活動開展的效果。在農(nóng)村小學(xué)校專職體育老師少,兼課老師多的情況下,如何培養(yǎng)和塑造一支強(qiáng)有力的體育教師隊伍,從而更好的為學(xué)校體育活動服務(wù)值得期待。3.具有一套完整的陽光體育活動考評制度是保障。為了切實(shí)開展有效的陽光體育活動,學(xué)校必須制定一系列的規(guī)章制度,將陽光體育運(yùn)動、學(xué)生的體質(zhì)狀況和體育技能列入到星級學(xué)生評比,班集體考核、班主任考核、體育教師考核及各類評優(yōu)評先中。同時,完善和改革大課間、活動課等時間安排,落實(shí)管理督查制度,有專人記錄活動開展?fàn)顩r。三、小學(xué)校開展有效的陽光體育活動的基本途徑1.堅持三課兩操兩活動。認(rèn)真上好每周三節(jié)(其中一二年級四節(jié))的體育課,堅持做好眼保健操和課間操,每周安排兩節(jié)課外活動課(其中一二年級一節(jié)),使學(xué)生在校期間每天鍛煉一小時的規(guī)定得到落實(shí)。2.開好“一會一節(jié)一測試”。每年春季召開學(xué)校的田徑運(yùn)動會,秋季舉行一次學(xué)校體育節(jié),做好一年一度的《國家學(xué)生體質(zhì)健康標(biāo)準(zhǔn)》測試工作,下表是我校第一屆體育節(jié)部分比賽項目,且均計算團(tuán)體成績。3.抓好兩項體育技能。結(jié)合課外文體2+1活動,要求每位學(xué)生在小學(xué)階段至少掌握兩項有鍛煉價值的體育技能,根據(jù)學(xué)生和學(xué)校的實(shí)際,我校將毽子和跳短繩作必學(xué)的兩項技能,并制定了相應(yīng)的評價標(biāo)準(zhǔn),便于考核和管理。4.創(chuàng)建一個體育特色。學(xué)校應(yīng)該根據(jù)體育教師的特長組織一到兩個校級體育特色項目,例如我校在常年開展田徑隊訓(xùn)練的基礎(chǔ)上,近年來又組織了學(xué)校乒乓球隊,以競賽促提高,抓普及,形成學(xué)校校本教材,從而推動陽光體育活動的開展。值得一提的是,近十年來,慈溪市許多農(nóng)村小學(xué)涌現(xiàn)了籃球、足球、排球、武術(shù)、田徑等體育特色項目,為其他小學(xué)進(jìn)一步有效深入的開展陽光體育活動提供了良好的借鑒。5.開展幾個主題活動。根據(jù)季節(jié)的不同,我校開展了不同主題的陽光體育活動,例如三月份的“跑進(jìn)春天”,舉行放風(fēng)箏,越野跑等活動;四、五月份的“尋找童年的游戲”,將踩高蹺、滾鐵環(huán)、紙飛機(jī)等項目引進(jìn)校園,舉行各式的比賽;九、十月份的“體質(zhì)測試月”;十一月份的“體育節(jié)”;十二月份的“冬季健身系列活動”等。四、小學(xué)校開展有效的陽光體育活動的組織方法1.活動時間要充分保證。國家規(guī)定,在校小學(xué)生每天活動時間不得少于一小時,在目前情況下,只要不擠占、挪用,大多數(shù)學(xué)校包括我校還是能通過每周3~4節(jié)體育課、每天半小時的大課間及課外活動來保證一小時的活動時間。2.場地利用要因地制宜。每個學(xué)校可充分利用現(xiàn)有場地如沙坑、跑道、籃球架、攀爬園地、水泥球臺、樓前空地等場地設(shè)施,有組織的開展相應(yīng)的體育活動,肯定能收到意想不到的鍛煉效果。3.器材使用要簡易經(jīng)濟(jì)。陽光體育活動的有效開展并不一定要有花哨的、華而不實(shí)的器材,只要有利于身體鍛煉,有利于激發(fā)學(xué)生興趣,簡單經(jīng)濟(jì)實(shí)用的長短繩、毽子、接力棒、沙包、礦泉水瓶、舊車胎、廢報紙等器材,如能恰當(dāng)利用,變換練習(xí)形式和花樣,不愁收不到良效。4.項目內(nèi)容要豐富有趣。選擇陽光體育活動項目時應(yīng)力求體現(xiàn)合作性和趣味性都較強(qiáng)的集體項目,如20人集體跳長繩,多人多足跑、趣味接力賽(如我校開展的袋鼠跳、滾車胎、負(fù)重跑等)等項目,既鍛煉了學(xué)生的個體素質(zhì),又增強(qiáng)了同學(xué)間的合作能力,有練有樂,有益身心。5.評價方式要形式多樣。各年級段設(shè)立“繩子大王”、“踢毽大王”、“校園吉尼斯”、“陽光體育之星”、“陽光體育班”、……這是我校對陽光體育活動中的一系列的評價制度,它已成為我校陽光體育活動的一大亮點(diǎn),達(dá)標(biāo)爭章,努力成為一名陽光體育活動的積極參與者已成為每個師生的目標(biāo)。五、小學(xué)校開展陽光體育活動的效果兩年多的實(shí)踐證明,通過開展各種有效的陽光體育活動,校園體育文化氛圍增強(qiáng)了,人人會兩項體育技能,班班有一個體育團(tuán)隊,學(xué)校有一個體育特色項目的目標(biāo)正在一步步接近;學(xué)生體育鍛煉的興趣和主動性增強(qiáng)了,體質(zhì)測試的合格率與優(yōu)秀率明顯上升;同時,多樣的體育活動不但沒有影響學(xué)科成績,反而促進(jìn)了其他學(xué)科的學(xué)習(xí),意志品質(zhì)、人際交往能力也有了顯著提高,學(xué)生的綜合素質(zhì)得到了提升。多媒體應(yīng)用開發(fā)16、云無心以出岫,鳥倦飛而知還。多媒體應(yīng)用開1本章要求:第3章
多媒體應(yīng)用開發(fā)使用MediaPlayer播放音頻使用SoundPool播放音頻使用VideoView組件播放視頻使用MediaPlayer和SurfaceView播放視頻本章要求:第3章
多媒體應(yīng)用開發(fā)使用MediaPlayer播23.1播放音頻與視頻3.2綜合實(shí)例第3章
多媒體應(yīng)用開發(fā)3.1播放音頻與視頻第3章
多媒體應(yīng)用開發(fā)3隨著3G時代的到來,在手機(jī)和平板電腦上應(yīng)用多媒體已經(jīng)非常廣泛了。Android作為又一大手機(jī)、平板電腦操作系統(tǒng),對于多媒體應(yīng)用也提供了良好的支持。它不僅支持音頻和視頻的播放,而且還支持錄制音頻等。本章將對Android中的音頻及視頻等多媒體應(yīng)用進(jìn)行詳細(xì)介紹。第3章
多媒體應(yīng)用開發(fā)隨著3G時代的到來,在手機(jī)和平板電腦上應(yīng)用多媒體已經(jīng)43.1.1使用MediaPlayer播放音頻3.1.2使用SoundPool播放音頻3.1.3使用VideoView播放視頻3.1.4使用MediaPlayer和SurfaceView播放視頻3.1播放音頻與視頻3.1.1使用MediaPlayer播放音頻3.1播5Android提供了對常用音頻和視頻格式的支持,它所支持的音頻格式有MP3(.mp3)、3GPP(.3gp)、Ogg(.ogg)和WAVE(.ave)等,支持的視頻格式有3GPP(.3gp)和MPEG-4(.mp4)等。通過AndroidAPI提供的相關(guān)方法,可以實(shí)現(xiàn)音頻與視頻的播放。下面將分別介紹播放音頻與視頻的不同方法。3.1播放音頻與視頻Android提供了對常用音頻和視頻格式的支持,它6在Android中,提供了MediaPlayer類用來播放音頻。使用MediaPlayer類播放音頻比較簡單,只需要創(chuàng)建該類的對象,并為其指定要播放的音頻文件,然后再調(diào)用它的start()方法就可以播放音頻文件了。下面詳細(xì)介紹如何使用MediaPlayer播放音頻文件。1.創(chuàng)建MediaPlayer對象,并裝載音頻文件創(chuàng)建MediaPlayer對象,并裝載音頻文件??梢允褂迷擃愄峁┑撵o態(tài)方法create()來實(shí)現(xiàn),也可通過它的無參構(gòu)造方法來創(chuàng)建并實(shí)例化該類的對象來實(shí)現(xiàn)。MediaPlayer類的靜態(tài)方法create()常用的語法格式有以下兩種:create(Contextcontext,intresid)用于從資源ID所對應(yīng)的資源文件中裝載音頻,并返回新創(chuàng)建的MediaPlayer對象。例如,要創(chuàng)建裝載音頻資源(res/raw/d.wav)的MediaPlayer對象,可以使用下面的代碼:MediaPlayerplayer=MediaPlayer.create(this,R.raw.d);create(Contextcontext,Uriuri)用于根據(jù)指定的URI來裝載音頻,并返回新創(chuàng)建的MediaPlayer對象。例如,要創(chuàng)建裝載了音頻文件(URI地址為3.1.1使用MediaPlayer播放音頻在Android中,提供了MediaPlayer類用7mingribook/sound/bg.mp3)的MediaPlayer對象,可以使用下面的代碼:MediaPlayerplayer=MediaPlayer.create(this,Uri.parse("mingribook/sound/bg.mp3"));說明:在訪問網(wǎng)絡(luò)中的資源時,要在AndroidManifest.xml文件中授予該程序訪問網(wǎng)絡(luò)的權(quán)限,具體的授權(quán)代碼如下:<uses-permissionandroid:name="android.permission.INTERNET"/>在通過MediaPlayer類的靜態(tài)方法create創(chuàng)建MediaPlayer對象時,已經(jīng)裝載了要播放的音頻,而使用無參的構(gòu)造方法來創(chuàng)建MediaPlayer對象時,需要單獨(dú)指定要裝載的資源,這可以使用MediaPlayer類的setDataSource方法實(shí)現(xiàn)。在使用setDataSource方法裝載音頻文件后,實(shí)際上MediaPlayer并未真正去裝載該音頻文件,還需要調(diào)用MediaPlayer的prepare方法去裝載音頻文件。使用無參的構(gòu)造方法來創(chuàng)建MediaPlayer對象并裝載指定的音頻文件可以使用下面的代碼:mingribook/sound/bg.mp3)的Media8MediaPlayerplayer=newMediaPlayer();try{ player.setDataSource("/sdcard/s.wav"); //指定要裝載的音頻文件}catch(IllegalArgumentExceptione1){ e1.printStackTrace();}catch(SecurityExceptione1){ e1.printStackTrace();}catch(IllegalStateExceptione1){ e1.printStackTrace();}catch(IOExceptione1){ e1.printStackTrace();}try{ player.prepare(); //預(yù)加載音頻}catch(IllegalStateExceptione){ e.printStackTrace();}catch(IOExceptione){ e.printStackTrace();}MediaPlayerplayer=newMediaPl92.開始或恢復(fù)播放在獲取到MediaPlayer對象后,就可以使用MediaPlayer類提供的start方法來開始播放或恢復(fù)已經(jīng)暫停的音頻的播放。例如,已經(jīng)創(chuàng)建了一個名稱為player,并且裝載了要播放音頻的MediaPlayer,可以使用下面的代碼播放該音頻。player.start(); //開始播放3.停止播放使用MediaPlayer類提供的stop方法可以停止正在播放的音頻。例如,已經(jīng)創(chuàng)建了一個名稱為player,并且已經(jīng)開始播放裝載的音頻,可以使用下面的代碼停止播放該音頻。player.stop(); //停止播放4.暫停播放使用MediaPlayer類提供的pause方法可以暫停正在播放的音頻。例如,已經(jīng)創(chuàng)建了一個名稱為player,并且已經(jīng)開始播放裝載的音頻,可以使用下面的代碼暫停播放該音頻。player.pause(); //暫停播放2.開始或恢復(fù)播放10【例13-1】在Eclipse中創(chuàng)建Android項目,實(shí)現(xiàn)包括播放、暫停/繼續(xù)和停止功能的簡易音樂播放器。(1)將要播放的音頻文件上傳到SD卡的根目錄中,這里要播放的音頻文件為ninan.mp3。(2)修改新建項目的res/layout目錄下的布局文件main.xml,在默認(rèn)添加的線性布局管理器中添加一個水平線性布局管理器,并在其中添加3個按鈕,分別為“播放”按鈕、“暫停/繼續(xù)”按鈕和“停止”按鈕。(3)打開默認(rèn)添加的MainActivity,在該類中,定義所需的成員變量,具體代碼如下:privateMediaPlayerplayer; //MediaPlayer對象privatebooleanisPause=false; //是否暫停privateFilefile; //要播放的音頻文件privateTextViewhint; //聲明顯示提示信息的文本框(4)在onCreate()方法中,首先獲取布局管理器中添加的“播放”按鈕、“暫停/繼續(xù)”按鈕、“停止”按鈕和顯示提示信息的文本框,然后獲取要播放的文件,最后再判斷該文件是否存在,如果存在,則創(chuàng)建一個裝載該文件的MediaPlayer對象,否則,顯示提示信息,并設(shè)置“播放”按鈕不可用,關(guān)鍵代碼如下:【例13-1】在Eclipse中創(chuàng)建Android項目,實(shí)11finalButtonbutton1=(Button)findViewById(R.id.button1);//獲取播放按鈕finalButtonbutton2=(Button)findViewById(R.id.button2);//獲取“暫停/繼續(xù)”按鈕finalButtonbutton3=(Button)findViewById(R.id.button3);//獲取“停止”按鈕hint=(TextView)findViewById(R.id.hint); //獲取用戶顯示提示信息的文本框file=newFile("/sdcard/ninan.mp3"); //獲取要播放的文件if(file.exists()){ //如果文件存在 player=MediaPlayer .create(this,Uri.parse(file.getAbsolutePath()));//創(chuàng)建MediaPlayer對象}else{ hint.setText("要播放的音頻文件不存在!"); button1.setEnabled(false); return;}(5)編寫用于播放音樂的play()方法,該方法沒有入口參數(shù)的返回值。在該方法中,首先調(diào)用MediaPlayer對象的reset()方法重置MediaPlayer對象,然后重新為其設(shè)置要播放的音頻文件,并預(yù)加載該音頻,最后調(diào)用finalButtonbutton1=(Button12start()方法開始播放音頻,并修改顯示提示信息的文本框中的內(nèi)容,具體代碼如下:privatevoidplay(){ try{ player.reset(); //重新設(shè)置要播放的音頻
player.setDataSource(file.getAbsolutePath()); player.prepare(); //預(yù)加載音頻 player.start(); //開始播放 hint.setText("正在播放音頻...");}catch(Exceptione){ e.printStackTrace(); //輸出異常信息 }}(6)為MediaPlayer對象添加完成事件監(jiān)聽器,用于當(dāng)音樂播放完畢后,重新開始播放音樂,具體代碼如下:start()方法開始播放音頻,并修改顯示提示信息的文本框中13player.setOnCompletionListener(newOnCompletionListener(){ Override publicvoidonCompletion(MediaPlayermp){ play(); //重新開始播放 }});(7)為“播放”按鈕添加單擊事件監(jiān)聽器,在重寫的onClick()方法中,首先調(diào)用play()方法開始播放音樂,然后對代表是否暫停的標(biāo)記變量isPause進(jìn)行設(shè)置,最后再設(shè)置各按鈕的可用狀態(tài),關(guān)鍵代碼如下:button1.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ play(); //開始播放音樂 if(isPause){ button2.setText("暫停"); isPause=false; //設(shè)置暫停標(biāo)記變量的值為false }
player.setOnCompletionListener14button2.setEnabled(true); //“暫停/繼續(xù)”按鈕可用 button3.setEnabled(true); //“停止”按鈕可用 button1.setEnabled(false); //“播放”按鈕不可用 }});(8)為“暫停/繼續(xù)”按鈕添加單擊事件監(jiān)聽器,在重寫的onClick()方法中,如果MediaPlayer處于播放狀態(tài)并且標(biāo)記變量isPause的值為false,則暫停播放音頻,并設(shè)置相關(guān)信息,否則調(diào)用MediaPlayer對象的start()方法繼續(xù)播放音樂,并設(shè)置相關(guān)信息,關(guān)鍵代碼如下:button2.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ if(player.isPlaying()&&!isPause){ player.pause(); //暫停播放; isPause=true; ((Button)v).setText("繼續(xù)"); hint.setText("暫停播放音頻...");button2.setEnabled(true); //15 button1.setEnabled(true); //“播放”按鈕可用 }else{ player.start(); //繼續(xù)播放 ((Button)v).setText("暫停"); hint.setText("繼續(xù)播放音頻..."); isPause=false; button1.setEnabled(false); //“播放”按鈕不可用 } }});(9)為“停止”按鈕添加單擊事件監(jiān)聽器,在重寫的onClick()方法中,首先調(diào)用MediaPlayer對象的stop()方法停止播放音頻,然后設(shè)置提示信息及各按鈕的可用狀態(tài),具體代碼如下:button3.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ player.stop(); //停止播放; hint.setText("停止播放音頻...");
button1.setEnabled(true); /16button2.setEnabled(false); //“暫停/繼續(xù)”按鈕不可用 button3.setEnabled(false); //“停止”按鈕不可用 button1.setEnabled(true); //“播放”按鈕可用 }});(10)重寫Acitivity的onDestroy()方法,用于在當(dāng)前Activity銷毀時,停止正在播放的視頻,并釋放MediaPlayer所占用的資源,具體代碼如下:OverrideprotectedvoidonDestroy(){ if(player.isPlaying()){ player.stop(); //停止音頻的播放 } player.release(); //釋放資源 super.onDestroy();}運(yùn)行本實(shí)例,將顯示一個簡易音樂播放器,單擊“播放”按鈕,將開始播放音樂,同時“播放”按鈕變?yōu)椴豢捎脿顟B(tài),而“暫?!卑粹o和“停止”按鈕變?yōu)榭捎脿顟B(tài),如圖13-1所示;單擊“暫?!卑粹o,將暫停音樂的button2.setEnabled(false); //17播放,同時“播放”按鈕變?yōu)榭捎?;單擊“繼續(xù)”按鈕,將繼續(xù)音樂的播放,同時“繼續(xù)”按鈕變?yōu)椤皶和!卑粹o;單擊“停止”按鈕,將停止音樂的播放,同時“暫停/繼續(xù)”和“停止”按鈕,將變?yōu)椴豢捎?,“播放”按鈕可用。圖13-1簡易音樂播放器播放,同時“播放”按鈕變?yōu)榭捎?;單擊“繼續(xù)”按鈕,將繼續(xù)音樂18由于MediaPlayer占用資源較高,且不支持同時播放多個音頻,所以Android還提供了另一個播放音頻的SoundPool。SoundPool也就是音頻池,它可以同時播放多個短促的音頻,而且占用的資源少。SoundPool適合在應(yīng)用程序中的播放按鍵音或者消息提示音等、在游戲中實(shí)現(xiàn)密集而短暫的聲音,例如,多個飛機(jī)的爆炸聲等。使用SoundPool播放音頻,首先需要創(chuàng)建SoundPool對象,然后加載所要播放的音頻,最后再調(diào)用play()方法播放音頻,下面進(jìn)行詳細(xì)介紹。1.創(chuàng)建SoundPool對象SoundPool類提供了一個構(gòu)造方法,用來創(chuàng)建SoundPool對象,該構(gòu)造方法的語法格式如下:SoundPool(intmaxStreams,intstreamType,intsrcQuality)其中,maxStreams參數(shù)用于指定可以容納多少個音頻;streamType參數(shù)用于指定聲音類型,可以通過AudioManager類提供的常量進(jìn)行指定,通常使用STREAM_MUSIC;srcQuality參數(shù)用于指定音頻的品質(zhì),0為默認(rèn)值。例如,創(chuàng)建一個可以容納10個音頻的SoundPool對象,可以使用可以的代碼3.1.2使用SoundPool播放音頻由于MediaPlayer占用資源較高,且不支持同時播放多個19SoundPoolsoundpool=newSoundPool(10,AudioManager.STREAM_SYSTEM,0); //創(chuàng)建一個SoundPool對象,該對象可以容納10個音頻流2.加載所要播放的音頻創(chuàng)建SoundPool對象后,可以調(diào)用它的load()方法來加載要播放的音頻。load()方法的語法格式有以下4種:publicintload(Contextcontext,intresId,intpriority)用于通過指定的資源ID來加載音頻。publicintload(Stringpath,intpriority)用于通過音頻文件的路徑來加載音頻。publicintload(AssetFileDescriptorafd,intpriority)用于從AssetFileDescriptor所對應(yīng)的文件中加載音頻。publicintload(FileDescriptorfd,longoffset,longlength,intpriority)用于加載FileDescriptor對象中,從offset開始,長度為length的音頻。例如,要通過資源ID來加載音頻文件ding.wav,可以使用下面的代碼。soundpool.load(this,R.raw.ding,1);說明:為了更好的管理所加載的每個音頻,一般使用HashMap<Integer,Integer>SoundPoolsoundpool=newSoun20對象來管理這些音頻。這時可以先創(chuàng)建一個HashMap<Integer,Integer>對象,然后應(yīng)用該對應(yīng)的put()方法將加載的音頻保存到該對象中。例如,創(chuàng)建一個HashMap<Integer,Integer>對象,并應(yīng)用put()方法添加一個音頻可以使用下面的代碼:HashMap<Integer,Integer>soundmap=newHashMap<Integer,Integer>(); //創(chuàng)建一個HashMap對象soundmap.put(1,soundpool.load(this,R.raw.chimes,1));3.播放音頻調(diào)用SoundPool對象的play()方法可播放指定音頻。play()方法的語法格式如下:play(intsoundID,floatleftVolume,floatrightVolume,intpriority,intloop,floatrate)play()方法的各參數(shù)說明如表所示。對象來管理這些音頻。這時可以先創(chuàng)建一個HashMap<Int21方
法描
述soundID用于指定要播放的音頻,該音頻為通過load()方法返回的音頻leftVolume用于指定左聲道的音量,取值范例為0.0~1.0rightVolume用于指定右聲道的音量,取值范例為0.0~1.0priority用于指定播放音頻的優(yōu)先級,數(shù)值越大,優(yōu)先級越高loop用于指定循環(huán)次數(shù),0為不循環(huán),-1為循環(huán)rate用于指定速率,1為正常,最值為0.5,最高為2方法描述soundID用于指定要播放的音頻,22例如,要播放音頻資源中保存的音頻文件notify.wav,可以使用下面的代碼。soundpool.play(soundpool.load(MainActivity.this,R.raw.notify,1),1,1,0,0,1);【例3-2】在Eclipse中創(chuàng)建Android項目,實(shí)現(xiàn)通過SoundPool播放音頻。(1)修改新建項目的res/layout目錄下的布局文件main.xml,將默認(rèn)添加的TextView組件刪除,然后在默認(rèn)添加的線性布局管理器中添加4個按鈕,分別為“風(fēng)鈴聲”按鈕、“布谷鳥叫聲”按鈕、“門鈴聲”按鈕和“電話聲”按鈕。(2)打開默認(rèn)添加的MainActivity,在該類中,創(chuàng)建兩個成員變量,具體代碼如下:privateSoundPoolsoundpool; //聲明一個SoundPool對象//創(chuàng)建一個HashMap對象privateHashMap<Integer,Integer>soundmap=newHashMap<Integer,Integer>();例如,要播放音頻資源中保存的音頻文件notify.wav,可23(3)在onCreate()方法中,首先獲取布局管理器中添加的“風(fēng)鈴聲”按鈕、“布谷鳥叫聲”按鈕、“門鈴聲”按鈕和“電話聲”按鈕,然后實(shí)例化SoundPool對象,再將要播放的全部音頻流保存到HashMap對象中,具體代碼如下:Buttonchimes=(Button)findViewById(R.id.button1);//獲取“風(fēng)鈴聲”按鈕Buttonenter=(Button)findViewById(R.id.button2); //獲取“布谷鳥叫聲”按鈕Buttonnotify=(Button)findViewById(R.id.button3); //獲取“門鈴聲”按鈕Buttonringout=(Button)findViewById(R.id.button4);//獲取“電話聲”按鈕soundpool=newSoundPool(5, AudioManager.STREAM_SYSTEM,0);//創(chuàng)建一個SoundPool對象,該對象可以容納5個音頻流//將要播放的音頻流保存到HashMap對象中soundmap.put(1,soundpool.load(this,R.raw.chimes,1));soundmap.put(2,soundpool.load(this,R.raw.enter,1));soundmap.put(3,soundpool.load(this,R.raw.notify,1));soundmap.put(4,soundpool.load(this,R.raw.ringout,1));soundmap.put(5,soundpool.load(this,R.raw.ding,1));(3)在onCreate()方法中,首先獲取布局管理器中添加24(4)分別為“風(fēng)鈴聲”按鈕、“布谷鳥叫聲”按鈕、“門鈴聲”按鈕和“電話聲”按鈕添加單擊事件監(jiān)聽器,在重寫的onClick()方法中播放指定音頻,具體代碼如下:chimes.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ soundpool.play(soundmap.get(1),1,1,0,0,1); //播放指定的音頻 }});enter.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ soundpool.play(soundmap.get(2),1,1,0,0,1); //播放指定的音頻 }});notify.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){
(4)分別為“風(fēng)鈴聲”按鈕、“布谷鳥叫聲”按鈕、“門鈴聲”按25soundpool.play(soundmap.get(3),1,1,0,0,1); //播放指定的音頻 }});ringout.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ soundpool.play(soundmap.get(4),1,1,0,0,1); //播放指定的音頻 }});(5)重寫鍵盤按鍵被按下的方法onKeyDown(),用于實(shí)現(xiàn)播放按鍵音的功能,具體代碼如下:OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){ soundpool.play(soundmap.get(5),1,1,0,0,1); //播放按鍵音 returntrue;}運(yùn)行本實(shí)例,將顯示如圖3-2所示的運(yùn)行結(jié)果。單擊“風(fēng)鈴聲”、“布谷鳥叫聲”等按鈕,將播放相應(yīng)的音樂;按下鍵盤上的按鈕,將播放一個按鍵音。soundpool.play(soundmap.get(3)26圖3-2應(yīng)用SoundPool播放音頻多媒體應(yīng)用開發(fā)課件27在Android中提供了一個VideoView組件,用于播放視頻文件。要想使用VideoView組件播放視頻,首先需要先在布局文件中創(chuàng)建該組件,然后在Activity中獲取該組件,并應(yīng)用其setVideoPath()方法或setVideoURI()方法加載要播放的視頻,最后調(diào)用VideoView組件的start()方法來播放視頻。另外,VideoView組件還提供了stop()和pause()方法來停止或暫停視頻的播放。在布局文件中創(chuàng)建VideoView組件的基本語法格式如下:<VideoView
屬性列表</VideoView>VideoView組件支持的XML屬性如表13-2所示。表13-2VideoView組件支持的XML屬性3.1.3使用VideoView播放視頻XML屬性描
述android:id用于設(shè)置組件的IDandroid:background用于設(shè)置背景,可以設(shè)置背景圖片,也可以設(shè)置背景顏色android:layout_gravity用于設(shè)置對齊方式android:layout_width用于設(shè)置寬度android:layout_height用于設(shè)置高度在Android中提供了一個VideoView組件,28在Android還提供了一個可以與VideoView組件結(jié)合使用的MediaController組件。MediaController組件用于通過圖形控制界面來控制視頻的播放。下面通過一個具體的實(shí)例來說明如何使用VideoView和MediaController來播放視頻?!纠?-3】在Eclipse中創(chuàng)建Android項目,實(shí)現(xiàn)通過VideoView播放視頻。(1)修改新建項目的res/layout目錄下的布局文件main.xml,將默認(rèn)添加的TextView組件刪除,然后在默認(rèn)添加的線性布局管理器中添加一個VideoView組件用于播放視頻文件,關(guān)鍵代碼如下:<VideoViewandroid:id="+id/video"android:background="drawable/mpbackground"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center"/>(2)打開默認(rèn)添加的MainActivity,在該類中,聲明一個VideoView對象,具體代碼如下:privateVideoViewvideo; //聲明VideoView對象在Android還提供了一個可以與VideoView組件結(jié)合29(3)在onCreate()方法中,首先獲取布局管理器中添加的VideoView,并創(chuàng)建一個要播放視頻所對應(yīng)的File對象,然后創(chuàng)建一個MediaController對象,用于控制視頻的播放,最后再判斷要播放的視頻文件是否存在,如果存在使用VideoView播放該視頻,否而顯示消息提示框顯示提示信息,具體代碼如下:video=(VideoView)findViewById(R.id.video); //獲取VideoView組件Filefile=newFile("/sdcard/mingrisoft.mp4"); //獲取SD卡上要播放的文件MediaControllermc=newMediaController(MainActivity.this);if(file.exists()){ //判斷要播放的視頻文件是否存在 video.setVideoPath(file.getAbsolutePath()); //指定要播放的視頻 //設(shè)置VideoView與MediaController相關(guān)聯(lián)
video.setMediaController(mc); video.requestFocus(); //讓VideoView獲得焦點(diǎn) try{ video.start(); //開始播放視頻 }catch(Exceptione){
(3)在onCreate()方法中,首先獲取布局管理器中添加30e.printStackTrace(); //輸出異常信息 } //為VideoView添加完成事件監(jiān)聽器 video.setOnCompletionListener(newOnCompletionListener(){ Override publicvoidonCompletion(MediaPlayermp){ Toast.makeText(MainActivity.this,"視頻播放完畢!",Toast.LENGTH_SHORT).show(); } });}else{ Toast.makeText(this,"要播放的視頻文件不存在",Toast.LENGTH_SHORT).show();}實(shí)例運(yùn)行結(jié)果如圖13-3所示。e.printStackTrace(); //輸出異3113.1.1節(jié)介紹了使用MediaPlayer播放音頻,實(shí)際上,MediaPlayer還可以用來播放視頻文件,只不過使用MediaPlayer播放視頻時,沒有提供圖像輸出界面。這時,可以使用SurfaceView組件來顯示視頻圖像。使用MediaPlayer和SurfaceView播放視頻,大致可以分為以下4個步驟。1.定義SurfaceView組件定義SurfaceView組件可以在布局管理器中實(shí)現(xiàn),也可以直接在Java代碼中創(chuàng)建,不過推薦使用布局管理器中創(chuàng)建。在布局管理器中定義SurfaceView組件的基本語法格式如下:<SurfaceViewandroid:id="+id/ID號"android:background="背景"android:keepScreenOn="true|false"android:layout_width="寬度"android:layout_height="高度"/>在上面的語法中,android:keepScreenOn屬性用于指定在播放視頻時,是否打開屏幕。例如,在布局管理器中,添加一個ID號為surfaceView1、設(shè)置了背景的SurfaceView組件,可以使用下面的代碼。3.1.4使用MediaPlayer和SurfaceView播放視頻13.1.1節(jié)介紹了使用MediaPlayer播放音頻,實(shí)際32<SurfaceViewandroid:id="+id/surfaceView1"android:background="drawable/bg"android:keepScreenOn="true"android:layout_width="576px"android:layout_height="432px"/>2.創(chuàng)建MediaPlayer對象,并為其加載要播放的視頻與播放音頻時創(chuàng)建MediaPlayer對象一樣,也可以使用MediaPlayer類的靜態(tài)方法create和無參的構(gòu)造方法兩種方式創(chuàng)建MediaPlayer對象。3.將所播放的視頻畫面輸出到SurfaceView使用MediaPlayer對象的setDisplay方法可以將所播放的視頻畫面輸出到SurfaceView。setDisplay方法的語法格式如下:setDisplay(SurfaceHoldersh)參數(shù)sh用于指定SurfaceHolder對象,可以通過SurfaceView對象的getHolder()方法獲得。例如,為MediaPlayer對象指定輸出視頻畫面的SurfaceView,可以使用下面的代碼:mediaplayer.setDisplay(surfaceview.getHolder()); //設(shè)置將視頻畫面輸出到SurfaceView4.調(diào)用MediaPlayer對象的相應(yīng)方法控制視頻的播放<SurfaceView33使用MediaPlayer對象提供的play、pause和stop方法,可以控制視頻的播放、暫停和停止。下面通過一個具體的實(shí)例演示如何使用MediaPlayer和SurfaceView播放視頻。【例3-4】在Eclipse中創(chuàng)建Android項目,實(shí)現(xiàn)通過MeidaPlayer和SurfaceView播放視頻。(1)修改新建項目的res/layout目錄下的布局文件main.xml,將默認(rèn)添加的TextView組件刪除,然后在默認(rèn)添加的線性布局管理器中添加一個SurfaceView組件用于顯示視頻圖像,和一個水平線性布局管理器,并在該水平線性布局管理器中,添加3個按鈕,分別為“播放”按鈕、“暫停/繼續(xù)”按鈕和“停止”按鈕,關(guān)鍵代碼如下:<SurfaceViewandroid:id="+id/surfaceView1"android:layout_width="264dp"android:layout_height="234dp"android:background="drawable/bg"android:keepScreenOn="true"/>(2)打開默認(rèn)添加的MainActivity,在該類中,聲明一個MediaPlayer對象和使用MediaPlayer對象提供的play、pause和s34一個SurfaceView對象,具體代碼如下: privateMediaPlayermp; //聲明MediaPlayer對象 privateSurfaceViewsv; //聲明SurfaceView對象(3)在onCreate()方法中,首先實(shí)例化MediaPlayer對象,然后獲取布局管理器中添加的SurfaceView組件,最后再分別獲取“播放”按鈕、“暫停/繼續(xù)”按鈕和“停止”按鈕,具體代碼如下:mp=newMediaPlayer(); //實(shí)例化MediaPlayer對象sv=(SurfaceView)findViewById(R.id.surfaceView1); //獲取布局管理器中添加的SurfaceView組件Buttonplay=(Button)findViewById(R.id.play); //獲取“播放”按鈕finalButtonpause=(Button)findViewById(R.id.pause); //獲取“暫停/繼續(xù)”按鈕Buttonstop=(Button)findViewById(R.id.stop); //獲取“停止”按鈕(4)分別為“播放”按鈕、“暫停/繼續(xù)”按鈕和“停止”按鈕添加單擊事件監(jiān)聽器,并在重寫的onClick()方法中,實(shí)現(xiàn)播放視頻、暫停/繼續(xù)播放視頻和停止播放視頻等功能,具體代碼如下:一個SurfaceView對象,具體代碼如下:35//為“播放”按鈕添加單擊事件監(jiān)聽器play.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ mp.reset(); //重置MediaPlayer對象 try{ mp.setDataSource("/sdcard/ccc.mp4");//設(shè)置要播放的視頻 mp.setDisplay(sv.getHolder()); //設(shè)置將視頻畫面輸出到SurfaceView mp.prepare(); //預(yù)加載視頻 mp.start(); //開始播放
sv.setBackgroundResource(R.drawable.bg_playing);//改變SurfaceView的背景圖片 pause.setText("暫停"); pause.setEnabled(true); //設(shè)置“暫停”按鈕可用
//為“播放”按鈕添加單擊事件監(jiān)聽器36}catch(IllegalArgumentExceptione){e.printStackTrace(); }catch(SecurityExceptione){ e.printStackTrace(); }catch(IllegalStateExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } }});//為“停止”按鈕添加單擊事件監(jiān)聽器stop.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ if(mp.isPlaying()){ mp.stop(); //停止播放 sv.setBackgroundResource(R.drawable.bg_finish); //改變SurfaceView的背景圖片
}catch(IllegalArgumentExcept37pause.setEnabled(false); //設(shè)置“暫?!卑粹o不可用 } }});//為“暫?!卑粹o添加單擊事件監(jiān)聽器pause.setOnClickListener(newOnClickListener(){ Override publicvoidonClick(Viewv){ if(mp.isPlaying()){ mp.pause(); //暫停視頻的播放 ((Button)v).setText("繼續(xù)"); }else{ mp.start(); //繼續(xù)視頻的播放 ((Button)v).setText("暫停"); } }});pause.setEnabled(false); //設(shè)置38(5)為MediaPlayer對象添加完成事件監(jiān)聽器,在重寫的onCompletion()方法中改變SurfaceView的背景圖片并彈出消息提示框顯示視頻已經(jīng)播放完畢,具體代碼如下:mp.setOnCompletionListener(newOnCompletionListener(){ Override publicvoidonCompletion(MediaPlayermp){ sv.setBackgroundResource(R.drawable.bg_finish); //改變SurfaceView的背景圖片 Toast.makeText(MainActivity.this,"視頻播放完畢!",Toast.LENGTH_SHORT).show(); }});(6)重寫Acitivity的onDestroy()方法,用于在當(dāng)前Activity銷毀時,停止正在播放的視頻,并釋放MediaPlayer所占用的資源,具體代碼如下:OverrideprotectedvoidonDestroy(){ if(mp.isPlaying()){ mp.stop(); //停止播放視頻 }
(5)為MediaPlayer對象添加完成事件監(jiān)聽器,在重寫39mp.release(); //釋放資源 super.onDestroy();}運(yùn)行本實(shí)例,如圖3.4所示,單擊“播放”按鈕,開始播放視頻,并且讓暫??捎茫粏螕簟皶和!卑粹o,暫停視頻的播放,同時該按鈕變?yōu)椤袄^續(xù)”按鈕;單擊“停止”按鈕,停止正在播放的視頻。圖3-4使用MediaPlayer和SurfaceView播放視頻mp.release(); //釋放資源40本實(shí)例主要在Android程序中實(shí)現(xiàn)制作開場動畫的功能,運(yùn)行程序,首先播放指定的視頻,視頻播放完畢后,將進(jìn)入到如圖13-5所示的游戲主界面。圖3-5游戲主界面程序開發(fā)步驟如下:(1)修改新建項目的res/layout目錄下的布局文件main.xml,將默認(rèn)添加的布局代碼刪除,然后添加一個FrameLayout幀布局管理器,并在該布局管理器中添加一個ImageView,用于顯示一只小兔子,另外,還需要為添加的幀布局管理器設(shè)置背景圖片。(2)在res/layout目錄下創(chuàng)建一個布局文件start.xml,在該文件中添加一3.2綜合實(shí)例——制作開場動畫本實(shí)例主要在Android程序中實(shí)現(xiàn)制作開場動畫的功41居中顯示的線性布局管理器,并在該布局管理器中添加一個VideoView組件用于播放開場動畫視頻文件,代碼如下:<VideoViewandroid:id="+id/video"android:layout_width="wrap_content"android:layout_height="wrap_content"/>(3)創(chuàng)建一個名稱為StartActivity的Activity,并重寫其onCreate()方法,在該方法,首先獲取VideoView組件,并獲取要播放的文件對應(yīng)的URI,然后為VideoView組件指定要播放的視頻,并讓其獲得焦點(diǎn),再調(diào)用start()方法開始播放視頻,最后為VideoView添加完成事件監(jiān)聽器,在重寫的onCompletion()方法調(diào)用startMain()方法進(jìn)入到游戲主界面,具體代碼如下:video=(VideoView)findViewById(R.id.video); //獲取VideoView組件//獲取要播放的文件對應(yīng)的URIUriuri=Uri.parse("android.resource://com.mingrisoft/"+R.raw.mingrisoft);video.setVideoURI(uri); //指定要播放的視頻video.requestFocus(); 居中顯示的線性布局管理器,并在該布局管理器中添加一個Vide42 //讓VideoView獲得焦點(diǎn)try{video.start(); //開始播放視頻 }catch(Exceptione){ e.printStackTrace(); //輸出異常信息 } //為VideoView添加完成事件監(jiān)聽器 video.setOnCompletionListener(newOnCompletionListener(){ Override publicvoidonCompletion(MediaPlayermp){ startMain(); //進(jìn)入游戲主界面 } });(4)編寫進(jìn)入游戲主界面的startMain()方法,在該方法創(chuàng)建一個新的Intent,來啟動游戲主界面的Activity,具體代碼如下: privatevoidstartMain(){ //進(jìn)入游戲主界面
//讓VideoView獲得焦點(diǎn)43Intentintent=newIntent(StartActivity.this,MainActivity.class); startActivity(intent); //啟動新的Activity StartActivity.this.finish(); //結(jié)束當(dāng)前Activity }(5)打開AndroidManifest.xml文件,在該文件中,配置項目中應(yīng)用的Activity。這里首先將主Activity設(shè)置為StartActivity,然后再配置MainActivity,關(guān)鍵代碼如下:<activityandroid:label="string/app_name"android:name=".StartActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name=".MainActivity"/>
Intentintent=newIntent(Sta44(1)MediaPlayer類用來播放音頻。使用MediaPlayer類播放音頻比較簡單,只需要創(chuàng)建該類的對象,并為其指定要播放的音頻文件,然后再調(diào)用它的start()方法就可以播放音頻文件了。(2)SoundPool也就是音頻池,它可以同時播放多個短促的音頻,而且點(diǎn)用的資源少。SoundPool適合在應(yīng)用程序中的播放按鍵音或者消息提示音等、在游戲中實(shí)現(xiàn)密集而短暫的聲音。(3)VideoView組件,用于播放視頻文件。知識點(diǎn)提煉(1)MediaPlayer類用來播放音頻。使用MediaP453-1使用MediaPlayer播放音頻分為幾步?每步分別是什么?3-2簡述如何使用SoundPool。3-3簡述如何使用VideoView。3-4簡述如何使用MediaPlayer和SurfaceView播放視頻。習(xí)題3-1使用MediaPlayer播放音頻分為幾步?每步分46<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>Filefilepath=Environment.getExternalStorageDirectory();//sdcard卡的根目錄
Filefile=newFile(filepath,"water.mp4");<uses-permissionandroid:name=47謝謝46、我們?nèi)粢呀邮茏顗牡?,就再沒有什么損失?!突?/p>
47、書到用時方恨少、事非經(jīng)過不知難?!懹?/p>
48、書籍把我們引入最美好的社會,使我們認(rèn)識各個時代的偉大智者。——史美爾斯
49、熟讀唐詩三百首,不會作詩也會吟?!獙O洙
50、誰和我一樣用功,誰就會和我一樣成功。——莫扎特謝謝46、我們?nèi)粢呀邮茏顗牡?,就再沒有什么損失。——卡耐基48多媒體應(yīng)用開發(fā)16、云無心以出岫,鳥倦飛而知還。17、童孺縱行歌,斑白歡游詣。18、福不虛至,禍不易來。19、久在樊籠里,復(fù)得返自然。20、羈鳥戀舊林,池魚思故淵。多媒體應(yīng)用開發(fā)多媒體應(yīng)用開發(fā)16、云無心以出岫,鳥倦飛而知還。17、童孺縱行歌,斑白歡游詣。18、福不虛至,禍不易來。19、久在樊籠里,復(fù)得返自然。20、羈鳥戀舊林,池魚思故淵。本章要求:第3章
多媒體應(yīng)用開發(fā)使用MediaPlayer播放音頻使用SoundPool播放音頻使用VideoView組件播放視頻使用MediaPlayer和SurfaceView播放視頻3.1播放音頻與視頻3.2綜合實(shí)例第3章
多媒體應(yīng)用開發(fā)創(chuàng)設(shè)質(zhì)疑情境,變“被動接受”為“主動探索”“學(xué)起于思,思源于疑?!眴栴}是推動創(chuàng)新的原動力,鼓勵學(xué)生質(zhì)疑是培養(yǎng)學(xué)生創(chuàng)新意識的重要途徑。教師應(yīng)引導(dǎo)學(xué)生在學(xué)習(xí)過程中發(fā)現(xiàn)問題,大膽質(zhì)疑。例如,在學(xué)習(xí)推導(dǎo)圓面積的計算公式時,一位學(xué)生提出:“圓的面積定要用s=πr2這個公式來求嗎?”教師鼓勵學(xué)生闡述思考過程“我們把圓割拼成了一個近似的長方形,這個長方形的長是圓周長的一半
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時保安合同范本
- 人才引進(jìn)聘用合同范本
- 2025年西藏貨運(yùn)從業(yè)資格證考試模擬考試題目答案
- 專業(yè)購銷合同范本
- 個人雇傭老師合同范本
- 加工木料供貨合同范本
- 辦公區(qū)花卉租賃合同范本
- 冰淇淋原材料采購合同范本
- 儀器外借合同范本
- 公交駕校培訓(xùn)合同范本
- 杭州市主城區(qū)聲環(huán)境功能區(qū)劃分圖
- 湖南省陽氏宗親分布村落
- 八年級數(shù)學(xué)(上冊)整式計算題練習(xí)100道無答案_新人教版
- 豐田卡羅拉電路圖介紹
- 中考語文十大專題總復(fù)習(xí)資料
- 汽車駕駛員專業(yè)競賽實(shí)施方案
- 知乎的SWOT分析(表格)
- 常用家電維修基礎(chǔ)知識(課堂PPT)
- 楊氏太極拳37式拳譜
- 臥式設(shè)備安裝
- 橋梁施工危險源辨識與防控措施
評論
0/150
提交評論