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.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...
随机推荐
- Flink – Trigger,Evictor
org.apache.flink.streaming.api.windowing.triggers; Trigger public abstract class Trigger<T, W e ...
- ASP.NET Web API 2基于令牌的身份验证
基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB A ...
- linux实践之程序破解
linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on y ...
- QStandardItemModel-Delegate
//delete.h #ifndef DELEGATE_H #define DELEGATE_H #include<QItemDelegate> #include<QModelInd ...
- vue-router 创建 vue 单页应用示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- New library for Matlab - test
Thanks http://www.matlabsky.com/thread-120-1-1.html Install directory $MatlabRoot\toolbox or >&g ...
- [pyqt4]mark
sip SIP must be installed before building and using PyQt4 必须安装sip首先 https://riverbankcomputing.com/s ...
- Android 主题切换 小结
前言 我们用手机的时候经常看到 设置里面有夜间模式和白天模式来更换APP的主题,以前以为很简单,但是实际做起来还是有各种不完美,那么我们也要去了解各种解决方案来丰富我们的知识,现在我们就来看看各种优劣 ...
- [转]DAO层,Service层,Controller层、View层
来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...
- svm机器学习算法中文视频讲解
这个是李政軒Cheng-Hsuan Li的关于机器学习一些算法的中文视频教程:http://www.powercam.cc/chli. 一.KernelMethod(A Chinese Tutoria ...