Is there a way to take a picture in code on the iPhone without going through the Apple controls? I have seen a bunch of apps that do this, but I'm not sure what API call to use.
Yes, there are two ways to do this. One, available in iOS 3.0+ is to use the
UIImagePickerController class, setting the
showsCameraControls property to NO, and setting the
cameraOverlayView property to your own custom controls. Two, available in iOS 4.0+ is to configure an
AVCaptureSession, providing it with an
AVCaptureDeviceInput using the appropriate camera device, and
AVCaptureStillImageOutput. The first approach is much simpler, and works on more iOS version, but the second approach gives you much greater control over photo resolution and file options.