假设我正在编写另一个Camera应用程序,并希望将图像精确地写入与Camera相同的位置,并将其命名为Camera相同的名称。
我将如何做到这一点?
如何知道相机文件的位置?
如何了解当前的命名约定?
如何获得该目录的权限?
任何答案都将不胜感激。
更新
好吧,假设它不是替代品。假设我想写除图像以外的格式,如音频,视频或其他内容。
更新2
请解释一下,你为什么要贬低?
更新3
时间来尝试所有建议,我发现它们都不正确。令人难以置信的是,有多少传说在Stackoverflow上行走......
答案 0 :(得分:3)
您无法准确写入与默认相机应用相同的文件夹。但是你可以使用 Environment.getExternalStoragePublicDirectory(Environment.DI RECTORY_DCIM)
mediaStorageDir = newFile(Environment.getExternalStorageDirectory(),FOLDER_NAME)
Intent takePictureFromCameraIntent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE); takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(mediaStorageDir));
startActivityForResult(takePictureFromCameraIntent,100);
但请注意,这将在DCIM目录中仅创建一个子文件夹,并且不会准确存储默认相机存储的位置。但您始终可以使用任何所需的文件夹名称创建子文件夹。
`
答案 1 :(得分:3)
我将如何做到这一点?
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + File.separator + "You Dir. Name";
如果你追加任何字符串来结束这个
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
它会在文件夹
中创建dir
如何知道相机文件的位置?
默认情况下,相机使用此位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
如何了解当前的命名惯例?
IMG_yyyyMMDD_timeStamp
如何获得该目录的权限?
使用权限管理器获取相机和外部存储权限
答案 2 :(得分:1)
要回答这个问题:
每个手机制作人都会创建自己的相机应用程序,并根据其硬件进行定制。
使用正确的权限,App可以(几乎)随意写入...
现在问题:
首先,我们不知道照片的存储位置以及命名约定。每个人和他们的母亲对什么是最好的都有不同的看法。所以没有"嘿,它始终存在"。
寻求的人会发现:得到阅读&为整个设备写permissions。通过该搜索,整个设备可以找到图像所在的文件夹。现在减去来自"社交媒体"的文件夹。我的猜测是具有最多和/或最新图像的文件夹是您想要的文件夹。当然,你需要那些信任你的测试人员。
找到的所有内容都不是无组织的:只是找到使用的模式。可能有一个标准。大公司肯定会有一家。您可以向设备询问它有maker的内容。请注意,答案可能不正确。
感谢图片,不,它是一张照片然后你就会得到accessing the camera的有趣部分。美好时光。请记住:请求图片=>获取内存中图片的位置=>将图片保存为文件。最好的部分是,没有强制执行此API的所有部分,因此不同的设备需要不同的指令...
玩得开心祝你好运!
ps,downvotes可能是缺少代码
答案 3 :(得分:0)
尝试使用此代码,您可以使用插入查询
将图像位图保存到目录中String imgSaved = MediaStore.Images.Media.insertImage(
getContentResolver(), bitmap,
System.currentTimeMillis() + ".jpg", "DESCRIPTION HERE");
有关详细信息,请参阅link
答案 4 :(得分:0)
我发现此代码对于选择上次使用的DCIM / Camera文件夹非常有用。
{{1}}