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
truethe 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
truethe 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.pngandgv_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.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - 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.TextStyleand setting an item namedandroid:textSizewith the desiredspsize - 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.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - 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.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - Images stack badge background colors: via the color resources named
gv_camera_image_stack_badge_backgroundandgv_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.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - 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_1andgv_qrcode_detected_popup_message_2 - QRCode detected popup text sizes: via overriding the styles named
GiniVisionTheme.Camera.QRCodeDetectedPopup.Message1.TextStyleandGiniVisionTheme.Camera.QRCodeDetectedPopup.Message2.TextStyleand setting an item namedandroid:textSizewith the desiredspsize - QRCode detected popup text colors: via the color resource name
gv_qrcode_detected_popup_message_1andgv_qrcode_detected_popup_message_2 - QRCode detected popup fonts: via overriding the styles named
GiniVisionTheme.Camera.QRCodeDetectedPopup.Message1.TextStyleandGiniVisionTheme.Camera.QRCodeDetectedPopup.Message2.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - 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.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - No camera permission text style: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.TextStyleand setting an item namedandroid:textStyletonormal,boldoritalic - No camera permission text size: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.TextStyleand setting an item namedandroid:textSizeto the desiredspsize - 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_titleandgv_camera_error_no_permission_button_title_pressed - No camera permission button font: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyleand setting an item namedgvCustomFontwith the path to the font file in yourassetsfolder - No camera permission button text style: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyleand setting an item namedandroid:textStyletonormal,boldoritalic - No camera permission button text size: via overriding the style named
GiniVisionTheme.Camera.Error.NoPermission.Button.TextStyleand setting an item namedandroid:textSizeto the desiredspsize
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