diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index 15e54192adff..9e2714f132c4 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -122,6 +122,7 @@ int CameraCapabilities::initialize(std::shared_ptr<libcamera::Camera> camera,
 	camera_ = camera;
 	orientation_ = orientation;
 	facing_ = facing;
+	rawStreamAvailable_ = false;
 
 	/* Acquire the camera and initialize available stream configurations. */
 	int ret = camera_->acquire();
@@ -324,11 +325,14 @@ int CameraCapabilities::initializeStreamConfigurations()
 
 		std::vector<Size> resolutions;
 		const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);
-		if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)
+		if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW &&
+		    info.bitsPerPixel == 16) {
+			rawStreamAvailable_ = true;
 			resolutions = initializeRawResolutions(mappedFormat);
-		else
+		} else {
 			resolutions = initializeYUVResolutions(mappedFormat,
 							       cameraResolutions);
+		}
 
 		for (const Size &res : resolutions) {
 			streamConfigurations_.push_back({ res, androidFormat });
@@ -866,22 +870,11 @@ int CameraCapabilities::initializeStaticMetadata()
 	};
 
 	/* Report if camera supports RAW. */
-	bool rawStreamAvailable = false;
-	std::unique_ptr<CameraConfiguration> cameraConfig =
-		camera_->generateConfiguration({ StreamRole::Raw });
-	if (cameraConfig && !cameraConfig->empty()) {
-		const PixelFormatInfo &info =
-			PixelFormatInfo::info(cameraConfig->at(0).pixelFormat);
-		/* Only advertise RAW support if RAW16 is possible. */
-		if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW &&
-		    info.bitsPerPixel == 16) {
-			rawStreamAvailable = true;
+	if (rawStreamAvailable_)
 			availableCapabilities.push_back(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW);
-		}
-	}
 
 	/* Number of { RAW, YUV, JPEG } supported output streams */
-	int32_t numOutStreams[] = { rawStreamAvailable, 2, 1 };
+	int32_t numOutStreams[] = { rawStreamAvailable_, 2, 1 };
 	staticMetadata_->addEntry(ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
 				  numOutStreams);
 
diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h
index e7aa46c0a689..42a976d3b482 100644
--- a/src/android/camera_capabilities.h
+++ b/src/android/camera_capabilities.h
@@ -55,6 +55,7 @@ private:
 
 	int facing_;
 	int orientation_;
+	bool rawStreamAvailable_;
 
 	std::vector<Camera3StreamConfiguration> streamConfigurations_;
 	std::map<int, libcamera::PixelFormat> formatsMap_;
