MainActivity(主界面)



PS:写这个笔记的的时候,只完成了本地音乐列表的加载。如果需要实现网络的MainActivity,请看后面的笔记。



实现功能

加载本地音乐

Mp3Info.java (vo:value object 值对象,mp3info,set,get方法)

MediaUtils.java(utils 工具类,媒体工具类)

MyMusicListAdapter.java(adapter 适配器,本地音乐列表适配器)

MyMusicListFragment(本地音乐列表”小界面”,顺便推荐一篇文章 -- android之Fragment(官网资料翻译) )

activity_main.xml

my_music_list_layout.xml

item_misic_layout.xml





Mp3Info.java 如下:

package com.iwanghang.drmplayer.vo;/** * Created by iwanghang on 16/4/16. */public class Mp3Info {    private long id;    private String title;//歌名    private String artist;//艺术家    private String album;//专辑    private long albumId;//专辑id    private long duration;//时长    private long size;//大小    private String url;//路径    private int isMusic;//是否为音乐    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getArtist() {        return artist;    }    public void setArtist(String artist) {        this.artist = artist;    }    public String getAlbum() {        return album;    }    public void setAlbum(String album) {        this.album = album;    }    public long getAlbumId() {        return albumId;    }    public void setAlbumId(long albumId) {        this.albumId = albumId;    }    public long getDuration() {        return duration;    }    public void setDuration(long duration) {        this.duration = duration;    }    public long getSize() {        return size;    }    public void setSize(long size) {        this.size = size;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public int getIsMusic() {        return isMusic;    }    public void setIsMusic(int isMusic) {        this.isMusic = isMusic;    }    @Override    public String toString() {        return "Mp3Info{" +                "id=" + id +                ", title='" + title + '\'' +                ", artist='" + artist + '\'' +                ", album='" + album + '\'' +                ", albumId=" + albumId +                ", duration=" + duration +                ", size=" + size +                ", url='" + url + '\'' +                ", isMusic=" + isMusic +                '}';    }}

MediaUtils.java 如下:

package com.iwanghang.drmplayer.utils;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.MediaStore;import com.iwanghang.drmplayer.vo.Mp3Info;import java.util.ArrayList;/** * Created by iwanghang on 16/4/16. */public class MediaUtils {    // 获取专辑封面的Uri    private static final Uri albumArtUri = Uri            .parse("content://media/external/audio/albumart");    /**     * 根据歌曲id查询歌曲信息     */    public static Mp3Info getMp3Info(Context context, long _id){        System.out.println("MediaUtils.java #0 : " + MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);        Cursor cursor = context.getContentResolver().query(                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,                MediaStore.Audio.Media._ID + "=" + _id, null,                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);        Mp3Info mp3Info = null;        if(cursor.moveToNext()){            mp3Info = new Mp3Info();            long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID));//音乐id            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));//音乐标题            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家            String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));//专辑            long albumid = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));//专辑id            long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));//时长            long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));//文件大小            String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));//文件路径            int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐            if(isMusic != 0){                mp3Info.setId(id);                mp3Info.setTitle(title);                mp3Info.setArtist(artist);                mp3Info.setAlbum(album);                mp3Info.setAlbumId(albumid);                mp3Info.setDuration(duration);                mp3Info.setSize(size);                mp3Info.setUrl(url);                System.out.println("MediaUtils.java #101 : title = " + title + " | artist = " + artist + " | duration = " + duration);                System.out.println("MediaUtils.java #102 : id = " + id + " | album = " + album + " | size = " + size);                System.out.println("MediaUtils.java #103 : url = " + url);            }        }        cursor.close();        return mp3Info;    }    /**     * 用于从数据库中查询歌曲的信息,保存在List当中     */    public static long[] getMp3InfoIds(Context context){        Cursor cursor = context.getContentResolver().query(                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                new String[] {MediaStore.Audio.Media._ID},                MediaStore.Audio.Media.DURATION + ">=10000", null,                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);        long[] ids = null;        if(cursor != null){            ids = new long[cursor.getCount()];            for (int i = 0;i getMp3Infos(Context context) {        System.out.println("MediaUtils.java #2 : " + MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);        Cursor cursor = context.getContentResolver().query(                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,                MediaStore.Audio.Media.DURATION + ">=10000", null,                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);        ArrayList mp3Infos = new ArrayList();        System.out.println("MediaUtils.java #3 :cursor.getCount() : " + cursor.getCount());        for (int i = 0; i < cursor.getCount(); i++) {            cursor.moveToNext();            Mp3Info mp3Info = new Mp3Info();            long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID));//音乐id            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));//音乐标题            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家            String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));//专辑            long albumid = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));//专辑id            long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));//时长            long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));//文件大小            String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));//文件路径            int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐            if (isMusic != 0) {                mp3Info.setId(id);                mp3Info.setTitle(title);                mp3Info.setArtist(artist);                mp3Info.setAlbum(album);                mp3Info.setAlbumId(albumid);                mp3Info.setDuration(duration);                mp3Info.setSize(size);                mp3Info.setUrl(url);                mp3Infos.add(mp3Info);                System.out.println("MediaUtils.java #401 : title = " + title + " | artist = " + artist + " | duration = " + duration);                System.out.println("MediaUtils.java #402 : id = " + id + " | album = " + album + " | size = " + size);                System.out.println("MediaUtils.java #403 : url = " + url);                System.out.println("MediaUtils.java #404 : mp3Infos = " + mp3Infos.size());            }        }        cursor.close();        System.out.println("MediaUtils.java #405 : mp3Infos = " + mp3Infos.size());        return mp3Infos;    }    /**     * 格式化时间,将毫秒转换为分:秒格式     */    public static String formatTime(long time){        String min = time / (1000*60) + "";        String sec = time % (1000*60) + "";        if (min.length()<2){            min = "0" + time / (1000*60) + "";        }else {            min = time / (1000*60) + "";        }        if (sec.length() == 4){            sec = "0" + time % (1000*60) + "";        }else if (sec.length() == 3){            sec = "00" + time % (1000*60) + "";        }else if (sec.length() == 2){            sec = "000" + time % (1000*60) + "";        }else if (sec.length() == 1) {            sec = "0000" + time % (1000 * 60) + "";        }        return min + ":" + sec.trim().substring(0,2);    }}

MyMusicListAdapter.java 如下:

package com.iwanghang.drmplayer.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.iwanghang.drmplayer.R;import com.iwanghang.drmplayer.utils.MediaUtils;import com.iwanghang.drmplayer.vo.Mp3Info;import java.util.ArrayList;/** * Created by iwanghang on 16/4/16. */public class MyMusicListAdapter extends BaseAdapter{    private Context ctx;    private ArrayList mp3Infos;    public MyMusicListAdapter(Context ctx, ArrayList mp3Infos){        this.ctx = ctx;        this.mp3Infos = mp3Infos;        System.out.println("MyMusicListAdapter.java #0 : ctx = " + ctx + ",mp3Infos = " + mp3Infos.size());    }    public ArrayList getMp3Infos() {        System.out.println("MyMusicListAdapter.java #1 : public ArrayList getMp3Infos() {");        return mp3Infos;    }    public void setMp3Infos(ArrayList mp3Infos) {        System.out.println("MyMusicListAdapter.java #2 : public void setMp3Infos(ArrayList mp3Infos) {");        this.mp3Infos = mp3Infos;    }    @Override    public int getCount() {        System.out.println("MyMusicListAdapter.java #3 : public int getCount() {" + mp3Infos.size());        //return mp3Infos.size();        return mp3Infos.size();    }    @Override    public Object getItem(int position) {        System.out.println("MyMusicListAdapter.java #4 : public Object getItem(int position) {");        return mp3Infos.get(position);    }    @Override    public long getItemId(int position) {        System.out.println("MyMusicListAdapter.java #5 : public long getItemId(int position) {");        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        System.out.println("MyMusicListAdapter.java #6 : public View getView ");        ViewHolder vh;        if(convertView==null){            convertView = LayoutInflater.from(ctx).inflate(R.layout.item_music_list,null);            vh = new ViewHolder();            vh.textView1_title = (TextView) convertView.findViewById(R.id.textView1_title);            vh.textView2_singer = (TextView) convertView.findViewById(R.id.textView2_singer);            vh.textView3_time = (TextView) convertView.findViewById(R.id.textView3_time);            System.out.println("MyMusicListAdapter.java #7 : textView1_title = " + vh.textView1_title);            convertView.setTag(vh);        }        vh = (ViewHolder) convertView.getTag();        Mp3Info mp3Info = mp3Infos.get(position);        vh.textView1_title.setText(mp3Info.getTitle());        vh.textView2_singer.setText(mp3Info.getArtist());        vh.textView3_time.setText(MediaUtils.formatTime(mp3Info.getDuration()));        return convertView;    }    static class ViewHolder{        TextView textView1_title;        TextView textView2_singer;        TextView textView3_time;    }}//inflate(R.layout.item_music_list,null);

MyMusicListFragment 如下:

package com.iwanghang.drmplayer;import android.content.Context;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.iwanghang.drmplayer.adapter.MyMusicListAdapter;import com.iwanghang.drmplayer.utils.MediaUtils;import com.iwanghang.drmplayer.vo.Mp3Info;import java.util.ArrayList;/** * Created by iwanghang on 16/4/16. */public class MyMusicListFragment extends Fragment {    private ListView listView_my_music;    private ArrayList mp3Infos;    private MyMusicListAdapter myMusicListAdapter;    private MainActivity mainActivity;    @Override    public void onAttach(Context context) {        super.onAttach(context);        mainActivity = (MainActivity) context;    }    public static MyMusicListFragment newInstance() {        MyMusicListFragment my = new MyMusicListFragment();        return my;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.my_music_list_layout,null);        listView_my_music = (ListView) view.findViewById(R.id.listView_my_music);        loadData();        return view;//        return listView_my_music;    }    /**     * 加载本地音乐列表     */    private void loadData(){        mp3Infos = MediaUtils.getMp3Infos(mainActivity);        myMusicListAdapter = new MyMusicListAdapter(mainActivity,mp3Infos);        listView_my_music.setAdapter(myMusicListAdapter);    }    public ListView getListView_my_music() {        return listView_my_music;    }    public ArrayList getMp3Infos() {        return mp3Infos;    }    public MyMusicListAdapter getMyMusicListAdapter() {        return myMusicListAdapter;    }    public MainActivity getMainActivity() {        return mainActivity;    }}

activity_main.xml 如下:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

my_music_list_layout.xml 如下:

<?xml version="1.0" encoding="utf-8"?>                                                                                                    

item_misic_layout.xml 如下:

<?xml version="1.0" encoding="utf-8"?>                                


更多相关文章

  1. android EditText设置不可写
  2. Android(安卓)Activity的启动
  3. APP开发实战94-Vector静态图的使用
  4. Android(安卓)开发中的倒计时
  5. Gradle多渠道打包
  6. [APP] Android(安卓)开发笔记 006-使用短信验证SDK进行短信验证
  7. Android(安卓)5.x特性概览二
  8. android listview custom style 自定义样式
  9. Android读取Excel文件

随机推荐

  1. 49.Android中各种Span的用法
  2. android中常见的二种数据解析方法----XML
  3. Android实用代码
  4. Android SDK Manager无法更新解决方法
  5. Android常用网站
  6. Android屏蔽返回键
  7. android 技术大牛 BLOG
  8. Android Studio提升编译速度
  9. Android拨号键盘声音源码位置
  10. 一起Talk Android吧(第二百五十九回:Androi