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; } }