Camera Activity
CameraActivity
is the main entry point to the Gini Vision Library 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 Vision Library is used to inform the user about document importing.
For importing documents READ_EXTERNAL_STORAGE
permission is required and if the permission is not granted the Gini Vision Library will prompt the user to grant the permission. See Customizing the Camera Screen
on how to override the message and button titles for the rationale and on permission denial alerts.
Start the CameraActivity
with startActivityForResult to receive the extractions or a GiniVisionError in case there was an error.
These formerly mandatory extras have been deprecated. Still required if GiniVision is not used:
- EXTRA_IN_REVIEW_ACTIVITY - use the setReviewActivityExtra helper to set it. Must contain an explicit Intent to the ReviewActivity subclass from your application
- EXTRA_IN_ANALYSIS_ACTIVITY - use the setAnalysisActivityExtra helper to set it. Must contain an explicit Intent to the AnalysisActivity subclass from your application
These optional extras have been deprecated. Should be set only if GiniVision is not used:
- EXTRA_IN_SHOW_ONBOARDING_AT_FIRST_RUN - the Onboarding Screen is shown by default the first time the Gini Vision Library is started. You may disable it by setting this extra to
false
- we highly recommend keeping the default behavior - EXTRA_IN_SHOW_ONBOARDING - if set to
true
the Onboarding Screen is shown when the Gini Vision Library is started - EXTRA_IN_ONBOARDING_PAGES - custom pages for the Onboarding Screen as an ArrayList containing OnboardingPage objects
- DeprecatedEXTRA_IN_BACK_BUTTON_SHOULD_CLOSE_LIBRARY - if set to
true
the back button closes the Gini Vision Library from any of its activities with result code RESULT_CANCELED - EXTRA_IN_GINI_VISION_FEATURE_CONFIGURATION - must contain a instance to apply the feature configuration
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 Vision Library
- RESULT_ERROR - an error occured
Result extra returned by the CameraActivity
:
- EXTRA_OUT_EXTRACTIONS - set when result is RESULT_OK, contains a Bundle with the extraction labels as keys and as values.
- EXTRA_OUT_ERROR - set when result is RESULT_ERROR, contains a GiniVisionError object detailing what went wrong
Note: For returning the extractions from the Gini API you can add your own extras in onAddDataToResult or onAddDataToResult.
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
gv_camera_preview_corners
- Camera trigger button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
gv_camera_trigger_default.png
andgv_camera_trigger_pressed.png
- Document import button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
gv_document_import_icon.png
- Document import button subtitle text: via the string resource named
gv_camera_document_import_subtitle
- Document import button subtitle text style: via overriding the style named
GiniVisionTheme.Camera.DocumentImportSubtitle.TextStyle
- Document import button subtitle font: via overriding the style named
GiniVisionTheme.Camera.DocumentImportSubtitle.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - Document import hint background: via the color resource named
gv_document_import_hint_background
- Document import hint close icon color: via the color resource name
gv_hint_close
- Document import hint text: via the string resource named
gv_document_import_hint_text
- Document import hint text size: via overriding the style named
GiniVisionTheme.Camera.DocumentImportHint.TextStyle
and setting an item namedandroid:textSize
with the desiredsp
size - Document import hint text color: via the color resource name
gv_document_import_hint_text
- Document import hint font: via overriding the style named
GiniVisionTheme.Camera.DocumentImportHint.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - Images stack badge text style: via overriding the style named
GiniVisionTheme.Camera.ImageStackBadge.TextStyle
- Images stack badge font: via overriding the style named
GiniVisionTheme.Camera.ImageStackBadge.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - Images stack badge background colors: via the color resources named
gv_camera_image_stack_badge_background
andgv_camera_image_stack_badge_background_border
- Images stack badge background size: via the dimension resource named
gv_camera_image_stack_badge_size
- Images stack subtitle text: via the string resource named
gv_camera_image_stack_subtitle
- Images stack subtitle text style: via overriding the style named
GiniVisionTheme.Camera.ImageStackSubtitle.TextStyle
- Images stack subtitle font: via overriding the style named
GiniVisionTheme.Camera.ImageStackSubtitle.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - Multi-page document page limit exceeded alert message: via the string resource named
gv_document_error_too_many_pages
- Multi-page document page limit exceeded alert positive button text: via the string resource named
gv_document_error_multi_page_limit_review_pages_button
- Multi-page document page limit exceeded alert cancel button text: via the string resource named
gv_document_error_multi_page_limit_cancel_button
- Read storage permission denied button color: via the color resource named
gv_accent
- QRCode detected popup background: via the color resource named
gv_qrcode_detected_popup_background
- QRCode detected popup texts: via the string resources named
gv_qrcode_detected_popup_message_1
andgv_qrcode_detected_popup_message_2
- QRCode detected popup text sizes: via overriding the styles named
GiniVisionTheme.Camera.QRCodeDetectedPopup.Message1.TextStyle
andGiniVisionTheme.Camera.QRCodeDetectedPopup.Message2.TextStyle
and setting an item namedandroid:textSize
with the desiredsp
size - QRCode detected popup text colors: via the color resource name
gv_qrcode_detected_popup_message_1
andgv_qrcode_detected_popup_message_2
- QRCode detected popup fonts: via overriding the styles named
GiniVisionTheme.Camera.QRCodeDetectedPopup.Message1.TextStyle
andGiniVisionTheme.Camera.QRCodeDetectedPopup.Message2.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - Read storage permission rationale text: via the string resource named
gv_storage_permission_rationale
- Read storage permission rationale positive button text: via the string resource named
gv_storage_permission_rationale_positive_button
- Read storage permission rationale negative button text: via the string resource named
gv_storage_permission_rationale_negative_button
- Read storage permission rationale button color: via the color resource named
gv_accent
- Read storage permission denied text: via the string resource named
gv_storage_permission_denied
- Read storage permission denied positive button text: via the string resource named
gv_storage_permission_denied_positive_button
- Read storage permission denied negative button text: via the string resource named
gv_storage_permission_denied_negative_button
- Read storage permission denied button color: via the color resource named
gv_accent
- Tap-to-focus indicator: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
gv_camera_focus_indicator.png
- Help menu item icon: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
gv_help_icon.png
- Onboarding menu item title: via the string resource named
gv_show_onboarding
- Background color: via the color resource named
gv_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
gv_no_camera.png
- No camera permission text: via the string resource named
gv_camera_error_no_permission
- No camera permission text color: via the color resource named
gv_camera_error_no_permission
- No camera permission font: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - No camera permission text style: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.TextStyle
and setting an item namedandroid:textStyle
tonormal
,bold
oritalic
- No camera permission text size: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.TextStyle
and setting an item namedandroid:textSize
to the desiredsp
size - No camera permission button title: via the string resource named
gv_camera_error_no_permission_button_title
- No camera permission button title color: via the color resources named
gv_camera_error_no_permission_button_title
andgv_camera_error_no_permission_button_title_pressed
- No camera permission button font: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyle
and setting an item namedgvCustomFont
with the path to the font file in yourassets
folder - No camera permission button text style: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyle
and setting an item namedandroid:textStyle
tonormal
,bold
oritalic
- No camera permission button text size: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyle
and setting an item namedandroid:textSize
to the desiredsp
size
Important: All overriden styles must have their respective Root.
prefixed style as their parent. Ex.: the parent of GiniVisionTheme.Camera.Error.NoPermission.TextStyle
must be Root.GiniVisionTheme.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
gv_action_bar
(highly recommended for Android 5+: customize the status bar color viagv_status_bar
) - Title: via the string resource name
gv_title_camera
- Title color: via the color resource named
gv_action_bar_title
- Back button: via images for mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi named
gv_action_bar_back