【发布时间】:2020-04-10 06:53:23
【问题描述】:
由于 getExternalStorageDirectory() 在 Android Level Q 中已被弃用,是否有替代方法?请提供一个使用它的示例。
编辑 1:我使用以下代码将相机流保存到存储中
Image image = null;
image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
values.put(MediaStore.MediaColumns.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
values.put(MediaStore.MediaColumns.IS_PENDING, true);
values.put(MediaStore.MediaColumns.DISPLAY_NAME, "file_" + System.currentTimeMillis() + extension);
Uri uri = getContentResolver().insert(contentUri, values);
try {
uri = save(bytes,uri);
values.put(MediaStore.MediaColumns.IS_PENDING, false);
getContentResolver().update(uri, values, null, null);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(image!=null)
{
image.close();
}
}
但这不会在按下相机按钮一次时将图像保存到存储中,在快速按下拍摄按钮两次时会将其保存到存储中。这里有错误吗?
【问题讨论】:
-
您可以像this 一样进行操作。你可以下载文件。
-
@KasımÖzdemir 我已经使用了你的技术,但我遇到了一些错误。请参阅问题中的编辑 1 并回答。
-
你能检查相机代码吗?为什么第一次不行,第二次怎么办。
-
这里是否有任何错误,例如添加或更新 uri 或此处缺少的与 Mediastore 相关的一些内容?
-
哦,错误仅在相机应用程序中。感谢您帮助@KasımÖzdemir 您的解决方案有效
标签: android