我正在尝试在我的应用程序中拍照并将其保存到
Android/data/com.androidproject/files/Camera/photo.png
我正在使用此代码
private class ClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getActivity().getExternalFilesDir("Camera"),
"photo.png");
Uri outputFileUri = Uri.fromFile(file);
Log.v("FILE", "" + outputFileUri);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CALL_BACK);
}
}
有人建议我将行File file = ...
改为
File file = new File(getActivity().getFilesDir() + File.separator + "Camera" + File.separator + "photo.png");
file.mkdirs();
这会将路径目录更改为我想要的目录,但它也会阻止相机完成动作。这意味着我点击我的按钮,相机加载,我按下蓝色圆圈拍摄照片,然后当我点击复选标记时它什么也不做。我可以重新加载并重新拍摄照片,或者按 x 并取消,但我无法选择复选标记。
有任何想法吗?
编辑
玩了几个小时后,我注意到了一些东西。当我点击复选标记并完成拍照操作时,文件夹中会创建一张照片。复选标记不会关闭屏幕并返回我的活动,但它会创建一个虚拟类型文件。它的大小为 0kb,命名为“1092-309403.jpeg”而不是“photo.png”。该文件也保存在“InternalStorage/DCIM/Camera”下。尽管我的应用程序从未在技术上完成操作,但它从未完全保存。只要我按 x,图片就会删除,就像它从未发生过一样。我也尝试清理我的项目,但这不起作用。