android应用刷新系统多媒体库(增加or删除多媒体文件)
系统:android4.4及其以上
功能:app中拍照, 并实现浏览、删除照片操作。
实现:
1.拍照,存储到指定路径path
2.通知系统多媒体数据库刷新数据。
主要使用MediaScannerConnection,该类向应用提供了将新增多媒体文件发送给多媒体扫描服务的方法,进而将数据写入到系统多媒体数据库,参考实现如下:
public class MediaScanner {
private MediaScannerConnection mediaScanConn = null;
private PhotoSannerClient client = null;
private String filePath = null;
private String fileType = null;
private static MediaScanner mediaScanner= null;
/**
* 然后调用MediaScanner.scanFile("/sdcard/2.mp3");
* */
public MediaScanner(Context context) {
// 创建MusicSannerClient
if (client == null) {
client = new PhotoSannerClient();
}
if (mediaScanConn == null) {
mediaScanConn = new MediaScannerConnection(context, client);
}
}
public static MediaScanner getInstanc(Context context){
if (mediaScanner==null){
mediaScanner = new MediaScanner(context);
}
return mediaScanner;
}
private class PhotoSannerClient implements
MediaScannerConnection.MediaScannerConnectionClient {
public void onMediaScannerConnected() {
if (filePath != null) {
mediaScanConn.scanFile(filePath, fileType);
}
filePath = null;
fileType = null;
}
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
mediaScanConn.disconnect();
}
}
/**
* 扫描文件标签信息
*
* @param filePath
* 文件路径 eg:/sdcard/MediaPlayer/dahai.mp3
* @param fileType
* 文件类型 eg: audio/mp3 media/* application/ogg
* */
public void scanFile(String filepath, String fileType) {
this.filePath = filepath;
this.fileType = fileType;
// 连接之后调用MusicSannerClient的onMediaScannerConnected()方法
mediaScanConn.connect();
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
}
3.删除照片, 并删除多媒体数据库中的相关内容。对于删除操作, 都可以通过content provider直接操作多媒体数据库执行删除,参考代码如下:
if (file.isFile()) {
String filePath = file.getPath();
if(filePath.endsWith(".mp4")){
int res = context.getContentResolver().delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Media.DATA + "= \"" + filePath+"\"",
null);
if (res>0){
file.delete();
}else{
Log.e(TAG, "删除文件失败");
}
}else if (filePath.endsWith(".jpg")||filePath.endsWith(".png")||filePath.endsWith(".bmp")){
int res = context.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Media.DATA + "= \"" + filePath+"\"",
null);
if (res>0){
file.delete();
}else{
Log.e(TAG, "删除文件失败");
}
}else{
file.delete();
}
//删除多媒体数据库中的数据
return;
}
android应用刷新系统多媒体库(增加or删除多媒体文件)的更多相关文章
- android源码中,在系统多媒体数据库中增加一个字段
由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在 ...
- Android应用程序框架层和系统运行库层日志系统源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少 ...
- 各种Android UI开源框架 开源库
各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...
- Android之路-------浅淡Android历史、系统架构与开发特色
前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...
- Android app中的so库和CPU架构
一.android目前有几种cpu架构? 早期的Android系统几乎只支持ARMv5的CPU架构,目前支持七种CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...
- Android特性与系统架构
Android特性与系统架构 一.Android特性 • 应用程序框架支持组件的重用与替换 • Dalvik 虚拟机专为移动设备优化 • 集成的浏览器基于开源的WebKit 引擎 • 优化的图形库包括 ...
- [Android 新特性] 改进明显 Android 4.4系统新特性解析
Android 4.3发布半年之后,Android 4.4随着新一代Nexus5一起出现在了用户的面前,命名为从之前的Jelly Bean(果冻豆)换成了KitKat(奇巧).这个新系统究竟都有怎样的 ...
- 系列篇|编译可在Android上运行的依赖库(一):glib库
前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...
- 文件件监听器,android系统拍照功能调用后删除系统生成的照片
先说说要实现的功能: android调用系统拍照功能实时 预览 删除 上传 保存 (用户不能再本地文件夹中看到拍的照片) 再说说遇到的问题: 1.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...
随机推荐
- solr添加安全设置
solr版本为5.2.1 配置在了外网,不希望任何人都能拿到数据,所以添加了安全设置,参考 http://www.jianshu.com/p/1e79edb2b817 按照上面的流程走了一遍 1./u ...
- 使用PowerShell解三道测试开发笔试题
在网上看到了三道测试开发的笔试题,答案是用Python解的.这段时间正好在学PowerShell,练习一下:) 1. 验证邮箱格式 2. 获取URL的后缀名 3. 获取前一天时间或前一秒 我的解法是: ...
- 前台获取Dropdownlist选中的text
$("#ddltest").find("option:selected").text()
- 关于Entity Framework使用的简单例子
一.创建Code First模型 1.创建工程,这里我使用的是以.NET 4.0为目标的实体Web应用程序 2.安装Entity Framework 确保已安装NuGet,选择NuGet套件管理员&g ...
- 使用CXF框架集成Spring实现SOAP Web Service
- Resolving SQL Server Disk IO bottlenecks
网上看到这篇文章挺不错的,直接翻译过来.在尝试诊断SQL Server性能时,不要仅仅依赖某个单一的诊断数据,比如CPU的使用率.SQL Server磁盘性能,就得出结论却忽略的问题的根源.实际上,使 ...
- jenkins配置邮件
1.安装 Email Extension Plugin 插件 2.进入系统管理--系统设置 3.按照如下图设置 首先找到 Extended E-mail Notification
- 探索模拟angular的双向绑定
前言 本次探索的demo是基于jquery写的,毕竟jquery提供了强大的选择器,用惯了就离不开它了!angular的双向绑定实在是有点精深,本次探索只实现了文本的双向绑定. View-Model ...
- Java网络编程之流——readline()方法的bug
readline()方法有一个隐含的bug,它不一定会把一个回车看作行的结束.相反,readline()只识别换行或回车/换行对.当在流中检测到回车时,readline()会在继续之前等待,查看下一个 ...
- 编译错误:/usr/bin/ld: cannot find -lz
编译时出现错误/usr/bin/ld: cannot find -lz,安装zlib和zlib-devel yum install zlib yum install zlib-devel