@Override protected Integer doInBackground(SongItem... list) { // on an independent thread if (list == null || list.length <= 0) { Log.w(TAG, "items null"); } int total = list.length; int count = 0; int downloaded = 0; for (SongItem item : list) { if (isCancelled()) { Log.i(TAG, "download task is canceled, " + (total - count) + " items left"); break; } count++; ArrayList<QueryResult> lrcs = TTDownloader.query(item.getArtist(), item.getTitle()); if (lrcs != null && lrcs.size() > 0) { boolean result = TTDownloader.download(lrcs, item.getLrcPath(), TTDownloader.DOWNLLOAD_SHORTEST_NAME); downloaded = result ? downloaded + 1 : downloaded; } publishProgress(100 * count / total); } Log.d(TAG, "downloaded " + downloaded + " of " + total + " items"); return downloaded; }
// Query for Songs private ArrayList<SongItem> queryForSongs( Uri uri, String[] projection, String selection, String[] args, String sortOrder) { Cursor cur = mCR.query(uri, projection, selection, args, sortOrder); if (cur == null) { return null; } if (!cur.moveToFirst()) { return null; } ArrayList<SongItem> list = new ArrayList<SongItem>(); int idColumn = cur.getColumnIndex(MediaStore.Audio.Media._ID); int titleColumn = cur.getColumnIndex(MediaStore.Audio.Media.TITLE); int artistColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST); int artistIDColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST_ID); int albumColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM); int albumIDColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID); int durationColumn = cur.getColumnIndex(MediaStore.Audio.Media.DURATION); int dataColumn = cur.getColumnIndex(MediaStore.Audio.Media.DATA); do { SongItem si = new SongItem(); si.id = cur.getLong(idColumn); si.title = cur.getString(titleColumn); si.artist = cur.getString(artistColumn); si.artistID = cur.getLong(artistIDColumn); si.album = cur.getString(albumColumn); si.albumID = cur.getLong(albumIDColumn); si.duration = cur.getLong(durationColumn); si.dataStream = cur.getString(dataColumn); list.add(si); } while (cur.moveToNext()); return list; }