diff --git a/src/org/briarproject/qrtest/CameraView.java b/src/org/briarproject/qrtest/CameraView.java
index 4939b2fd1a9d5dfdd29d7d7fdc9679595635924b..eb611f193d54503ad81a02f52f7703c76cc7fcc7 100644
--- a/src/org/briarproject/qrtest/CameraView.java
+++ b/src/org/briarproject/qrtest/CameraView.java
@@ -41,7 +41,11 @@ AutoFocusCallback {
 		this.previewConsumer = previewConsumer;
 		setDisplayOrientation(rotationDegrees);
 		Parameters params = camera.getParameters();
-		params.setFocusMode(macro ? FOCUS_MODE_MACRO : FOCUS_MODE_AUTO);
+		List<String> modes = params.getSupportedFocusModes();
+		if(macro && modes.contains(FOCUS_MODE_MACRO))
+			params.setFocusMode(FOCUS_MODE_MACRO);
+		else if(modes.contains(FOCUS_MODE_AUTO))
+			params.setFocusMode(FOCUS_MODE_AUTO);
 		camera.setParameters(params);
 		SurfaceHolder holder = getHolder();
 		holder.addCallback(this);
@@ -68,6 +72,7 @@ AutoFocusCallback {
 	private void stopPreview() {
 		try {
 			previewConsumer.stop();
+			camera.cancelAutoFocus();
 			camera.stopPreview();
 		} catch(Exception e) {
 			Log.e(TAG, "Error stopping camera preview", e);