Таким образом, все изображения профиля пользователей хранятся в хранилище firebase, и когда я создаю маркер на картах Google, я хочу, чтобы все мои Uri отображались вместо этого значка по умолчанию, который я использую в данный момент, но я попытался делать разные вещи, такие как Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), download);
, но не может заставить его работать, есть ли другой способ?
Код
/**
* Rendering of the individual ClusterItems
* @param item
* @param markerOptions
*/
@Override
protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {
StorageReference pb_storage = FirebaseStorage.getInstance().getReference();
final StorageReference pb_store_ref = pb_storage.child("images/" + item.getUser() + "/profil/mountains.jpg");
Log.d(TAG, "MyClusterManagerRendere: "+pb_store_ref);
pb_store_ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final Uri download = uri;
Log.d(TAG, "download: " + download);
}
});
//This is my old, and I have to change icon to URI
imageView.setImageResource(item.getIconPicture());
Bitmap icon = iconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());
markerOptions.snippet(item.getSnippet());
}
EDIT
Тоже пробовал, и не получается:
try {
if (Build.VERSION.SDK_INT < 28) {
Bitmap bm = MediaStore.Images.Media.getBitmap(cR, download);
}else {
ImageDecoder.Source source = ImageDecoder.createSource(cR, download);
Bitmap bm = ImageDecoder.decodeBitmap(source);
}
} catch (IOException e) {
Log.d(TAG, "onBeforeClusterItemRendered: " + e.getMessage());
}