freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

mp3播放器項(xiàng)目實(shí)踐(參考版)

2025-07-31 08:55本頁(yè)面
  

【正文】 b、調(diào)用prepareToPlay()方法,產(chǎn)生UpdateLrc對(duì)象update,同 時(shí)(或者隔5毫秒)開(kāi)始執(zhí)行update對(duì)象的run()方法(利用 Handler的postDelayed()方法)。⑤ 在prepareToPlay()方法中創(chuàng)建一個(gè)UpdateLrc對(duì)象,以便在三個(gè)按鈕的事件監(jiān)聽(tīng)器中調(diào)用prepareToPlay()方法的自動(dòng)時(shí)候創(chuàng)建一個(gè)UpdateLrc對(duì)象。④ 總體分析:要實(shí)現(xiàn)程序自動(dòng)循環(huán)不斷的執(zhí)行某個(gè)過(guò)程,就需要Handler的postDelayed()方法與Runnable的run()方法聯(lián)合使用。因此需要完成以下功能:① 讀取選中Mp3文件的LRC文件的字節(jié)流,并用LrcProcesser進(jìn)行處理得到時(shí)間隊(duì)列timeMills和歌詞隊(duì)列messages。 return timeMill。 int mill=(ss[1])。 String ss[]=s[1].split(\\.)。 String s[]=(:)。 } return queues。 ()。 } } (timeMills)。 queueMsg=+(10)+\n。 String timeStr=()。 if(()){ (timeMill)。 Pattern p=(\\[([^\\]]+)\\])。 Long timeMill=null。 } catch (UnsupportedEncodingException e1) { // TODO Autogenerated catch block ()。 BufferedReader br = null。 QueueString messages=new LinkedListString()。import .*。LrcProcesser類的代碼如下:import .*。④ 如果某行中不存在[],則將該行的內(nèi)容追加到上一次的message中。)從而,歌詞同步的實(shí)現(xiàn)需要用程序設(shè)計(jì)來(lái)得到以下三個(gè)元素: ① 統(tǒng)計(jì)Mp3總共播放了多長(zhǎng)時(shí)間(為方便比較,以Long型來(lái)計(jì)算時(shí)間)② 由LRC文件中的內(nèi)容得到每個(gè)[]中的時(shí)間(將其都轉(zhuǎn)換為L(zhǎng)ong型)③ 由LRC文件中的內(nèi)容得到每個(gè)[]中的時(shí)間對(duì)應(yīng)的每句(行)歌詞(String 類型)歌詞同步顯示的實(shí)現(xiàn): 創(chuàng)建LrcProcesser類。為此,新建一個(gè)接口AppConstant,在接口中創(chuàng)建的PlayMsg類中定義三個(gè)Msg,表示按下不同按鈕時(shí)需要傳遞的不同值 ,以及在三個(gè)按鈕事件監(jiān)聽(tīng)器中對(duì)intent設(shè)置不同的putExtra值,并啟動(dòng)PlayerService實(shí)現(xiàn)歌詞同步功能的邏輯分析:目的:實(shí)現(xiàn)歌詞同步歌詞同步實(shí)現(xiàn)的過(guò)程:LRC文件中的每句(行)歌詞在其[]中的對(duì)應(yīng)時(shí)間點(diǎn)開(kāi)始進(jìn)行顯示,在下一個(gè)[]中的對(duì)應(yīng)時(shí)間結(jié)束顯示。 return Uri。 } } } public String getUri(Mp3Info mp3Info){ String sdPath=().getAbsolutePath()。 isStop=true。 isPause=false。 isPause=true。 isStop=false。 isPlay=true。 (false)。 return (intent, flags, startId)。 } else if(msg==){ stop()。 if(msg==){ play()。 } Override public int onStartCommand(Intent intent, int flags, int startId) { localmp3Info=(Mp3Info) (localmp3Info)。 private MediaPlayer mediaPlayer。 private boolean isPause=false。 private int msg。public class PlayerService extends Service{ private Button play,pause,stop。import .*。import 。import 。import 。import .*。功能實(shí)現(xiàn):新建PlayerService類,繼承Service,通過(guò)intent接收PlayerActivity中按下不同按鈕的Msg,分別調(diào)用play(),pause(),stop()方法。 } return localMp3Infos。 (files[i+1].length()+)。 (files[i].length()+)。 i=i+2) { Mp3Info localmp3Info=new Mp3Info()。 for (int i = 0。 File file=new File(SDPATH++dirName)。下載:(lrcUrlStr,Mp3/, ())。實(shí)現(xiàn)歌詞同步播放的功能。 }}注意點(diǎn):注意在三個(gè)按鈕事件中,不能直接調(diào)用mediaPlayer的對(duì)應(yīng)方法,而應(yīng)該先判斷現(xiàn)在的Mp3播放狀態(tài)是怎么樣的,為此設(shè)計(jì)三個(gè)boolean變量來(lái)進(jìn)行邏輯判斷。 String Uri=sdPath++Mp3/++()。 isPlay=false。 } } } } } class stopListener implements OnClickListener{ public void onClick(View arg0) { if(mediaPlayer!=null){ if(isPlay){ ()。 }else{ ()。 } } } class pauseListener implements OnClickListener{ public void onClick(View arg0) { if(mediaPlayer!=null){ if(isPlay){ if(!isPause){ ()。 isPause=false。 ()。 } class startListener implements OnClickListener{ public void onClick(View arg0) { if(!isPlay){ mediaPlayer=(this, (getUri(localmp3Info)))。 (new pauseListener())。 stop=(Button)()。 start=(Button)()。 (savedInstanceState)。 Override protected void onCreate(Bundle savedInstanceState) { Intent intent=getIntent()。 private boolean isStop=false。 private boolean isPlay=false。public class PlayerActivity extends Activity{ private Button start,pause,stop。import 。import 。import 。import 。import 。 startActivity(intent)。 (localmp3Info, localmp3Info)。代碼如下:protected void onListItemClick(ListView l, View v, int position, long id) { if(localMp3Infos!=null){ Mp3Info localmp3Info=(position)。 ()。 setListAdapter(simple)。 (localmp3)。 (mp3_name, ())。) { Mp3Info localmp3Info=(Mp3Info) ()。 for (Iterator iterator = ()。 localMp3Infos=(Mp3/)。 } private void updateListView(){ SdcardWrite sdcardRead=new SdcardWrite()。public class LocalMp3ListActivity extends ListActivity{ Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。import .*。import 。 }創(chuàng)建LocalMp3ListActivity類,顯示sdcard中“Mp3/”文件夾中的所有Mp3文件:()import .*。 (localmp3Info)。 (files[i].getName())。 i 。 File[] files=()。 } }在SdcardWrite類中寫(xiě)入新的方法getLocalMp3Info()以讀取sdcard中制定路徑下的所有文件:public ListMp3Info getLocalMp3Info(String dirName){ ListMp3Info localMp3Infos=new ArrayListMp3Info()。 (intent)。 Resources res=getResources()。 Intent intent=new Intent()。 } private void gettabHost(Class intentClass,String SpecName,int SpecIcon){ TabHost tabHost=getTabHost()。 gettabHost(, Remote, )。public class MainActivity extends TabActivity{ Override protected void onCreate(Bundle savedInstanceState) { (savedInstanceState)。import 。import .*。功能實(shí)現(xiàn) 創(chuàng)建MainActivity類,()。 } }第三集:實(shí)現(xiàn)點(diǎn)擊主頁(yè)面顯示一個(gè)TabActivity類型的Activity,如下所示:點(diǎn)擊Remote時(shí),以listview的形式顯示服務(wù)器端所有的Mp3文件,當(dāng)點(diǎn)擊Local時(shí),以listview的形式顯示sdcard上已經(jīng)成功下載到的Mp3文件。 startService(intent)。 (mp3info, mp3info)。 } Override protected void onListItemClick(ListView l, View v, int position, long id) { Mp3Info mp3info=(position)。 } catch (IOException e) { // TODO Autogenerated catch block ()。 } catch (SAXException e) { // TODO Autogenerated catch block ()。 (mp3listhandler)。 infos=new ArrayListMp3Info()。 ListMp3Info infos = null。 } private ListMp3Info parse(String xmlStr){ SAXParserFactory factory = ()。 String result=(urlStr)。 } else if(()==ABOUT){ //點(diǎn)擊關(guān)于 } return (item)。 setListAdapter(simple)。 mp3infos=parse(xml)。 return simple。 (mp3)。 (mp3_name, ())。){ Mp3Info mp3Info=(Mp3Info) ()。 for(Iterator iterator=()。 return (menu)。 } Override public boolean onCreateOptionsMenu(Menu menu) { (0, UPDATE, 1, )。 setContentView()。 private
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1