public abstract class BaseOverlayController extends java.lang.Object implements ScanningOverlay
Modifier and Type | Field and Description |
---|---|
protected android.app.AlertDialog |
errorDialog |
protected android.os.Handler |
handler |
protected OverlayState |
overlayState |
protected RecognizerRunnerFragment |
recognizerRunnerFragment |
protected RecognizerRunnerView |
recognizerRunnerView |
protected ScanResultListener |
scanResultListener |
protected ScanSoundPlayer |
scanSoundPlayer |
protected TorchController |
torchController |
Modifier | Constructor and Description |
---|---|
protected |
BaseOverlayController(ScanResultListener scanResultListener) |
Modifier and Type | Method and Description |
---|---|
protected abstract int |
getBeepSoundResourceId() |
protected android.content.Context |
getContext() |
protected abstract int |
getSplashScreenLayoutId() |
protected void |
onCameraAutofocusFailed() |
protected void |
onFragmentConfigurationChanged(android.content.res.Configuration newConfig) |
protected void |
onFragmentCreated(android.os.Bundle savedInstanceState) |
protected void |
onFragmentDestroyed() |
protected void |
onFragmentPaused() |
protected void |
onFragmentResumed() |
protected void |
onFragmentSaveInstanceState(android.os.Bundle outState) |
protected void |
onFragmentStarted() |
protected void |
onFragmentStopped() |
void |
onFrameRecognitionDone(RecognitionSuccessType recognitionSuccessType)
Called for each camera frame, after the recognition has been completed.
|
void |
onRecognizerRunnerFragmentAttached(RecognizerRunnerFragment recognizerRunnerFragment,
android.app.Activity activity)
Called after
RecognizerRunnerFragment gets attached to its host activity. |
void |
onRecognizerRunnerViewCreated(RecognizerRunnerFragment recognizerRunnerFragment)
Called when
RecognizerRunnerView has been created within given
RecognizerRunnerFragment . |
void |
onUnrecoverableError(java.lang.Throwable throwable)
This method is called when the scanning cannot be performed because of an error.
|
void |
pauseScanning()
If the
RecognizerRunnerView has been created, pauses the scanning
loop by calling RecognizerRunnerView.pauseScanning() . |
void |
resumeScanning()
If the
RecognizerRunnerView has been created, resumes the scanning
loop (that has been paused) by calling RecognizerRunnerView.resumeScanning(boolean) }. |
protected void |
setMeteringAreas() |
protected abstract boolean |
shouldResetStateOnRecognizerResume() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
onScanningDone
@NonNull protected ScanResultListener scanResultListener
@NonNull protected OverlayState overlayState
@Nullable protected RecognizerRunnerFragment recognizerRunnerFragment
@Nullable protected RecognizerRunnerView recognizerRunnerView
@NonNull protected android.os.Handler handler
@Nullable protected android.app.AlertDialog errorDialog
@NonNull protected ScanSoundPlayer scanSoundPlayer
@NonNull protected TorchController torchController
protected BaseOverlayController(@NonNull ScanResultListener scanResultListener)
@CallSuper public void onRecognizerRunnerViewCreated(@NonNull RecognizerRunnerFragment recognizerRunnerFragment)
ScanningOverlay
RecognizerRunnerView
has been created within given
RecognizerRunnerFragment
. You can use RecognizerRunnerFragment.getRecognizerRunnerView()
to get the created RecognizerRunnerView
and configure it.
The most important thing you should do in this method is to set RecognizerBundle
to
created RecognizerRunnerView
using RecognizerRunnerView.setRecognizerBundle(RecognizerBundle)
.
You can also register various callbacks to RecognizerRunnerView
, except CameraEventsListener
(using BaseCameraView.setCameraEventsListener(CameraEventsListener)
) and ScanResultListener
(using RecognizerRunnerView.setScanResultListener(ScanResultListener)
- those two listeners will be set
to RecognizerRunnerView
within RecognizerRunnerFragment
after calling this method - if you
need to observe camera events within RecognizerRunnerFragment
, you can set your own BaseCameraEventsListener
to it with RecognizerRunnerFragment.setCameraEventsListener(BaseCameraEventsListener)
.
In this method, you can also access RecognizerRunnerFragment
's content layout with method
RecognizerRunnerFragment.getContentLayout()
and add your views to it.onRecognizerRunnerViewCreated
in interface ScanningOverlay
recognizerRunnerFragment
- RecognizerRunnerFragment
within which RecognizerRunnerView
has been created.@AnyThread public void resumeScanning()
ScanningOverlay
RecognizerRunnerView
has been created, resumes the scanning
loop (that has been paused) by calling RecognizerRunnerView.resumeScanning(boolean)
}.
If the RecognizerRunnerView
has not been created yet, does nothing.
resumeScanning
in interface ScanningOverlay
RecognizerRunnerView.resumeScanning(boolean)
protected abstract boolean shouldResetStateOnRecognizerResume()
@AnyThread public void pauseScanning()
ScanningOverlay
RecognizerRunnerView
has been created, pauses the scanning
loop by calling RecognizerRunnerView.pauseScanning()
. But keeps camera active.
If the RecognizerRunnerView
has not been created yet, does nothing.
You can resume scanning by calling ScanningOverlay.resumeScanning()
.
pauseScanning
in interface ScanningOverlay
RecognizerRunnerView.pauseScanning()
protected abstract int getBeepSoundResourceId()
@CallSuper public void onRecognizerRunnerFragmentAttached(@NonNull RecognizerRunnerFragment recognizerRunnerFragment, @NonNull android.app.Activity activity)
ScanningOverlay
RecognizerRunnerFragment
gets attached to its host activity. This happens before
RecognizerRunnerFragment.onCreateView(LayoutInflater, ViewGroup, Bundle)
which internally invokes
ScanningOverlay.onRecognizerRunnerViewCreated(RecognizerRunnerFragment)
. This means that at the time this method
is invoked, methods like RecognizerRunnerFragment.getRecognizerRunnerView()
or RecognizerRunnerFragment.getContentLayout()
will return null.
However, this is a good place to register your LifecycleObserver
with RecognizerRunnerFragment.registerLifecycleObserver(LifecycleObserver)
if your overlay needs to be notified about lifecycle events of RecognizerRunnerFragment
.onRecognizerRunnerFragmentAttached
in interface ScanningOverlay
recognizerRunnerFragment
- RecognizerRunnerFragment
that has been attached to host activity.activity
- Activity
to which RecognizerRunnerFragment
has been attached.@NonNull protected android.content.Context getContext()
@LayoutRes protected abstract int getSplashScreenLayoutId()
protected void setMeteringAreas()
protected void onFragmentCreated(@Nullable android.os.Bundle savedInstanceState)
protected void onFragmentStarted()
protected void onFragmentResumed()
protected void onFragmentPaused()
protected void onFragmentStopped()
protected void onFragmentDestroyed()
protected void onFragmentConfigurationChanged(@NonNull android.content.res.Configuration newConfig)
protected void onFragmentSaveInstanceState(@Nullable android.os.Bundle outState)
protected void onCameraAutofocusFailed()
public void onUnrecoverableError(@NonNull java.lang.Throwable throwable)
ScanResultListener
onUnrecoverableError
in interface ScanResultListener
throwable
- type of errorpublic void onFrameRecognitionDone(RecognitionSuccessType recognitionSuccessType)
ScanningOverlay
onFrameRecognitionDone
in interface ScanningOverlay
recognitionSuccessType
- frame recognition status.