Skip to content

Black screen on second scan #35

Description

@Noppey

Tested on Android (multiple devices such as Samsung S10e)

Everything runs great when scanning. After I've processed other stuff and navigate back to the component that holds the scanner. Everything is initialized again (tested with console.log):

onLoaded(args) {
    this.camera = args.object;
    this.requestPermission();
  }

  requestPermission() {
    this.camera.requestCameraPermission();
  }

However the MLKitView is black and doesn't do anything.
When pressing back (phone button) and navigating again to the scanner, everything starts working fine again.

<ActionBar [title]="'QRSCANNERTITLE' | L">
    <NavigationButton [text]="'BACK'| L"></NavigationButton>
</ActionBar>

<GridLayout rows="*, auto" height="100%">
    <MLKitView height="100%" [torchOn]="torchOn" cameraPosition="back" detectionType="all" (detection)="onDetection($event)" (loaded)="onLoaded($event)">

    </MLKitView>
    <Button row="1" height="40" [text]="torchOn ? ('TURNOFFTORCH' | L) : ('TURNONTORCH' | L)" (tap)="toggleTorch($event)"></Button>
</GridLayout>

Activity

  1. Noppey commented on Nov 25, 2022

    @Noppey
    Author

    Setting an *ngIf="initialized" works when setting this to false after scanning and true onInit. So there is an easy workaround.
    But this shouldn't be necessary.

  2. triniwiz commented on Feb 21, 2023

    @triniwiz
    Member

    @Noppey can you try with the latest version 1.0.7 and lmk if this is still an issue.

  3. boutier commented on Apr 12, 2023

    @boutier

    I have a similar issue in 2.0.0.
    Using some ngIf may fix the problem, but it was not that easy to find the good timing: having this in the ngInit was not sufficient, so what I currently do is something like:

    <GridLayout (loaded)="switch2 = true">
      <MLKitView *ngIf="switch2" [...] ></MLKitView>
    </GridLayout>

    edit:

    • note that when I had a black screen, having a button to toggle the MLKitView (or any of its parents) does not allow to make it work again.
  4. nhuurnink commented on Jun 10, 2024

    @nhuurnink

    After upgrading to 8.8.0-alpha the initialize ngIf workaround does not work anymore for me. What I did now is removed the *ngIf and just run this.myMLKitView.disposeNativeView(); when leaving the scanner. This works well so far when testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions