Android 实现图片、视频即时更新到相册

来源:互联网 发布:c语言设计 谭浩强pdf 编辑:程序博客网 时间:2024/06/05 03:15

              分享是一种快乐,一个个小小的问题困扰良久,终于找到一篇行之有效的方法,简单几行代码实现了图片和视频的同步更新到系统图库,代码如下:

/**
* 将视频插入图库
* @param url 视频路径地址
*/
public void updateVideo(String url){
      File file=new File(url);
      //获取ContentResolve对象,来操作插入视频
      ContentResolver localContentResolver = this.getContentResolver();
      //ContentValues:用于储存一些基本类型的键值对
      ContentValues localContentValues = getVideoContentValues(this, file, System.currentTimeMillis());
      //insert语句负责插入一条新的纪录,如果插入成功则会返回这条记录的id,如果插入失败会返回-1。
      Uri localUri = localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,                           localContentValues);
}

//再往数据库中插入数据的时候将,将要插入的值都放到一个ContentValues的实例当中
public static ContentValues getVideoContentValues(Context paramContext, File paramFile, long paramLong){
     ContentValues localContentValues = new ContentValues();
     localContentValues.put("title", paramFile.getName());
     localContentValues.put("_display_name", paramFile.getName());
     localContentValues.put("mime_type", "video/3gp");
     localContentValues.put("datetaken", Long.valueOf(paramLong));
     localContentValues.put("date_modified", Long.valueOf(paramLong));
     localContentValues.put("date_added", Long.valueOf(paramLong));
     localContentValues.put("_data", paramFile.getAbsolutePath());
     localContentValues.put("_size", Long.valueOf(paramFile.length()));
     return localContentValues;
}

//android把图片文件添加到相册
public void udpateMedia(String url){
     //图片路径
     File file=new File(url);
     ContentResolver localContentResolver = getContentResolver();
     ContentValues localContentValues = getImageContentValues(UnityPlayerNativeActivity.this, file,      System.currentTimeMillis());
     localContentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, localContentValues);
     Intent localIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
     final Uri localUri = Uri.fromFile(file);
     localIntent.setData(localUri);
     //发送广播即时更新图库
     sendBroadcast(localIntent);
}

//再往数据库中插入数据的时候将,将要插入的值都放到一个ContentValues的实例当中
public static ContentValues getImageContentValues(Context paramContext, File paramFile, long paramLong){
     ContentValues localContentValues = new ContentValues();
     localContentValues.put("title", paramFile.getName());
     localContentValues.put("_display_name", paramFile.getName());
     localContentValues.put("mime_type", "image/jpeg");
     localContentValues.put("datetaken", Long.valueOf(paramLong));
     localContentValues.put("date_modified", Long.valueOf(paramLong));
     localContentValues.put("date_added", Long.valueOf(paramLong));
     localContentValues.put("orientation", Integer.valueOf(0));
     localContentValues.put("_data", paramFile.getAbsolutePath());
     localContentValues.put("_size", Long.valueOf(paramFile.length()));
     return localContentValues;
}

原文地址: 点击打开链接   

如果大家对ContentResolver、ContentProvider不熟悉。有三篇文章还不错:链接1,点击阅览         链接2,点击阅览        链接3,点击阅览


1 0
原创粉丝点击