如果你做过多媒体应用,一定会苦恼过,怎样获取sd卡中的多媒体文件。android还是很强大的,如果你知道怎么调用android的api,万事就ok了。
当手机或模拟器开机时,会调用android的MediaScanner,扫描sd卡和内存里的文件。以下是log信息。
复制代码 代码如下:
12-13 15:39:11.062: VERBOSE/MediaPlayerService(67): Create new media retriever from pid 349<BR>
12-13 15:39:11.082: DEBUG/MediaScannerService(349): getDefaultLocale =zh_CN
12-13 15:39:11.122: DEBUG/SurfaceFlinger(102): Layer::requestBuffer(this=0x7c8c68), index=1, pid=12866, w=309, h=192 success
12-13 15:39:11.142: INFO/MediaScanner(349): mOriginalCount = 14, prune thumb flag = false<BR>
12-13 15:39:11.142: DEBUG/MediaScanner(349): prescan time: 44ms<BR>
12-13 15:39:11.142: DEBUG/MediaScanner(349): scan time: 13ms<BR>
12-13 15:39:11.142: DEBUG/MediaScanner(349): postscan time: 2ms<BR>
12-13 15:39:11.142: DEBUG/MediaScanner(349): total time: 59ms<BR>
12-13 15:39:11.152: DEBUG/MediaProvider(349): un-lock thumbnail worker<BR>
12-13 15:39:11.152: DEBUG/MediaProvider(349): un-lock thumbnail worker<BR>
12-13 15:39:11.182: DEBUG/MediaScannerService(349): done scanning volume external
那么扫描后的记录它保存到哪里了呢。哈。你觉得在哪里呢?data/data/com.android.media/providers/databases/external
它存了些什么信息呢,拉出来看看吧:
那么,我们直接使用ContentProvider就可以直接获取到sd卡中多媒体的信息了,你还用去listfile么?还用去自己解析媒体文件中的信息么(时长,文件名,专辑名。。应有尽有哦)?
复制代码 代码如下:
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);
好了,最后一个问题<BR> 当你往sd卡中添加一些多媒体文件的时候,android没有自动将它刷新到数据库中。那么我们怎么让它手动刷新呢,如下:
复制代码 代码如下:
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addDataScheme("file");
scanReceiver = new ScanSdFilesReceiver();
registerReceiver(scanReceiver, intentFilter);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
private class ScanSdFilesReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)) {
scanHandler.sendEmptyMessage(STARTED);
}
if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {
scanHandler.sendEmptyMessage(FINISHED);
}
}
}
private Handler scanHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case STARTED:
MyDialog scanDialog = new MyDialog(LocalList.this);
scanAlertDialog = scanDialog.scanFile();
scanAlertDialog.show();
Log.i(TAG, "showing");
break;
case FINISHED:
ArrayList<Song> tempSongs = ReadFileList.readDataFromSD(LocalList.this, LOCAL);
if (tempSongs != null && tempSongs.size()>0) {
if (songs != null && songs.size()>0) {
songs.clear();
songs.addAll(tempSongs);
songAdapter.notifyDataSetChanged();
}else {
songs = new ArrayList<Song>();
songs.addAll(tempSongs);
initSong_lv();
}
}else {
Toast.makeText(LocalList.this, "SD卡中没有歌曲,请添加后再扫描", Toast.LENGTH_SHORT).show();
}
Log.i(TAG, "finish");
if (scanAlertDialog!=null && scanAlertDialog.isShowing()) {
scanAlertDialog.dismiss();
}
unregisterReceiver(scanReceiver);
break;
case DISMISS:
Log.i(TAG, "dismiss");
if (scanAlertDialog!=null && scanAlertDialog.isShowing()) {
scanAlertDialog.dismiss();
}
default:
break;
}
相关推荐:
seo网站页面优化包括什么,seo页面优化技术 ,no ai写作
AI撰写工具的无限可能,让内容创作更高效、更精彩!
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
seo用什么法宝,列出5种seo赚钱方式 ,ai怎么更改文档样式
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
如何快速写出高质量的AI文章:从入门到精通
AI工具,让工作效率翻倍:AI工具教程全面解析
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
用AI批量下载工具,高效管理你的文件和资源
seo运营经理是什么,seo和运营的区别 ,皖妍ai宁慕晴o
企业营销:如何在竞争激烈的市场中脱颖而出,美装网站Seo优化
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
互联网快排:助力企业网站流量爆发的秘密武器,西安网站建设找资源公司
未来智能:AI智能人工软件引领数字化变革
SEO检测,让网站排名飞升的秘密武器,高端快消食品营销推广
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO做好,企业网站流量翻倍的关键,seo白帽技术有哪些
用AI写文章:效率与创意的完美结合
SEO关键词推广软件官网-助力企业实现高效精准的网络营销,圈圈ai
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
文章写作AI:让创作更高效、精准的智能助手
AI公众号文章生成,轻松打造爆款内容
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO伪创:提升网站排名的危险策略与如何避免,怎样介绍社交网站推广
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
怎么让AI润色文章,让写作更轻松?
在线AI文章:为您打造全新内容创作体验
GPT优化:让你的工作与生活更高效、更智能,Ai__79
SEO对策:提升网站排名与流量的必备策略,SEO入门相机平价学生
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
提升写作效率,释放创意潜力文章生成AI软件的未来
SEO优化关键技巧:提升网站排名的实战攻略,科大讯飞ai论文写作软件
OpenArtAI如何进入:数字艺术的未来之门,分析海报ai
在线AI写文:开启高效创作新时代
ChatGPT无法完全显示?你可能忽略了这些令人惊讶的细节!,朵朵ai绘画
智能AI生成文章释放创作新可能
AI一键生成文章,写作新境界
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
ChatGPT:引领智能对话新潮流,助力未来科技,ai写作免费议论文
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
SEM做得好可以取代SEO吗?浅析两者的异同与未来趋势,王道ai
SEO目标:让您的网站轻松登顶搜索引擎,优化购物网站的搜索