Camera Activity
Screen API
{@code CameraActivity}
is the main entry point to the Gini Capture SDK when using the Screen API.
It shows a camera preview with tap-to-focus functionality, a trigger button and an optional flash on/off button. The camera preview also shows document corner guides to which the user should align the document.
On tablets in landscape orientation the camera trigger button is shown on the right side of the screen for easier access.
If you enabled document import with setDocumentImportEnabledFileTypes then a button for importing documents is shown next to the trigger button. A hint popup is displayed the first time the Gini Capture SDK is used to inform the user about document importing.
For importing documents {@code READ_EXTERNAL_STORAGE}
permission is required and if the permission is not granted the Gini Capture SDK will prompt the user to grant the permission. See {@code Customizing the Camera Screen}
on how to override the message and button titles for the rationale and on permission denial alerts.
Start the {@code CameraActivity}
with startActivityForResult to receive the extractions or a GiniCaptureError in case there was an error.
The following result codes need to be handled:
- RESULT_OK - image of a document was taken, reviewed and analyzed
- RESULT_CANCELED - image of document was not taken, user canceled the Gini Capture SDK
- RESULT_ERROR - an error occured
Result extra returned by the {@code CameraActivity}
:
- EXTRA_OUT_EXTRACTIONS - set when result is , contains a Bundle with the extraction labels as keys and as values.
- EXTRA_OUT_ERROR - set when result is , contains a GiniCaptureError object detailing what went wrong
If the camera could not be opened due to missing permissions, the content of the Camera Screen is replaced with a no-camera icon, a short message and an optional button. The button is shown only on Android 6.0+ and tapping the button leads the user to the Application Details page in the Settings. If these are shown on Android 5.0 and earlier means that the camera permission was not declared in your manifest.
Customizing the Camera ScreenCustomizing the look of the Camera Screen is done via overriding of app resources.
The following items are customizable:
- Document corner guides: via the color resource named
{@code * gc_camera_preview_corners}
- Camera trigger button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code * gc_camera_trigger_default.png}
and{@code gc_camera_trigger_pressed.png}
- Document import button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code gc_document_import_icon.png}
- Document import button subtitle text: via the string resource named
{@code * gc_camera_document_import_subtitle}
- Document import button subtitle text style: via overriding the style named
{@code * GiniCaptureTheme.Camera.DocumentImportSubtitle.TextStyle}
- Document import button subtitle font: via overriding the style named
{@code * GiniCaptureTheme.Camera.DocumentImportSubtitle.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - Document import hint background: via the color resource named
{@code * gc_document_import_hint_background}
- Document import hint close icon color: via the color resource name
{@code * gc_hint_close}
- Document import hint text: via the string resource named
{@code * gc_document_import_hint_text}
- Document import hint text size: via overriding the style named
{@code * GiniCaptureTheme.Camera.DocumentImportHint.TextStyle}
and setting an item named{@code * android:textSize}
with the desired{@code sp}
size - Document import hint text color: via the color resource name
{@code * gc_document_import_hint_text}
- Document import hint font: via overriding the style named
{@code * GiniCaptureTheme.Camera.DocumentImportHint.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - Images stack badge text style: via overriding the style named
{@code * GiniCaptureTheme.Camera.ImageStackBadge.TextStyle}
- Images stack badge font: via overriding the style named
{@code * GiniCaptureTheme.Camera.ImageStackBadge.TextStyle}
and setting an item named{@code gcCustomFont}
with the path to the font file in your{@code assets}
folder - Images stack badge background colors: via the color resources named
{@code * gc_camera_image_stack_badge_background}
and{@code gc_camera_image_stack_badge_background_border}
- Images stack badge background size: via the dimension resource named
{@code * gc_camera_image_stack_badge_size}
- Images stack subtitle text: via the string resource named
{@code * gc_camera_image_stack_subtitle}
- Images stack subtitle text style: via overriding the style named
{@code * GiniCaptureTheme.Camera.ImageStackSubtitle.TextStyle}
- Images stack subtitle font: via overriding the style named
{@code * GiniCaptureTheme.Camera.ImageStackSubtitle.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - Multi-page document page limit exceeded alert message: via the string resource named
{@code * gc_document_error_too_many_pages}
- Multi-page document page limit exceeded alert positive button text: via the string resource named
{@code gc_document_error_multi_page_limit_review_pages_button}
- Multi-page document page limit exceeded alert cancel button text: via the string resource named
{@code gc_document_error_multi_page_limit_cancel_button}
- Read storage permission denied button color: via the color resource named
{@code * gc_accent}
- QRCode detected popup background: via the color resource named
{@code * gc_qrcode_detected_popup_background}
- QRCode detected popup texts: via the string resources named
{@code * gc_qrcode_detected_popup_message_1}
and{@code gc_qrcode_detected_popup_message_2}
- QRCode detected popup text sizes: via overriding the styles named
{@code * GiniCaptureTheme.Camera.QRCodeDetectedPopup.Message1.TextStyle}
and{@code * GiniCaptureTheme.Camera.QRCodeDetectedPopup.Message2.TextStyle}
and setting an item named{@code * android:textSize}
with the desired{@code sp}
size - QRCode detected popup text colors: via the color resource name
{@code * gc_qrcode_detected_popup_message_1}
and{@code gc_qrcode_detected_popup_message_2}
- QRCode detected popup fonts: via overriding the styles named
{@code * GiniCaptureTheme.Camera.QRCodeDetectedPopup.Message1.TextStyle}
and{@code * GiniCaptureTheme.Camera.QRCodeDetectedPopup.Message2.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - Read storage permission rationale text: via the string resource named
{@code * gc_storage_permission_rationale}
- Read storage permission rationale positive button text: via the string resource named
{@code gc_storage_permission_rationale_positive_button}
- Read storage permission rationale negative button text: via the string resource named
{@code gc_storage_permission_rationale_negative_button}
- Read storage permission rationale button color: via the color resource named
{@code * gc_accent}
- Read storage permission denied text: via the string resource named
{@code * gc_storage_permission_denied}
- Read storage permission denied positive button text: via the string resource named
{@code gc_storage_permission_denied_positive_button}
- Read storage permission denied negative button text: via the string resource named
{@code gc_storage_permission_denied_negative_button}
- Read storage permission denied button color: via the color resource named
{@code * gc_accent}
- Tap-to-focus indicator: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code gc_camera_focus_indicator.png}
- Help menu item icon: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code * gc_help_icon.png}
- Onboarding menu item title: via the string resource named
{@code gc_show_onboarding}
- Background color: via the color resource named
{@code gc_background}
. Note: this color resource is global to all Activities ( CameraActivity , , ReviewActivity , AnalysisActivity ) - No-camera icon: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code * gc_no_camera.png}
- No camera permission text: via the string resource named
{@code * gc_camera_error_no_permission}
- No camera permission text color: via the color resource named
{@code * gc_camera_error_no_permission}
- No camera permission font: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - No camera permission text style: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.TextStyle}
and setting an item named{@code * android:textStyle}
to{@code normal}
,{@code bold}
or{@code italic}
- No camera permission text size: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.TextStyle}
and setting an item named{@code * android:textSize}
to the desired{@code sp}
size - No camera permission button title: via the string resource named
{@code * gc_camera_error_no_permission_button_title}
- No camera permission button title color: via the color resources named
{@code * gc_camera_error_no_permission_button_title}
and{@code gc_camera_error_no_permission_button_title_pressed}
- No camera permission button font: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.Button.TextStyle}
and setting an item named{@code * gcCustomFont}
with the path to the font file in your{@code assets}
folder - No camera permission button text style: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.Button.TextStyle}
and setting an item named{@code * android:textStyle}
to{@code normal}
,{@code bold}
or{@code italic}
- No camera permission button text size: via overriding the style named
{@code * GiniCaptureTheme.Camera.Error.NoPermission.Button.TextStyle}
and setting an item named{@code * android:textSize}
to the desired{@code sp}
size
Important: All overriden styles must have their respective {@code Root.}
prefixed style as their parent. Ex.: the parent of {@code GiniCaptureTheme.Camera.Error.NoPermission.TextStyle}
must be {@code Root.GiniCaptureTheme.Camera.Error.NoPermission.TextStyle}
.
Customizing the Action Bar is also done via overriding of app resources and each one - except the title string resource - is global to all Activities ( CameraActivity , , ReviewActivity , MultiPageReviewActivity , ).
The following items are customizable:
- Background color: via the color resource named
{@code gc_action_bar}
(highly recommended for Android 5+: customize the status bar color via{@code gc_status_bar}
) - Title: via the string resource name
{@code gc_title_camera}
- Title color: via the color resource named
{@code gc_action_bar_title}
- Back button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
{@code gc_action_bar_back}
Functions
Properties
Returned when compound extractions are available. Contains a Bundle with the extraction labels as keys and as values.
Returned when the result code is RESULT_ERROR and contains a GiniCaptureError object detailing what went wrong.
Returned when extractions are available. Contains a Bundle with the extraction labels as keys and GiniCaptureSpecificExtraction as values.
Returned when return reasons are available. Contains a Parcelable ArrayList extra with GiniCaptureReturnReason as values.
Returned result code in case something went wrong. You should retrieve the extra to find out what went wrong.