gpt4 book ai didi

android - 来自 Firebase storageReference 的 getBytes 不起作用

转载 作者:行者123 更新时间:2023-11-29 02:25:02 25 4
gpt4 key购买 nike

我正在创建我的第一个应用程序,我想在其中将图片从 Firebase 存储下载到位图中,然后再更改手机的壁纸。

目前两个函数都没有get

 onSuccess(byte[] bytes) {

或到

 onFailure(@NonNull Exception exception) {

相反,它会直接跳到

return bmp[0]; 

我不明白为什么,我做错了什么。

  • Storage 和 storageRef 不为空。

    public static Bitmap getImageBitmap(String url) {

    com.google.firebase.storage.FirebaseStorage storage = com.google.firebase.storage.FirebaseStorage.getInstance();
    StorageReference gsReference = storage.getReferenceFromUrl(url);

    if (bmp == null) {
    bmp = new Bitmap[1];
    }

    final long ONE_MEGABYTE = 1024 * 1024;

    gsReference.getBytes(ONE_MEGABYTE)
    .addOnSuccessListener(new OnSuccessListener<byte[]>(){
    @Override
    public void onSuccess(byte[] bytes) {
    BitmapFactory.Options options = new
    BitmapFactory.Options();
    options.inMutable = true;
    bmp[0] = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
    }
    }).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
    int errorCode = ((StorageException) exception).getErrorCode();
    String errorMessage = exception.getMessage();
    Log.d("TAG", errorMessage + errorCode);
    }
    });
    return bmp[0];
    }

在我的尝试中,我尝试通过以下方式使用 Glide:

Glide.with(user.getmContext())
.asBitmap()
.load(url)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
bmp[0] = resource;
}
});
return bmp[0];

但这并没有产生任何变化,onResourceReady(位图资源)永远不会被调用。

最佳答案

您需要等待结果。 Get bytes 方法是异步的,这就是为什么你要添加监听器并且你的值将在异步任务完成后设置

关于android - 来自 Firebase storageReference 的 getBytes 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743497/

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