gpt4 book ai didi

android - 如何从android 10中的位图获取uri

转载 作者:行者123 更新时间:2023-12-05 00:16:06 27 4
gpt4 key购买 nike

我在 android 10 中获取 URI 时遇到问题,它可以在较低的设备中工作,但我不知道在 android 10 中该怎么做。我正在服务器中上传视频。

 bitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, false);
String path = MediaStore.Images.Media.insertImage(mContext.getContentResolver(), bitmap, "Title", null);
Uri.parse(path);

我也尝试了 ContentValues 但我不明白该怎么做,我收到了一些错误,例如无法解析 Q、RELATIVE_PATH、IS_PENDING

import android.provider.MediaStore;

ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, System.currentTimeMillis()+"");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1);
}

任何人都可以帮助我如何在 android 10 中获取 URI?

任何帮助都将受到高度赞赏。

最佳答案

使用下一个 fragment 将新位图插入到 Andorid 10 中的 MediaStore 中,并获取 Uri。请注意,此代码仅适用于 Android 10。

压缩格式必须与mime-type参数相关。例如,对于 JPEG 压缩格式,mime 类型将为“image/jpeg”,依此类推。子文件夹参数是可选的。

@NonNull
private Uri saveBitmap(@NonNull final Context context, @NonNull final Bitmap bitmap,
@NonNull final Bitmap.CompressFormat format, @NonNull final String mimeType,
@NonNull final String displayName, @Nullable final String subFolder) throws IOException
{
String relativeLocation = Environment.DIRECTORY_PICTURES;

if (!TextUtils.isEmpty(subFolder))
{
relativeLocation += File.separator + subFolder;
}

final ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, displayName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);

final ContentResolver resolver = context.getContentResolver();

OutputStream stream = null;
Uri uri = null;

try
{
final Uri contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
uri = resolver.insert(contentUri, contentValues);

if (uri == null)
{
throw new IOException("Failed to create new MediaStore record.");
}

stream = resolver.openOutputStream(uri);

if (stream == null)
{
throw new IOException("Failed to get output stream.");
}

if (bitmap.compress(format, 95, stream) == false)
{
throw new IOException("Failed to save bitmap.");
}

return uri;
}
catch (IOException e)
{
if (uri != null)
{
// Don't leave an orphan entry in the MediaStore
resolver.delete(uri, null, null);
}

throw e;
}
finally
{
if (stream != null)
{
stream.close();
}
}
}

关于android - 如何从android 10中的位图获取uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62282339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com