I don't see any hardware feature detection here. Shouldn't we check if the hardware supports autofocus and conditionally either prepare to take the picture or go through the autofocus process depending on the result?