Android菜鳥做音樂播放器_第1頁
Android菜鳥做音樂播放器_第2頁
Android菜鳥做音樂播放器_第3頁
Android菜鳥做音樂播放器_第4頁
Android菜鳥做音樂播放器_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Android菜鳥做音樂播放器1.1大家好,我們老師經(jīng)常說要自己動手做做小項目,并給這個小項目不斷的增加新的東西,在這個過程中你將會受益匪淺!本人從兩三個月之前就開始學(xué)Android了,但是由于某些原因中途不得不中斷Android的學(xué)習(xí)?,F(xiàn)在有時間了而且想往Android這方面發(fā)展,所以想通過這個音樂播放器來鞏固自己的基礎(chǔ)也讓我的水平更上一層樓。也希望與大家多多交流,各位牛人多多指教!這是我這個音樂播放器的第一個版本,只能播放一首歌,有播放、暫停、重復(fù)、取消重復(fù)、停止等基本功能。播放一首歌曲只要用到MediaPlayer這個類就可以輕松的做到了,這個1.1版本主要用到這個類的start()(播放音樂),pause()(暫停音樂),stop()(停止音樂)等方法,具體介紹大家可以查看API,養(yǎng)成查看API的習(xí)慣對我們很有幫助。先創(chuàng)建Android項目MusicPlayerApplicationname:MusicPlayerPackagename :com.android.MusicPlayerCreateActivity:MusicPlayer上代碼:string.xml:viewplaincopytoclipboardprint?<?xmlversion="1.0"encoding="utf-8"?><resources><stringname="hello">MusicPlayer!</string><stringname="app_name">MusicPlayer</string><!--Button--><stringname="button_start">播放</string><stringname="button_stop">停止</string><stringname="button_loop">重復(fù)</string><!--Menu--><stringname="menu_about">關(guān)于</string><stringname="menu_exit">退出</string><stringname="about_message">名稱:音樂播放器\n\n作者:ldj299\n\n郵箱:ldj299@</string><stringname="dialog_yes">確定</string></resources>盡量把要顯示的字符串定義在string.xml中,這樣方便了我們以后對程序的修改main.xml:viewplaincopytoclipboardprint?<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/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"/><!--利用兩個LinearLayout布局嵌套,外面的LinearLayout排列方式為垂直,里面的為水平排列使得三個Button水平排列并與TextView垂直排列--><LinearLayoutxmlns:android="/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/button_start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_start"/><Buttonandroid:id="@+id/button_stop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_stop"/><Buttonandroid:id="@+id/button_loop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_loop"/></LinearLayout></LinearLayout>效果如下:比較簡單的效果,以后會美化的!布局文件完成后接下是在res文件下新建一個raw文件夾并把要播放的音樂復(fù)制到里面去。注意:音樂文件的名稱只能是小寫字母、數(shù)字、下劃線、點。接下來要寫Java文件了:viewplaincopytoclipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150packagecom.android.musicPlayer;importjava.io.IOException;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.content.DialogInterface.OnClickListener;importandroid.os.Bundle;importandroid.media.MediaPlayer;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.Toast;publicclassMusicPlayerextendsActivity{privateMediaPlayerplayer;privateButtonbutton_start;//音樂開始/暫停按鈕privateButtonbutton_stop;//音樂停止按鈕privateButtonbutton_loop;//音樂重復(fù)/取消重復(fù)按鈕/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);init();findView();setListener();}privatevoidinit(){player=MediaPlayer.create(MusicPlayer.this,R.raw.example);/**MediaPlayer可以由create()這個靜態(tài)方法創(chuàng)建可以有三種不同的參數(shù),×我用的是(Contextcontext,Uriuri)*第一個參數(shù)是我們的這個Activity第二個是放入到raw文件夾中的音樂資源*/}privatevoidfindView(){//為每個button都setId是為了按鈕監(jiān)聽時分辨出具體的buttonbutton_start=(Button)findViewById(R.id.button_start);button_start.setId(0);button_stop=(Button)findViewById(R.id.button_stop);button_stop.setId(1);button_loop=(Button)findViewById(R.id.button_loop);button_loop.setId(2);}privatevoidsetListener(){//給每個按鈕綁定事件button_start.setOnClickListener(buttonListener);button_stop.setOnClickListener(buttonListener);button_loop.setOnClickListener(buttonListener);}privateButton.OnClickListenerbuttonListener=newButton.OnClickListener(){@OverridepublicvoidonClick(Viewv){//根據(jù)之前為每個Button設(shè)置的Id值實現(xiàn)對應(yīng)的功能switch(v.getId()){case0:player.start();//按鈕顯示文字與播放暫停功能的互換if(button_start.getText()=="暫停"){button_start.setText("播放");player.pause();}else{button_start.setText("暫停");}break;case1:if(button_start.getText()=="暫停"){button_start.setText("播放");player.pause();}player.stop();try{//必須調(diào)用prepare()方法不然停止之后就不能再重新播放player.prepare();}catch(IllegalStateExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}break;case2:player.setLooping(true);//按鈕顯示文字與功能的互換if(button_loop.getText()=="取消重復(fù)"){button_loop.setText("重復(fù)");player.setLooping(false);}else{button_loop.setText("取消重復(fù)");}if(player.isLooping()==true){Toast.makeText(MusicPlayer.this,"重復(fù)已開啟",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MusicPlayer.this,"重復(fù)已關(guān)閉",Toast.LENGTH_SHORT).show();}break;}}};//按下Menu鍵時會執(zhí)行這個方法publicbooleanonCreateOptionsMenu(Menumenu){//增加兩個選項menu.add(0,0,0,R.string.menu_about);menu.add(0,1,0,R.string.menu_exit);returnsuper.onCreateOptionsMenu(menu);}//選擇Menu中的選項是會執(zhí)行這個方法publicbooleanonOptionsItemSelected(MenuItemitem){super.onOptionsItemSelected(item);switch(item.getItemId()){case0://創(chuàng)建新的DialognewAlertDialog.Builder(MusicPlayer.this).setTitle(R.string.menu_about).setMessage(R.string.about_message).setPositiveButton(R.string.dialog_yes,newOnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){//TODOAuto-generatedmethodstub//不做任何處理}}).show();//要記得這個show方法不然就顯示不出來的break;case1:finish();break;}returntrue;}}這是按下Menu鍵的效果:總結(jié):各種講解都在程序中的注釋中喲,整個程序?qū)懴聛磉€是比較順利,對MediaPlayer這個類也不是很熟悉,通過看API還是了解了一些基本用法,但是也遇到了一些問題,像是按下停止之后,再按播放時就不能播放音樂,最后還是在API中有個對MediaPlayer的各個狀態(tài)的描述圖中知道了從stop狀態(tài)是不能直接到start狀態(tài)的,必須先從stop狀態(tài)到prepare狀態(tài)再到start狀態(tài)。咱不怕遇到問題,因為只有解決了問題、總結(jié)了經(jīng)驗我才能菜鳥蛻變?yōu)榕H说?。呵呵,下一版本是用Service來實現(xiàn)后臺播放的,我馬上就會學(xué)Service,希望大家支持。希望大家多多交流指導(dǎo)我郵箱是:ldj299@。我們下回再見。Android菜鳥做音樂播放器1.2收藏大家好,音樂播放器的1.1版本已經(jīng)完成了,基本的功能還是有的,但是有個問題因為是在Activity中實現(xiàn)音樂播放,所以退出之后音樂就不能播放啦,而我們需要它在后臺也能播放怎么辦呢,那就要用到Service這個類啦!上一個版本的xml文件不要改動,只要改動Java文件和新增一個類,不多說上代碼:MusicPlayer.java:viewplaincopytoclipboardprint?01.packagecom.android.musicPlayer;02.importjava.io.IOException;03.importandroid.app.Activity;04.importandroid.app.AlertDialog;05.importandroid.app.Service;06.importandroid.content.DialogInterface;07.importandroid.content.Intent;08.importandroid.content.DialogInterface.OnClickListener;09.importandroid.os.Bundle;10.importandroid.os.IBinder;11.importandroid.media.MediaPlayer;12.importandroid.view.Menu;13.importandroid.view.MenuItem;14.importandroid.view.View;15.importandroid.widget.Button;16.importandroid.widget.Toast;17.publicclassMusicPlayerextendsActivity{18.19.privateButtonbutton_start;//音樂開始/暫停按鈕20.privateButtonbutton_stop;//音樂停止按鈕21.privateButtonbutton_loop;//音樂重復(fù)/取消重復(fù)按鈕22.23./**Calledwhentheactivityisfirstcreated.*/24.@Override25.publicvoidonCreate(BundlesavedInstanceState){26.super.onCreate(savedInstanceState);27.setContentView(R.layout.main);28.29.findView();30.31.setListener();32.}33.privatevoidfindView(){34.//為每個button都setId是為了按鈕監(jiān)聽時分辨出具體的button35.button_start=(Button)findViewById(R.id.button_start);36.button_start.setId(0);37.button_stop=(Button)findViewById(R.id.button_stop);38.button_stop.setId(1);39.button_loop=(Button)findViewById(R.id.button_loop);40.button_loop.setId(2);41.}42.43.privatevoidsetListener(){44.//給每個按鈕綁定事件45.button_start.setOnClickListener(buttonListener);46.button_stop.setOnClickListener(buttonListener);47.button_loop.setOnClickListener(buttonListener);48.}49.50.privateButton.OnClickListenerbuttonListener=newButton.OnClickListener(){51.@Override52.publicvoidonClick(Viewv){53.//根據(jù)之前為每個Button設(shè)置的Id值實現(xiàn)對應(yīng)的功能54.switch(v.getId()){55.case0:56.//啟動Service;57.Intentintent_start=newIntent(MusicService.PLAY_ACTION);58.intent_start.setClass(MusicPlayer.this,MusicService.class);59.startService(intent_start);60.//按鈕顯示文字與播放與暫停功能的互換61.if(button_start.getText()=="暫停"){62.button_start.setText("播放");63.Intentintent_pause=newIntent(MusicService.PAUSE_ACTION);64.intent_pause.setClass(MusicPlayer.this,MusicService.class);65.startService(intent_pause);66.}else{67.button_start.setText("暫停");68.}69.break;70.case1:71.if(button_start.getText()=="暫停"){72.button_start.setText("播放");73.//player.pause();74.Intentintent_pause=newIntent(MusicService.PAUSE_ACTION);75.intent_pause.setClass(MusicPlayer.this,MusicService.class);76.startService(intent_pause);77.}78.Intentintent_stop=newIntent(MusicService.STOP_ACTION);79.intent_stop.setClass(MusicPlayer.this,MusicService.class);80.startService(intent_stop);81.break;82.case2:83.84.Intentintent_loop=newIntent(MusicService.LOOP_ACTION);85.intent_loop.setClass(MusicPlayer.this,MusicService.class);86.startService(intent_loop);87.88.//按鈕顯示文字與功能的互換89.if(button_loop.getText()=="取消重復(fù)"){90.button_loop.setText("重復(fù)");91.92.Intentintent_notLoop=newIntent(MusicService.NOTLOOP_ACTION);93.intent_notLoop.setClass(MusicPlayer.this,MusicService.class);94.startService(intent_notLoop);95.Toast.makeText(MusicPlayer.this,"重復(fù)已關(guān)閉",Toast.LENGTH_SHORT).show();96.}else{97.button_loop.setText("取消重復(fù)");98.Toast.makeText(MusicPlayer.this,"重復(fù)已開啟",Toast.LENGTH_SHORT).show();99.}100.break;101.}102.}103.};104.105.//按下Menu鍵時會執(zhí)行這個方法106.publicbooleanonCreateOptionsMenu(Menumenu){107.//增加兩個選項108.menu.add(0,0,0,R.string.menu_about);109.menu.add(0,1,0,R.string.menu_exit);110.returnsuper.onCreateOptionsMenu(menu);111.}112.//選擇Menu中的選項是會執(zhí)行這個方法113.publicbooleanonOptionsItemSelected(MenuItemitem){114.super.onOptionsItemSelected(item);115.switch(item.getItemId()){116.case0:117.//創(chuàng)建新的Dialog118.newAlertDialog.Builder(MusicPlayer.this).setTitle(R.string.menu_about).119.setMessage(R.string.about_message).setPositiveButton(R.string.dialog_yes,newOnClickListener(){120.@Override121.publicvoidonClick(DialogInterfacedialog,intwhich){122.}123.}).show();124.break;125.case1:126.finish();127.break;128.}129.returntrue;130.}131.132.}把MusicPlayer.Java中播放音樂的代碼去掉啦,在MusicService.java這個類中實現(xiàn)讓音樂能在后臺播放。MusicService.java:viewplaincopytoclipboardprint?01.packagecom.android.musicPlayer;02.importjava.io.IOException;03.importandroid.app.Service;04.importandroid.content.Intent;05.importandroid.media.MediaPlayer;06.importandroid.os.IBinder;07.importandroid.util.Log;08.importandroid.widget.Toast;09.publicclassMusicServiceextendsService{10.11.12.publicstaticfinalStringTAG="MusicService";13.14.publicstaticfinalStringPLAY_ACTION="com.android.musicPlayer.PLAY_ACTION";15.publicstaticfinalStringPAUSE_ACTION="com.android.musicPlayer.PAUSE_ACTION";16.publicstaticfinalStringSTOP_ACTION="com.android.musicPlayer.STOP_ACTION";17.publicstaticfinalStringLOOP_ACTION="com.android.musicPlayer.LOOP_ACTION";18.publicstaticfinalStringNOTLOOP_ACTION="com.android.musicPlayer.NOTLOOP_ACTION";19.20.privateMediaPlayerplayer;21.22.@Override23.publicIBinderonBind(Intentintent){24.//TODOAuto-generatedmethodstub25.returnnull;26.}27.28.publicvoidonCreate(){29.super.onCreate();30.init();31.//多用Log來輸出信息來了解Service的生命周期32.Log.d(TAG,"onCreate__");33.}34.publicvoidonStart(Intentintent,intstartId){35.super.onStart(intent,startId);36.//將得到的Intent中帶的值賦值給字符串a(chǎn)ction用來判斷應(yīng)該實現(xiàn)什么功能37.Stringaction=intent.getAction();38.if(action.equals(PLAY_ACTION)){39.play();//播放40.}elseif(action.equals(PAUSE_ACTION)){41.pause();//暫停42.}elseif(action.equals(STOP_ACTION)){43.stop();//停止44.}elseif(action.equals(LOOP_ACTION)){45.looping(true);//重復(fù)46.}elseif(ac

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論