如何将捕获的图像保存到Android存储中的自定义路径

时间:2018-04-14 01:56:27

标签: java android android-intent android-storage

我在Youtube的教程之后构建了一个Camera应用程序。它使用以下代码

保存外部存储上的文件
public void takePicture(View view) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    file = Uri.fromFile(getOutputMediaFile());
    intent.putExtra(MediaStore.EXTRA_OUTPUT, file);

    startActivityForResult(intent, 100);
}

private static File getOutputMediaFile() {
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "CameraDemo");

    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d("CameraDemo", "failed to create directory");
            return null;
        }
    }

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    return new File(mediaStorageDir.getPath() + File.separator +
            "IMG_" + timeStamp + ".jpg");
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 100) {
        if (resultCode == RESULT_OK) {
            imageView.setImageURI(file);
        }
    }
}

但是,当应用程序以目录选择器对话框启动时,我想向用户显示一个对话框,他们想要保存图像,我从这个链接https://www.codeproject.com/Articles/547636/Android-Ready-to-use-simple-directory-chooser-dial

跟踪了教程

目录选择对话框的代码在

下面
DirectoryChooserDialog directoryChooserDialog =
    new DirectoryChooserDialog(MainActivity.this,
        new DirectoryChooserDialog.ChosenDirectoryListener()
        {
            @Override
            public void onChosenDir(String chosenDir)
            {
                m_chosenDir = chosenDir;
                Toast.makeText(
                    MainActivity.this, "Chosen directory: " +
                    chosenDir, Toast.LENGTH_LONG).show();
            }
        });
// Toggle new folder button enabling
directoryChooserDialog.setNewFolderEnabled(m_newFolderEnabled);
// Load directory chooser dialog for initial 'm_chosenDir' directory.
// The registered callback will be called upon final directory selection.
directoryChooserDialog.chooseDirectory(m_chosenDir);
m_newFolderEnabled = ! m_newFolderEnabled;

事实上,我还有一个独立的DirectoryChooserDialog类。

现在如何将第一个代码与第二个代码合并,以便从相机拍摄的图像将保存到用户从第二个代码中选择的文件夹,而不是第一个代码指定的外部存储目录。

DirectoryChooserDialog的图像文件显示为

DirectoryChooserDialog

0 个答案:

没有答案