android 加载本地音乐文件,android 音樂播放器 本地音樂文件

博主因不满现有音乐播放器,决定自己动手开发一个简单音乐播放器,主要功能是本地音乐播放。通过遍历Android的媒体库获取音乐文件信息,创建MusicBean类存储音乐路径、显示名和大小。使用游标操作数据库,过滤掉长度小于20w字节的音乐文件。最后通过ListView展示音乐列表,实现了本地音乐文件的加载和展示。
摘要由CSDN通过智能技术生成

本來沒打算寫音樂播放器的,可是由於天天動聽要停服了,而且又不喜歡酷狗等音樂播放器,因為太占用內存了,而且有些要收費的歌曲還沒有幫我們過濾去(個人看法,勿噴)

所以就開始寫一個簡單的音樂播放器,當然,第一個想到的功能是本地音樂文件,所以就從這方面先下手了。

====================================================================

首先,要了解一下,Android手機的音樂文件都是放在一個數據庫的,很多用過以前那些舊播放器的大大們肯定都看到過“媒體庫”這個名詞,這個媒體庫就是一個數據庫,存放着我們想要的音樂。所以我們可以在這方面下手,而不是跟別人說的“遍歷內存卡”。

步驟比較簡單,由於要存放音樂,肯定要構建一個bean來存放你音樂的信息,由於需求暫時比較簡單,所以我只制定了三個,分別是音樂路徑,音樂顯示名,音樂大小

構建的類如下:

public class MusicBean { private String MusicName; private String MusicPath; private String MusicLenght; public String getMusicLenght() { return MusicLenght; } public void setMusicLenght(String musicLenght) { MusicLenght = musicLenght; } public void setMusicName(String musicName) { MusicName = musicName; } public void setMusicPath(String musicPath) { MusicPath = musicPath; } public String getMusicName() { return MusicName; } public String getMusicPath() { return MusicPath; }}

構建好我們的載體后,就要開始要數據了,既然是對數據庫操作,那么肯定要用到我們常用到的游標操作,所以我們需要用到cursor,直接上代碼

private List getlist() { Cursor cursor; MusicBean musicBean = new MusicBean(); List list = new ArrayList<>(); cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); while (cursor.moveToNext()) { musicBean = new MusicBean(); musicBean.setMusicName(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME))); musicBean.setMusicPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA))); musicBean.setMusicLenght(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))); int i = Integer.parseInt(musicBean.getMusicLenght().toString());if (i>200000) list.add(musicBean); Toast.makeText(MusicListActivity.this, list.size() + "", Toast.LENGTH_SHORT).show(); } return list;可

可以看出,這個方法調用了數據庫,而且各個方法的英文都比較簡單,就不解釋了,注意,這兒返回的都是string類型,所以請不要使用int等去代替,而返回的list就是我們需要的數據的集合了,這時候就可以對這些數據操作,細心的朋友應該可以看到我在操作中,將字節數<20w的音樂文件刪除了,這是用為有時候會留下一些瑣碎的音樂文件,比如瀏覽網頁時候留下的,或則鈴聲之類的,獲得數據后,可以使用listview來哦包裝下我們的音樂,我直接上adapter的內容吧

@Override public View getView(int position, View convertView, ViewGroup parent) { convertView= LayoutInflater.from(context).inflate(R.layout.adapter_musiclist,null); TextView textView= (TextView) convertView.findViewById(R.id.textView); textView.setText(list.get(position).getMusicName()); return convertView; }

比較簡單,所以直接使用view就可以了,然后記得加下權限(以前在eclipse 不用,現在在Androidstudio卻要,我也搞不懂)

要的權限是讀取內存卡的權限,不加的會錯誤

到最后上下效果圖

32b0cbdc50df9dfd126c5e10c27f9755.png

效果比較簡單,請不要笑我,項目已經上傳到我的資源里面,只有本地音樂文件這個功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值