package org.kymjs.music.service;
import org.kymjs.kjframe.KJDB;
import org.kymjs.kjframe.utils.KJLoger;
import org.kymjs.music.Config;
import org.kymjs.music.bean.Music;
import org.kymjs.music.utils.StringUtils;
import android.app.IntentService;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.provider.MediaStore;
/**
* 从本地媒体库扫描音乐并加入数据库
*
* @author kymjs
*/
public class ScanMusic extends IntentService {
private int count;
public ScanMusic() {
super("org.kymjs.music.service.ScanMusic");
}
@Override
protected void onHandleIntent(Intent intent) {
boolean result = false;
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
null);
if (cursor == null) {
result = false;
} else {
KJDB db = KJDB.create(this, Config.DB_NAME, Config.isDebug);
db.deleteByWhere(Music.class, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
.moveToNext()) {
// String id = cursor.getString(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 path = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA));
String size = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.SIZE));
if (StringUtils.toInt(size, 0) > 700 * 1024) {
Music music = new Music();
music.setTitle(title);
music.setArtist(artist);
music.setPath(path);
music.setSize(size);
music.setCollect(0);
music.setDecode("");
music.setEncode("");
music.setLrcId("");
db.save(music);
count++;
KJLoger.debug("找到音乐:" + music.getTitle());
}
}
result = true;
Config.changeMusicInfo = true;
Config.changeCollectInfo = true;
cursor.close();
}
// 发送扫描成功或失败的广播
Intent musicScan = new Intent();
String action = result ? Config.RECEIVER_UPDATE_MUSIC_LIST
: Config.RECEIVER_MUSIC_SCAN_FAIL;
musicScan.setAction(action);
musicScan.putExtra(Config.SCAN_MUSIC_COUNT, count);
sendBroadcast(musicScan);
}
}