diff --git a/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java b/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
index d322c70..c588403 100644
--- a/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
+++ b/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
@@ -28,6 +28,7 @@
     public final int width;
     public final int height;
     public final int depth;
+    public final boolean alphaPresent;
     public final int frameCount;
     public final int repetitionCount;
     public final double frameDuration;
@@ -37,6 +38,7 @@
         int width,
         int height,
         int depth,
+        boolean alphaPresent,
         int frameCount,
         int repetitionCount,
         double frameDuration) {
@@ -44,6 +46,7 @@
       this.width = width;
       this.height = height;
       this.depth = depth;
+      this.alphaPresent = alphaPresent;
       this.frameCount = frameCount;
       this.repetitionCount = repetitionCount;
       this.frameDuration = frameDuration;
@@ -51,10 +54,10 @@
   }
 
   private static final Image[] IMAGES = {
-    // Parameter ordering: filename, width, height, depth, frameCount, repetitionCount,
-    // frameDuration.
-    new Image("alpha_video.avif", 640, 480, 8, 48, -2, 0.04),
-    new Image("Chimera-AV1-10bit-480x270.avif", 480, 270, 10, 95, -2, 0.04),
+    // Parameter ordering: filename, width, height, depth, alphaPresent, frameCount,
+    // repetitionCount, frameDuration.
+    new Image("alpha_video.avif", 640, 480, 8, true, 48, -2, 0.04),
+    new Image("Chimera-AV1-10bit-480x270.avif", 480, 270, 10, false, 95, -2, 0.04),
   };
 
   private static final String ASSET_DIRECTORY = "animated_avif";
@@ -89,6 +92,7 @@
     assertThat(decoder.getWidth()).isEqualTo(image.width);
     assertThat(decoder.getHeight()).isEqualTo(image.height);
     assertThat(decoder.getDepth()).isEqualTo(image.depth);
+    assertThat(decoder.getAlphaPresent()).isEqualTo(image.alphaPresent);
     assertThat(decoder.getFrameCount()).isEqualTo(image.frameCount);
     assertThat(decoder.getRepetitionCount()).isEqualTo(image.repetitionCount);
     double[] frameDurations = decoder.getFrameDurations();
diff --git a/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java b/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
index 2bb4450..d76c42a 100644
--- a/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
+++ b/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
@@ -48,6 +48,7 @@
   private int width;
   private int height;
   private int depth;
+  private boolean alphaPresent;
   private int frameCount;
   private int repetitionCount;
   private double[] frameDurations;
@@ -130,6 +131,11 @@
     return depth;
   }
 
+  /** Returns true if the image contains a transparency/alpha channel, false otherwise. */
+  public boolean getAlphaPresent() {
+    return alphaPresent;
+  }
+
   /** Get the number of frames in the image. */
   public int getFrameCount() {
     return frameCount;
diff --git a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
index efaef2d..0090cf1 100644
--- a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
+++ b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
@@ -209,6 +209,8 @@
   const jfieldID width_id = env->GetFieldID(avif_decoder_class, "width", "I");
   const jfieldID height_id = env->GetFieldID(avif_decoder_class, "height", "I");
   const jfieldID depth_id = env->GetFieldID(avif_decoder_class, "depth", "I");
+  const jfieldID alpha_present_id =
+      env->GetFieldID(avif_decoder_class, "alphaPresent", "Z");
   const jfieldID frame_count_id =
       env->GetFieldID(avif_decoder_class, "frameCount", "I");
   const jfieldID repetition_count_id =
@@ -218,6 +220,7 @@
   env->SetIntField(thiz, width_id, decoder->decoder->image->width);
   env->SetIntField(thiz, height_id, decoder->decoder->image->height);
   env->SetIntField(thiz, depth_id, decoder->decoder->image->depth);
+  env->SetBooleanField(thiz, alpha_present_id, decoder->decoder->alphaPresent);
   env->SetIntField(thiz, repetition_count_id,
                    decoder->decoder->repetitionCount);
   const int frameCount = decoder->decoder->imageCount;
