Android音樂播放器制作 點(diǎn)擊歌曲實(shí)現(xiàn)播放(二)
上次我們實(shí)現(xiàn)了把手機(jī)里的音頻掃描到,然后放在list集合里面,用ListView展示在手機(jī)界面上,如果沒有看過的可以去看看本人的博客:Android音樂播放器制作(一)掃描本地音樂顯示在手機(jī)上
這次是在上一次的基礎(chǔ)上直接繼續(xù)寫代碼,幾行代碼實(shí)現(xiàn)點(diǎn)擊那首歌曲就播放那首歌曲,系統(tǒng)已經(jīng)提供了播放音頻的對(duì)象了,直接用就可以了,具體如下:
1、聲明一個(gè)MediaPlayer
private MediaPlayer mediaPlayer;//播放音頻的
2、實(shí)例化
//初始化 mediaPlayer = new MediaPlayer();
然后我們就有一個(gè)MediaPlayer的對(duì)象可以使用了
3、在initView方法里面給ListView設(shè)置一個(gè)點(diǎn)擊監(jiān)聽事件,點(diǎn)擊哪個(gè)item我們就可以得到這個(gè)item的歌曲地址,然后穿入我們創(chuàng)建的播放音頻的方法中實(shí)現(xiàn)播放:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //創(chuàng)建一個(gè)播放音頻的方法,把點(diǎn)擊到的地址傳過去 //list.get(i).path這個(gè)就是歌曲的地址 play(list.get(i).path); } });
然后play方法的代碼:
/** * 播放音頻的方法 */ private void play(String path) { //播放之前要先把音頻文件重置 try { mediaPlayer.reset(); //調(diào)用方法傳進(jìn)去要播放的音頻路徑 mediaPlayer.setDataSource(path); //異步準(zhǔn)備音頻資源 mediaPlayer.prepareAsync(); //調(diào)用mediaPlayer的監(jiān)聽方法,音頻準(zhǔn)備完畢會(huì)響應(yīng)此方法 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start();//開始音頻 } }); } catch (IOException e) { e.printStackTrace(); } }
play方法里面我們調(diào)用的是mediaPlayer的異步準(zhǔn)備的方法,因?yàn)楫?dāng)歌曲很大的時(shí)候,如果不是用異步準(zhǔn)備,而是直接準(zhǔn)備播放的話,就會(huì)造成播放卡頓;然后就在mediaPlayer的準(zhǔn)備完畢的監(jiān)聽方法中調(diào)用start()中開始。
持續(xù)更新
demo下載地址:音樂播放器
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 7.0 SEAndroid app權(quán)限配置方法
今天小編就為大家分享一篇Android 7.0 SEAndroid app權(quán)限配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(十)
這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果的第十篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了Android CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android實(shí)現(xiàn)Gesture手勢(shì)識(shí)別用法分析
這篇文章主要介紹了Android實(shí)現(xiàn)Gesture手勢(shì)識(shí)別用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android基于Gesture實(shí)現(xiàn)手勢(shì)識(shí)別的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-09-09Android基于Sqlite實(shí)現(xiàn)注冊(cè)和登錄功能
這篇文章主要為大家詳細(xì)介紹了Android基于Sqlite實(shí)現(xiàn)注冊(cè)和登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法(Http?Server)
這篇文章主要介紹了Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法,包括資源的配置,資源的下載和存儲(chǔ),版本的管理,如何根據(jù)實(shí)際url獲取對(duì)應(yīng)HttpServer?bind的url等,需要的朋友可以參考下2022-05-05使用RecyclerView實(shí)現(xiàn)Item點(diǎn)擊事件
這篇文章主要介紹了使用RecyclerView實(shí)現(xiàn)Item點(diǎn)擊事件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Android中模仿抖音加載框之兩顆小球轉(zhuǎn)動(dòng)效果
這篇文章主要介紹了Android仿抖音加載框之兩顆小球轉(zhuǎn)動(dòng)控件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09