diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 4690346e05cb..8a71d15be8ca 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -593,6 +593,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
 	}
 
 	const ControlInfoMap &controlsInfo = camera_->controls();
+	const ControlList &properties = camera_->properties();
 
 	/* Color correction static metadata. */
 	{
@@ -724,17 +725,32 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
 	staticMetadata_->addEntry(ANDROID_JPEG_MAX_SIZE, &maxJpegBufferSize_, 1);
 
 	/* Sensor static metadata. */
-	int32_t pixelArraySize[] = {
-		2592, 1944,
-	};
-	staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
-				  &pixelArraySize, 2);
-
-	int32_t sensorSizes[] = {
-		0, 0, 2560, 1920,
-	};
-	staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
-				  &sensorSizes, 4);
+	{
+		if (properties.contains(properties::PixelArraySize)) {
+			const Size &size =
+				properties.get<Size>(properties::PixelArraySize);
+			std::vector<int32_t> data{
+				static_cast<int32_t>(size.width),
+				static_cast<int32_t>(size.height),
+			};
+			staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
+						  data.data(), data.size());
+		}
+	}
+	{
+		if (properties.contains(properties::PixelArrayActiveAreas)) {
+			const Span<const Rectangle> &rects =
+				properties.get<Span<const Rectangle>>(properties::PixelArrayActiveAreas);
+			std::vector<int32_t> data{
+				static_cast<int32_t>(rects[0].x),
+				static_cast<int32_t>(rects[0].y),
+				static_cast<int32_t>(rects[0].width),
+				static_cast<int32_t>(rects[0].height),
+			};
+			staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
+						  data.data(), data.size());
+		}
+	}
 
 	int32_t sensitivityRange[] = {
 		32, 2400,
