I use the default Camera application to take photos and videos (which I take very frequently). So far it's worked well, but it has its limits which bother me at times. I'm looking for a custom camera application which does everything the default one can, but has the following features:

- If possible, be open-source. And have more customization features and the like.

- Pictures taken in portrait mode are taken in portrait mode. The default camera app causes such pictures to show portrait on the device, but when copying them to the computer I need to rotate each manually. I want the image file itself to be rotated in landscape or portrait based on how I'm holding my phone, so I don't have to do so after.

- Not be annoying and refuse to film / take photos when my battery level is under a certain percentage. I know I shouldn't use the camera when battery is low, but forcing me not to is very unpleasing. The default camera app also won't let me take pictures while in a call... ugh.

- If possible, allow special shortcuts to activate the application without having to unlock my phone. Whenever I wanna take a quick photo or video, I have to get my phone out of my pocket, press the home button to activate the screen, write the unlock pattern, press the camera icon, wait for the camera to start... and until then whatever I wanted to take a photo of is already gone :P A good shortcut would be either one of the volume buttons / the power button / double-clicking the home button, or shaking my phone in a certain pattern.

Note that I want all my images and pictures to keep the same codec, so I don't want a camera app which uses a different file format or codec to store images. I also want to keep the ability of selecting my video and image resolution, and maybe also choose the frame rate of videos. Not sure if third-party applications can auto-detect the resolution of the device's camera, but as long as I can use maximum supported ones that's ok.