
com.bumptech.glide.signature.MediaStoreSignature Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of glide Show documentation
Show all versions of glide Show documentation
A fast and efficient image loading library for Android focused on smooth scrolling.
package com.bumptech.glide.signature;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.util.Util;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
/**
* A unique signature based on metadata data from the media store that detects common changes to
* media store files like edits, rotations, and temporary file replacement.
*/
public class MediaStoreSignature implements Key {
private final String mimeType;
private final long dateModified;
private final int orientation;
/**
* Constructor for {@link com.bumptech.glide.signature.MediaStoreSignature}.
*
* @param mimeType The mime type of the media store media. Ok to default to empty string "".
* See {@link android.provider.MediaStore.Images.ImageColumns#MIME_TYPE} or
* {@link android.provider.MediaStore.Video.VideoColumns#MIME_TYPE}.
* @param dateModified The date modified time of the media store media. Ok to default to 0. See
* {@link android.provider.MediaStore.Images.ImageColumns#DATE_MODIFIED} or
* {@link android.provider.MediaStore.Video.VideoColumns#DATE_MODIFIED}.
* @param orientation The orientation of the media store media. Ok to default to 0. See {@link
* android.provider.MediaStore.Images.ImageColumns#ORIENTATION}.
*/
public MediaStoreSignature(String mimeType, long dateModified, int orientation) {
this.mimeType = mimeType;
this.dateModified = dateModified;
this.orientation = orientation;
}
@SuppressWarnings({"PMD.SimplifyBooleanReturns", "RedundantIfStatement"})
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
MediaStoreSignature that = (MediaStoreSignature) o;
if (dateModified != that.dateModified) {
return false;
}
if (orientation != that.orientation) {
return false;
}
if (!Util.bothNullOrEqual(mimeType, that.mimeType)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = mimeType != null ? mimeType.hashCode() : 0;
result = 31 * result + (int) (dateModified ^ (dateModified >>> 32));
result = 31 * result + orientation;
return result;
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
byte[] data = ByteBuffer.allocate(12).putLong(dateModified).putInt(orientation).array();
messageDigest.update(data);
messageDigest.update(mimeType.getBytes(CHARSET));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy