丈夫志四海,万里犹比邻。这篇文章主要讲述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; }}
View Code
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; }
View Code【android应用刷新系统多媒体库(增加or删除多媒体文件)】
推荐阅读
- Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events(
- Android中Context的理解及使用——Application的用途
- Build Android Webrtc Libjingle Library On Ubuntu
- Android6.0获取权限
- Android中实现APP文本内容的分享发送与接收方法简述
- Android 逆向实战
- 三星研发中心面试问题
- 如何使用CSS设置div宽度以适合内容()
- Directi面试问题详细分享