20.10.2015 Views

Compatibility Definition

2f44OdUf0

2f44OdUf0

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

If an application has never called<br />

android.hardware.Camera.Parameters.setPreviewFormat(int), then the device MUST use<br />

android.hardware.PixelFormat.YCbCr_420_SP for preview data provided to application<br />

callbacks.<br />

If an application registers an android.hardware.Camera.PreviewCallback instance and the<br />

system calls the onPreviewFrame() method when the preview format is YCbCr_420_SP,<br />

the data in the byte[] passed into onPreviewFrame() must further be in the NV21 encoding<br />

format. That is, NV21 MUST be the default.<br />

For android.hardware.Camera, device implementations MUST support the YV12 format<br />

(as denoted by the android.graphics.ImageFormat.YV12 constant) for camera previews for<br />

both front- and rear-facing cameras. (The hardware video encoder and camera may use<br />

any native pixel format, but the device implementation MUST support conversion to YV12.)<br />

For android.hardware.camera2, device implementations must support the<br />

android.hardware.ImageFormat.YUV_420_888 and android.hardware.ImageFormat.JPEG<br />

formats as outputs through the android.media.ImageReader API.<br />

Device implementations MUST still implement the full Camera API included in the Android SDK<br />

documentation [Resources, 111], regardless of whether the device includes hardware autofocus or<br />

other capabilities. For instance, cameras that lack autofocus MUST still call any registered<br />

android.hardware.Camera.AutoFocusCallback instances (even though this has no relevance to a nonautofocus<br />

camera.) Note that this does apply to front-facing cameras; for instance, even though most<br />

front-facing cameras do not support autofocus, the API callbacks must still be “faked” as described.<br />

Device implementations MUST recognize and honor each parameter name defined as a constant on<br />

the android.hardware.Camera.Parameters class, if the underlying hardware supports the feature. If the<br />

device hardware does not support a feature, the API must behave as documented. Conversely,<br />

device implementations MUST NOT honor or recognize string constants passed to the<br />

android.hardware.Camera.setParameters() method other than those documented as constants on the<br />

android.hardware.Camera.Parameters. That is, device implementations MUST support all standard<br />

Camera parameters if the hardware allows, and MUST NOT support custom Camera parameter types.<br />

For instance, device implementations that support image capture using high dynamic range (HDR)<br />

imaging techniques MUST support camera parameter Camera.SCENE_MODE_HDR [Resources,<br />

112].<br />

Because not all device implementations can fully support all the features of the<br />

android.hardware.camera2 API, device implementations MUST report the proper level of support with<br />

the android.info.supportedHardwareLevel property as described in the Android SDK [Resources, 113]<br />

and report the appropriate framework feature flags [Resources, 114].<br />

Device implementations MUST also declare its Individual camera capabilities of<br />

android.hardware.camera2 via the android.request.availableCapabilities property and declare the<br />

appropriate feature flags [Resources, 114]; a device must define the feature flag if any of its attached<br />

camera devices supports the feature.<br />

Device implementations MUST broadcast the Camera.ACTION_NEW_PICTURE intent whenever a<br />

new picture is taken by the camera and the entry of the picture has been added to the media store.<br />

Device implementations MUST broadcast the Camera.ACTION_NEW_VIDEO intent whenever a new<br />

video is recorded by the camera and the entry of the picture has been added to the media store.<br />

7.5.5. Camera Orientation<br />

Both front- and rear-facing cameras, if present, MUST be oriented so that the long dimension of the<br />

camera aligns with the screen’s long dimension. That is, when the device is held in the landscape<br />

orientation, cameras MUST capture images in the landscape orientation. This applies regardless of<br />

the device’s natural orientation; that is, it applies to landscape-primary devices as well as portraitprimary<br />

devices.<br />

Page 55 of 74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!