package me.wcy.music.utils;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.text.TextUtils;
import java.util.List;
import me.wcy.music.R;
import me.wcy.music.model.Music;
/**
* 歌曲工具类
* Created by wcy on 2015/11/27.
*/
public class MusicUtils {
/**
* 扫描歌曲
*/
public static void scanMusic(Context context, List<Music> musicList) {
musicList.clear();
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
if (cursor == null) {
return;
}
while (cursor.moveToNext()) {
// 是否为音乐,魅族手机上始终为0
int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
if (!SystemUtils.isFlyme() && isMusic == 0) {
continue;
}
long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
String title = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String unknown = context.getString(R.string.unknown);
artist = (TextUtils.isEmpty(artist) || artist.toLowerCase().contains("unknown")) ? unknown : artist;
String album = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
long albumId = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
String coverPath = getCoverPath(context, albumId);
String fileName = cursor.getString((cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
long fileSize = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
Music music = new Music();
music.setId(id);
music.setType(Music.Type.LOCAL);
music.setTitle(title);
music.setArtist(artist);
music.setAlbum(album);
music.setDuration(duration);
music.setPath(path);
music.setCoverPath(coverPath);
music.setFileName(fileName);
music.setFileSize(fileSize);
CoverLoader.getInstance().loadThumbnail(music);
musicList.add(music);
}
cursor.close();
}
private static String getCoverPath(Context context, long albumId) {
String path = null;
Cursor cursor = context.getContentResolver().query(
Uri.parse("content://media/external/audio/albums/" + albumId),
new String[]{"album_art"}, null, null, null);
if (cursor != null) {
if (cursor.moveToNext() && cursor.getColumnCount() > 0) {
path = cursor.getString(0);
}
cursor.close();
}
return path;
}
}