Bug 16147163: Secure camera can now be launched with FUL running

This change introduces a class that handles launching the secure camera even
when other apps may be using the camera hardware.  It does this by sending out
a broadcast telling apps to stop using the camera as soon as the user begins to
swipe to use the secure camera.  It then waits until either the camera is
available or a timeout period has expired before it fires off the intent to
start the secure camera.

Secure camera apps can indicate (via their meta-data) that they will instead
handle the responsibility of waiting for the camera to be available.  In this
case, the new class still handles sending out the broadcast telling other apps
to close the camera, but it fires off the intent to start the secure camera
before the camera hardware is available.  This is optimal because some of the
time spent closing the camera can happen in parallel with the time spent
starting the secure camera app.  Since we can't depend on third-party apps to
wait for camera availability, the default is for us to wait for the camera to
be available before firing off the intent.  However, our first party app is
able to take the optimized approach.

Change-Id: I1eaed94875e8f50018cffab25aa1e9b21d85f25b
2 files changed