Class RecognizerBundle

  • All Implemented Interfaces:
    android.os.Parcelable, com.microblink.intent.MBIntentTransferable

    public class RecognizerBundle
    extends com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
    Represents a bundle of Recognizer objects that can travel via Intent
    • Constructor Detail

      • RecognizerBundle

        public RecognizerBundle​(@NonNull
                                Recognizer... recognizers)
      • RecognizerBundle

        public RecognizerBundle​(@NonNull
                                java.util.List<Recognizer> recognizerList)
    • Method Detail

      • createFromIntent

        @Nullable
        public static final RecognizerBundle createFromIntent​(@NonNull
                                                              android.content.Intent intent)
        Creates object of this class from Intent.
        Parameters:
        intent - intent in which object is stored.
        Returns:
        created object or null if it does not exist in the given intent.
      • getRecognizers

        @NonNull
        public Recognizer<Recognizer.Result>[] getRecognizers()
        Returns the array of recognizers associated with this bundle.
        Returns:
        the array of recognizers associated with this bundle.
      • setRecognitionDebugMode

        public void setRecognitionDebugMode​(@NonNull
                                            RecognizerBundle.RecognitionDebugMode recognitionMode)
        This method is for debugging and testing purposes only. Please do not use it because calling it with wrong parameter might cause scanning loop to never terminate.
        Parameters:
        recognitionMode - Requested mode of recognition.
      • shouldAllowMultipleScanResultsOnSingleImage

        public boolean shouldAllowMultipleScanResultsOnSingleImage()
        Returns true if multiple scan results can be obtained from single image. See setAllowMultipleScanResultsOnSingleImage(boolean) for details.
        Returns:
        true if multiple scan results can be obtained from single image.
      • setAllowMultipleScanResultsOnSingleImage

        public void setAllowMultipleScanResultsOnSingleImage​(boolean multiScan)
        Sets whether or not outputting of multiple scan results from same image is allowed. If that is true, it is possible to return multiple recognition results from same image. If this option is false, at most single recognizer inside this bundle will be updated with latest results. If this option is true, it is possible that multiple recognizers inside this bundle will be updated with latest results. The upside of setting that option to false is the speed - if you have lots of recognizers in this bundle, as soon as the first recognizer succeeds in scanning, recognition chain will be terminated and other recognizers will not get a chance to analyze the image. The downside is that you are then unable to obtain multiple results from single image.
      • setNumMsBeforeTimeout

        public void setNumMsBeforeTimeout​(int numMsBeforeTimeout)
        Set the duration in milliseconds that needs to pass since scanning has begun in order to define timeout. Please be aware that time counting does not start from the moment when scanning starts. Instead it starts from the moment when at least one Recognizer.Result inside recognizers in this bundle changes its state Recognizer.Result.getResultState() to either Recognizer.Result.State.Uncertain or Recognizer.Result.State.Valid.

        The reason for this is the better user experience in cases when for example timeout is set to 10 seconds and user starts scanning and leaves device lying on table for 9 seconds and then points the device towards the object it wants to scan: in such case it is better to let that user scan the object it wants instead of completing scan with empty scan result as soon as 10 seconds timeout ticks out.

        Parameters:
        numMsBeforeTimeout - duration in milliseconds
      • getNumMsBeforeTimeout

        public int getNumMsBeforeTimeout()
        Returns the duration in milliseconds that needs to pass since scanning has begun in order to define timeout.
        Returns:
        the duration in milliseconds that needs to pass since scanning has begun in order to define timeout.
        See Also:
        setNumMsBeforeTimeout(int)
      • setFrameQualityEstimationMode

        public void setFrameQualityEstimationMode​(@NonNull
                                                  RecognizerBundle.FrameQualityEstimationMode mode)
        Sets the mode of the frame quality estimation. If automatic, it will be used if at least one enabled recognizer requires it or if device is fast enough to perform it always (default). If always on or always off, it will not depend on active recognizers nor device. Frame quality estimation helps choosing the best possible frame from camera stream for processing.
        Parameters:
        mode - Desired mode of frame quality estimation.
      • getUniqueIdIntentExtraKey

        @NonNull
        protected java.lang.String getUniqueIdIntentExtraKey()
        Description copied from class: com.microblink.intent.BaseIntentTransferable
        Returns intent extra that will be used for transferring object unique ID. Different concrete classes cannot use the same intent extra key for this purpose because that will make sending objects from different concrete classes over the same intent impossible.
        Specified by:
        getUniqueIdIntentExtraKey in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
        Returns:
        intent extra that will be used for transferring object unique ID.
      • getConcreteCreator

        @NonNull
        protected android.os.Parcelable.Creator<RecognizerBundle> getConcreteCreator()
        Description copied from class: com.microblink.intent.BaseIntentTransferable
        Returns parcelable creator for concrete intent transferable type.
        Specified by:
        getConcreteCreator in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
        Returns:
        parcelable creator for concrete intent transferable type.
      • consumeContentFromLoadedObject

        protected void consumeContentFromLoadedObject​(@NonNull
                                                      RecognizerBundle loadedBundle)
        Description copied from class: com.microblink.intent.BaseIntentTransferable
        Consumes content from object loaded from intent.
        Specified by:
        consumeContentFromLoadedObject in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
      • saveToIntent

        public void saveToIntent​(@NonNull
                                 android.content.Intent intent)
        Saves this RecognizerBundle to Intent so it can be passed to another Activity.
        Specified by:
        saveToIntent in interface com.microblink.intent.MBIntentTransferable
        Overrides:
        saveToIntent in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
        Parameters:
        intent - Intent to which RecognizerBundle should be saved.
      • equals

        public boolean equals​(@Nullable
                              java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • readFromParcel

        protected void readFromParcel​(@NonNull
                                      android.os.Parcel in)
        Overrides:
        readFromParcel in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>
      • writeToParcel

        public void writeToParcel​(@NonNull
                                  android.os.Parcel dest,
                                  int flags)
        Specified by:
        writeToParcel in interface android.os.Parcelable
        Overrides:
        writeToParcel in class com.microblink.intent.BaseIntentTransferable<RecognizerBundle>