安卓實現讀取手機記憶體中的所有音樂

來源:互聯網
上載者:User

標籤:public   適配器   cursor   音樂   

讀取手機記憶體中的音樂資訊需要做如下幾步:

1)建立一個XML檔案,存放擷取到的資訊,使用ListView控制項

2)建立一個新的XML檔案,對LIstView中的item對象進行布局

3)需要建立一個Music類用於存放需要擷取的Music的主要資訊

4)需要建立一個協助類,用於擷取手機中的音樂資訊,並通過一個集合類傳遞擷取到的資訊

5)建立一個自訂配接器,用於載入ListView的每個子Item

6)實現對資料的載入,並返回到使用者介面

   主要的代碼實現如下:

一、協助類別模組

public ArrayList<Object> getMusic(Context context) {  arrayList = new ArrayList<Object>();  resolver = context.getContentResolver();  cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,    null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  if (cursor != null) {   while (cursor.moveToNext()) {    musicInfo = new MusicInfo();    musicInfo.setSinger_Name(cursor.getString(cursor      .getColumnIndex(MediaStore.Audio.Media.ARTIST)));// 歌手名    musicInfo.setSong_Name(cursor.getString(cursor      .getColumnIndex(MediaStore.Audio.Media.TITLE)));// 歌曲名    musicInfo.setSong_size(FormatChange.formatSize(cursor      .getInt(cursor        .getColumnIndex(MediaStore.Audio.Media.SIZE))));// 歌曲的大小    musicInfo      .setSong_time(FormatChange.toTime(cursor.getInt(cursor        .getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))));// 歌曲時間    musicInfo.setUrl(cursor.getString(cursor      .getColumnIndex(MediaStore.Audio.Media.DATA)));    arrayList.add(musicInfo);   }  }    cursor.close();  return arrayList; }

我是用普通方法做的,也可以使用靜態實現。

二、適配器模組

private ArrayList<Object> arrayList; private Context context; private TextView music_singer,music_name,music_size; private MusicInfo musicInfo; public Music_adapter(Context context,ArrayList<Object> arrayList){  this.context=context;  this.arrayList=arrayList; } @Override public int getCount() {  return arrayList.size(); } @Override public Object getItem(int position) {  return arrayList.get(position); } @Override public long getItemId(int id) {  return id; } @Override public View getView(int position, View view, ViewGroup arg2) {  if (view==null) {   view=LayoutInflater.from(context).inflate(R.layout.music_format,null);  }    music_name=(TextView) view.findViewById(R.id.music_name);  music_singer=(TextView) view.findViewById(R.id.music_singer);  music_size=(TextView) view.findViewById(R.id.music_size);  musicInfo=(MusicInfo) arrayList.get(position);  music_name.setText(musicInfo.getSong_Name());  music_singer.setText(musicInfo.getSinger_Name()+"|"+musicInfo.getSong_time());  music_size.setText(musicInfo.getSong_size()); //這裡一定需要轉換成字串類型的   return view; }

到這裡就基本實現了讀取歌曲資訊的功能了,只要在主介面設定適配器就可以了。

安卓實現讀取手機記憶體中的所有音樂

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.