android操作sdcard中的多媒体文件(二)——音乐列表的更新
android操作sdcard中的多媒体文件(二)——音乐列表的更新
在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除、增加一些多媒体文件,如何让播放列表也更新呢,这里我分享一下自己在项目中的一些解决方法,希望对大家有所帮助。
private
void
scanSdCard(){
IntentFilter intentfilter =
new
IntentFilter( Intent.ACTION_MEDIA_SCANNER_STARTED);
intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentfilter.addDataScheme(
"file"
);
scanSdReceiver =
new
ScanSdReceiver();
registerReceiver(scanSdReceiver, intentfilter);
sendBroadcast(
new
Intent(Intent.ACTION_MEDIA_MOUNTED,
|
public
class
ScanSdReceiver extends BroadcastReceiver {
private
AlertDialog.Builder builder =
null
;
private
AlertDialog ad =
null
;
private
int
count1;
private
int
count2;
private
int
count;
@Override
public
void
onReceive(Context context, Intent intent) {
String action = intent.getAction();
if
(Intent.ACTION_MEDIA_SCANNER_STARTED.
equals
(action)){
Cursor c1 = context.getContentResolver()
.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new
String[]{MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME },
null
,
null
,
null
);
count1 = c1.getCount();
System.
out
.println(
"count:"
+count);
builder =
new
AlertDialog.Builder(context);
builder.setMessage(
"正在扫描存储卡..."
);
ad = builder.create();
ad.show();
}
else
if
(Intent.ACTION_MEDIA_SCANNER_FINISHED.
equals
(action)){
Cursor c2 = context.getContentResolver()
.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new
String[]{MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME },
null
,
null
,
null
);
count2 = c2.getCount();
count = count2-count1;
ad.cancel();
if
(count>=0){
Toast.makeText(context,
"共增加"
+
count +
"首歌曲"
, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(context,
"共减少"
+
count +
"首歌曲"
, Toast.LENGTH_LONG).show();
}
}
}
}
|
private
void
deleteMusic(
int
position){
this
.getContentResolver().delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Media._ID +
"="
+ _ids[position],
null
);
}
|
private
void
deleteMusicFile(
int
position){
File file =
new
File(_path[position]);
file.delete();
}
|