【Android:Camera API学习(二)】

Android:Camera API 学习(二)

一、Android:保存媒体文件

用户创建的照片和视频等媒体文件应保存到设备的外部存储目录(SD 卡)中,这样不仅可以节省系统空间,还能让用户在不使用其设备的情况下访问这些文件。您可以将媒体文件保存至设备上的多个目录位置,但作为开发者,您应考虑的标准位置仅有两个:

  • Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
    此方法会返回一个标准的共享位置(推荐位置),用于保存照片和视频。此目录为共享(公开)目录,因此其他应用可轻松发现、读取、更改和删除保存在此位置中的文件。如果用户卸载了您的应用,保存到此位置的媒体文件将不会遭到移除。为避免干扰用户的现有照片和视频,您应该在此目录中创建一个子目录,用于保存您应用的媒体文件。
  • Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
    此方法会返回一个标准位置,用于保存与您的应用相关联的照片和视频。如果用户卸载了您的应用,保存在此位置中的所有文件都将遭到移除。系统没有对此位置中的文件采取任何强制的安全措施,因此其他应用可以读取、更改和删除它们。

以下示例代码演示了如何为媒体文件创建 File 或 Uri 位置,以便在使用 Intent 调用设备相机时或在构建相机应用的过程中使用。

public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;

/**创建用于保存图像或视频的文件Uri */
private static Uri getOutputMediaFileUri(int type){
   
      return Uri.fromFile(getOutputMediaFile(type));
}

/** 创建用于保存图像或视频的文件*/
private static File getOutputMediaFile(int type){
   
    // 为了安全起见,您应该检查SD卡是否已安装
   // 使用环境。执行此操作之前,请先获取getExternalStorageState()
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
              Environment.DIRECTORY_PICTURES), "MyCameraApp");
    // 如果希望共享创建的图像,在本地效果最佳
    // 在应用程序之间,并在卸载应用程序后保持。
    // 如果存储目录不存在,请创建该目录
    if (! mediaStorageDir.exists()){
   
        if (! mediaStorageDir.mkdirs()){
   
            Log.d("MyCameraApp", "failed to create directory");
            return null;
        }
    }

    //创建媒体文件名
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile;
    if (type == MEDIA_TYPE_IMAGE){
   
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
        "IMG_"+ timeStamp + ".jpg")
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值