diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 30ea3ade..ded57649 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1479,6 +1479,23 @@ std::unique_ptr<CameraMetadata> CameraDevice::requestTemplateVideo()
 	return previewTemplate;
 }
 
+std::unique_ptr<CameraMetadata> CameraDevice::requestTemplateStill()
+{
+	std::unique_ptr<CameraMetadata> previewTemplate = requestTemplatePreview();
+	if (!previewTemplate)
+		return nullptr;
+
+	/*
+	 * The still template with FULL requires the noise reduction mode to be
+	 * HIGH_QUALITY.
+	 */
+	uint8_t noiseReduction = ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY;
+	previewTemplate->updateEntry(ANDROID_NOISE_REDUCTION_MODE,
+				     &noiseReduction, 1);
+
+	return previewTemplate;
+}
+
 /*
  * Produce a metadata pack to be used as template for a capture request.
  */
@@ -1497,12 +1514,8 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
 		requestTemplate = requestTemplatePreview();
 		break;
 	case CAMERA3_TEMPLATE_STILL_CAPTURE:
-		/*
-		 * Use the preview template for still capture, they only differ
-		 * for the torch mode we currently do not support.
-		 */
 		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;
-		requestTemplate = requestTemplatePreview();
+		requestTemplate = requestTemplateStill();
 		break;
 	case CAMERA3_TEMPLATE_VIDEO_RECORD:
 		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 11bdfec8..388acf51 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -99,6 +99,7 @@ private:
 	void notifyError(uint32_t frameNumber, camera3_stream_t *stream);
 	std::unique_ptr<CameraMetadata> requestTemplatePreview();
 	std::unique_ptr<CameraMetadata> requestTemplateVideo();
+	std::unique_ptr<CameraMetadata> requestTemplateStill();
 	libcamera::PixelFormat toPixelFormat(int format) const;
 	int processControls(Camera3RequestDescriptor *descriptor);
 	std::unique_ptr<CameraMetadata> getResultMetadata(
