首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java Android studio应用程序-如何在用相机拍摄照片后正确重命名?

在Java Android Studio应用程序中,可以通过以下步骤来正确重命名相机拍摄的照片:

  1. 首先,确保已经在AndroidManifest.xml文件中添加了相机权限。
  2. 创建一个用于保存照片的目录。可以使用以下代码创建一个名为"Photos"的目录:
代码语言:txt
复制
File photoDirectory = new File(Environment.getExternalStorageDirectory(), "Photos");
if (!photoDirectory.exists()) {
    photoDirectory.mkdirs();
}
  1. 在拍摄照片的地方,使用以下代码来启动相机应用:
代码语言:txt
复制
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
    // 创建一个用于保存照片的文件
    File photoFile = createPhotoFile();
    if (photoFile != null) {
        Uri photoUri = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile);
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}
  1. createPhotoFile()方法中,可以使用以下代码来创建一个唯一的文件名:
代码语言:txt
复制
private File createPhotoFile() throws IOException {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
    String imageFileName = "IMG_" + timeStamp + "_";
    File storageDir = new File(Environment.getExternalStorageDirectory(), "Photos");
    return File.createTempFile(imageFileName, ".jpg", storageDir);
}
  1. onActivityResult()方法中,可以获取到拍摄的照片,并进行重命名:
代码语言:txt
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        // 获取拍摄的照片
        File photoFile = getLatestPhotoFile();
        if (photoFile != null) {
            // 重命名照片
            File renamedFile = renamePhotoFile(photoFile);
            if (renamedFile != null) {
                // 在这里可以使用重命名后的照片文件进行其他操作
            }
        }
    }
}

private File getLatestPhotoFile() {
    File storageDir = new File(Environment.getExternalStorageDirectory(), "Photos");
    File[] files = storageDir.listFiles();
    if (files != null && files.length > 0) {
        Arrays.sort(files, new Comparator<File>() {
            @Override
            public int compare(File file1, File file2) {
                return Long.compare(file2.lastModified(), file1.lastModified());
            }
        });
        return files[0];
    }
    return null;
}

private File renamePhotoFile(File photoFile) {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
    String newFileName = "IMG_" + timeStamp + ".jpg";
    File renamedFile = new File(photoFile.getParent(), newFileName);
    if (photoFile.renameTo(renamedFile)) {
        return renamedFile;
    }
    return null;
}

通过以上步骤,你可以在Java Android Studio应用程序中实现正确重命名相机拍摄的照片。请注意,上述代码中的"com.example.android.fileprovider"是一个示例文件提供者的授权名称,你需要根据自己的应用程序包名进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百五十二)H5通过WebView上传图片

上一篇文章介绍了WebView与JS之间的数据交互,其实就是把字符串传来传去,这对文本格式的信息传输来说倒还凑合,倘若要传输图片信息就不管用了。所以,要想让h5网页支持从手机上传图片,还得另外想办法,当然各版本的Android系统也都提供了相应的解决办法。在Android 4.*系统上面,开发者可以重写WebChromeClient的openFileChooser函数;在Android 5.0以上的系统,开发者可以重写WebChromeClient的onShowFileChooser函数。话虽如此,可实际编码的时候,会发现并不容易,因为不但要兼容各种版本的安卓系统,而且要考虑不同操作方式下面的处理步骤。 首先是Android不同系统的适配问题,对于4.*版本要重写openFileChooser方法,对于5.0以上版本要重写onShowFileChooser方法。另外注意二者的回调方式也不一样,4.*的回调参数类型是ValueCallback<Uri>,而5.0以上的回调参数类型是ValueCallback<Uri[]>,因此要声明两个回调参数变量,分别用来保存二者各自的回调信息。相关代码如下所示:

03
领券