android 扫描SD卡与系统文件
来源:互联网 发布:网络信息安全工作方案 编辑:程序博客网 时间:2024/04/30 09:24
当手机或模拟器开机时,会调用android的MediaScanner,扫描sd卡和内存里的文件。以下是log信息。
1
12
-
13
15
:
39
:
11.062
: VERBOSE/MediaPlayerService(
67
): Create
new
media retriever from pid
349
<BR>
1
12
-
13
15
:
39
:
11.082
: DEBUG/MediaScannerService(
349
): getDefaultLocale =zh_CN
1
12
-
13
15
:
39
:
11.122
: DEBUG/SurfaceFlinger(
102
): Layer::requestBuffer(
this
=
0x7c8c68
), index=
1
, pid=
12866
, w=
309
, h=
192
success
1
12
-
13
15
:
39
:
11.142
: INFO/MediaScanner(
349
): mOriginalCount =
14
, prune thumb flag =
false
<BR>
1
12
-
13
15
:
39
:
11.142
: DEBUG/MediaScanner(
349
): prescan time: 44ms<BR>
1
12
-
13
15
:
39
:
11.142
: DEBUG/MediaScanner(
349
): scan time: 13ms<BR>
1
12
-
13
15
:
39
:
11.142
: DEBUG/MediaScanner(
349
): postscan time: 2ms<BR>
1
12
-
13
15
:
39
:
11.142
: DEBUG/MediaScanner(
349
): total time: 59ms<BR>
1
12
-
13
15
:
39
:
11.152
: DEBUG/MediaProvider(
349
): un-lock thumbnail worker<BR>
1
12
-
13
15
:
39
:
11.152
: DEBUG/MediaProvider(
349
): un-lock thumbnail worker<BR>
1
12
-
13
15
:
39
:
11.182
: DEBUG/MediaScannerService(
349
): done scanning volume external
1
那么扫描后的记录它保存到哪里了呢。哈。你觉得在哪里呢?data/data/com.android.media/providers/databases/external
1
它存了些什么信息呢,拉出来看看吧:
1
那么,我们直接使用ContentProvider就可以直接获取到sd卡中多媒体的信息了,你还用去listfile么?还用去自己解析媒体文件中的信息么(时长,文件名,专辑名。。应有尽有哦)?
1
Cursor cursor = context.getContentResolver().query(<BR> MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,<BR>
new
String[] { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.TITLE,<BR> MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM,<BR> MediaStore.Audio.Media.YEAR, MediaStore.Audio.Media.MIME_TYPE, MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.DATA}<BR> ,
"_size>?"
,
new
String[]{
1024
*
1024
+
""
},
null
);
1
好了,最后一个问题<BR> 当你往sd卡中添加一些多媒体文件的时候,android没有自动将它刷新到数据库中。那么我们怎么让它手动刷新呢,如下:
01
IntentFilter intentFilter =
new
IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
02
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
03
intentFilter.addDataScheme(
"file"
);
04
scanReceiver =
new
ScanSdFilesReceiver();
05
registerReceiver(scanReceiver, intentFilter);
06
sendBroadcast(
new
Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(
"file://"
+ Environment.getExternalStorageDirectory())));
07
08
09
private
class
ScanSdFilesReceiver
extends
BroadcastReceiver {
10
public
void
onReceive(Context context, Intent intent) {
11
String action = intent.getAction();
12
if
(Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)) {
13
scanHandler.sendEmptyMessage(STARTED);
14
}
15
if
(Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {
16
scanHandler.sendEmptyMessage(FINISHED);
17
}
18
}
19
}
20
21
22
private
Handler scanHandler =
new
Handler() {
23
public
void
handleMessage(Message msg) {
24
super
.handleMessage(msg);
25
switch
(msg.what) {
26
case
STARTED:
27
MyDialog scanDialog =
new
MyDialog(LocalList.
this
);
28
scanAlertDialog = scanDialog.scanFile();
29
scanAlertDialog.show();
30
Log.i(TAG,
"showing"
);
31
break
;
32
case
FINISHED:
33
ArrayList<Song> tempSongs = ReadFileList.readDataFromSD(LocalList.
this
, LOCAL);
34
if
(tempSongs !=
null
&& tempSongs.size()>
0
) {
35
if
(songs !=
null
&& songs.size()>
0
) {
36
songs.clear();
37
songs.addAll(tempSongs);
38
songAdapter.notifyDataSetChanged();
39
}
else
{
40
songs =
new
ArrayList<Song>();
41
songs.addAll(tempSongs);
42
initSong_lv();
43
}
44
}
else
{
45
Toast.makeText(LocalList.
this
,
"SD卡中没有歌曲,请添加后再扫描"
, Toast.LENGTH_SHORT).show();
46
}
47
Log.i(TAG,
"finish"
);
48
if
(scanAlertDialog!=
null
&& scanAlertDialog.isShowing()) {
49
scanAlertDialog.dismiss();
50
}
51
unregisterReceiver(scanReceiver);
52
break
;
53
case
DISMISS:
54
Log.i(TAG,
"dismiss"
);
55
if
(scanAlertDialog!=
null
&& scanAlertDialog.isShowing()) {
56
scanAlertDialog.dismiss();
57
}
58
default
:
59
break
;
60
}
- android 扫描SD卡与系统文件
- android 扫描SD卡与系统文件(转)
- Android扫描sd卡和系统文件
- Android扫描sd卡和系统文件
- Android扫描sd卡和系统文件
- Android回顾之SD卡文件扫描
- android设备SD卡文件扫描与同步(暂备份)
- Android系统如何扫描手机SD卡中的视频文件
- 扫描手机SD卡文件
- android ProgressBar实现扫描SD卡文件 + SimpleAdapter绑定ListView
- Android扫描SD卡或者SD下某个文件夹得到想要的文件
- Android保存图片到图库,Android扫描文件到媒体库,Android保存图片到SD卡
- Android保存图片到图库,Android扫描文件到媒体库,Android保存图片到SD卡
- Android保存图片到图库,Android扫描文件到媒体库,Android保存图片到SD卡
- Android 扫描SD卡中的所有视频文件
- Android下阻止系统扫描SD卡上的媒体图像文件
- Android下阻止系统扫描SD卡上的媒体图像文件
- android 扫描手机内存和SD卡,获取手机的视频、音频文件。把获取不到的文件扫描出来
- usaco4.1.2 有N块长木板,希望得到M块短木板,问最多可以裁多少块短木板
- 简介 一款性能稳定,功能极全的contex-A8 real S5PV210开发板
- 队列 -- 循环队列
- 大四的暑假依旧留在北京
- MTK TP Driver Tool Vibrator Speaker介绍
- android 扫描SD卡与系统文件
- Reactor框架的UDP server
- SAP运输管理软件8.0如期上市
- 黑马程序员-JAVA中的反射
- kano模型心得
- 转:DataSet和DataTable有用的方法
- ORACLE锁机制研究
- CAP原理(CAP Theorem)
- Arduino MEGA2560上用到的主要芯片