As a separate issue, I think that this function needs to look at the array of supported zoom sizes and return a value that would get us one of those.  Since the camera does not actually zoom smoothly, we want to be sure that what the preview shows is what is actually captured.