我的播放器的
播放列表没有放在android自带的控件里面,而是放在了自己开发的表格里面,只要把表格加以修饰,可以达到自己想要的效果。本人的播放列表只是从SD卡中获取歌曲的信息(编号,歌曲名称,播放时间),然后放在表格中(一般播放器中的添加删除歌曲,最近播放列表等功能暂且没有做),表格里的内容是从一个二维数组里获取的,因此首先需要得到一个存放歌曲信息的二维数组,数组中包括。
这里开发一个PlayerUtil的工具类,代码如下:
class PlayerUtil {
static PlayerActivity activity=new PlayerActivity();
//把文件名称放在列表里面的方法
public static ArrayList<String> musicList(ContentResolver cr,Cursor cursor)
{
ArrayList<String> resultList=new ArrayList<String>();
cursor=cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
if(cursor==null)
{
return resultList;
}
else{
while(cursor.moveToNext())
{
String musicName=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
resultList.add(musicName);
}
return resultList;
}
}
//把歌曲时间放在列表里面的方法
public static ArrayList<String> musicTimeList(ContentResolver cr,Cursor cursor)
{
ArrayList<String> resultList=new ArrayList<String>();
cursor=cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
if(cursor==null)
{
return resultList;
}
else{
while(cursor.moveToNext())
{
String musicName=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
resultList.add(musicName);
}
return resultList;
}
}
//把放在arraylist中的歌名放进二维数组中的方法
public static String[][] musicString(ContentResolver cr,Cursor cursor)
{
ArrayList<String> musicName=new ArrayList<String>();
ArrayList<String> musicTime=new ArrayList<String>();
musicName=musicList(cr,cursor);//歌曲名字
musicTime=musicTimeList(cr,cursor);//歌曲时间
String[][]result=new String[musicName.size()][];
if(musicName.size()==0)
{
return result;
}
else
{
for(int i=0;i<musicName.size();i++)
{
String[]tempCol=new String[3];
tempCol[0]=(i+1)+"";
//歌曲名称
tempCol[1]=musicName.get(i);
if(tempCol[1].length()>11)
{
tempCol[1]=tempCol[1].substring(0,11)+"...";
}
//歌曲时间
if((Integer.parseInt(musicTime.get(i).trim())/1000)%60<10)
{
tempCol[2]=Integer.parseInt(musicTime.get(i).trim())/1000/60+":"+"0"+(Integer.parseInt(musicTime.get(i).trim())/1000)%60;
}
else{
tempCol[2]=Integer.parseInt(musicTime.get(i).trim())/1000/60+":"+(Integer.parseInt(musicTime.get(i).trim())/1000)%60;
}
result[i]=tempCol;
}
return result;
}
}
}