capacitor-community/camera-preview

Android Camera preview does not working!

Closed this issue · 0 comments

Hello Devs!

When using camera preview it does not work correctly on my android devices, when executing the start() function. What is displayed is the following:

error ionic

In the android console I get these messages:
image

and this:
Exception caused by surfaceChanged() java.lang.RuntimeException: startPreview failed at android.hardware.Camera.startPreview(Native Method) at com.ahm.capacitor.camera.preview.Preview.startCamera(Preview.java:335) at com.ahm.capacitor.camera.preview.Preview.surfaceChanged(Preview.java:322) at android.view.SurfaceView.updateSurface(SurfaceView.java:1120) at android.view.SurfaceView.lambda$new$0(SurfaceView.java:216) at android.view.SurfaceView.$r8$lambda$cm3nmzErr-srXoT_KjIYQgdhFN0(Unknown Source:0) at android.view.SurfaceView$$ExternalSyntheticLambda2.onPreDraw(Unknown Source:2) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1176) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3772) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2465) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9305) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1339) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1348) at android.view.Choreographer.doCallbacks(Choreographer.java:952) at android.view.Choreographer.doFrame(Choreographer.java:882) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1322) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8177) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

I have already added the permissions to the AndroidManifest file.
<uses-permission android:name="android.permission.CAMERA" />

My files are:

ts:

import { CameraPreview, CameraPreviewOptions } from '@capacitor-community/camera-preview';
async openCamera() {
    try {
      const cameraPreviewOptions: CameraPreviewOptions = {
        position: "front",
        parent: 'cameraPreview'
      };
      console.log("OPEN CAMARA");

      await CameraPreview.start(cameraPreviewOptions);
      this.cameraActive = true
      console.log("on CAMARA");
    } catch (error) {
      console.log("error with camera");
      console.error(error);
    }
  }
  async stopCamera() {
    await CameraPreview.stop()
    this.cameraActive = false
  }

html:

<ion-content> <ion-grid fixed> <ion-row> <ion-col size="12"> <div id="cameraPreview"></div> <ion-button expand="block" class="button_exam" expand="full" *ngIf="!cameraActive" (click)="openCamera()"> Open Camera </ion-button> </ion-col> </ion-row> <ion-row> <ion-col size="12"> <ion-button expand="block" class="button_exam" *ngIf="cameraActive" (click)="stopCamera()"> Close Camera </ion-button> </ion-col> </ion-row> </ion-grid> </ion-content>

packasge.json:
"@angular/animations": "^17.0.2", "@angular/common": "^17.0.2", "@angular/compiler": "^17.0.2", "@angular/core": "^17.0.2", "@angular/forms": "^17.0.2", "@angular/platform-browser": "^17.0.2", "@angular/platform-browser-dynamic": "^17.0.2", "@angular/router": "^17.0.2", "@capacitor-community/camera-preview": "^5.0.0", "@capacitor-community/sqlite": "^5.7.0", "@capacitor/android": "^5.7.2", "@capacitor/app": "5.0.7", "@capacitor/core": "5.7.2", "@capacitor/haptics": "5.0.7", "@capacitor/keyboard": "5.0.8", "@capacitor/splash-screen": "^5.0.7", "@capacitor/status-bar": "5.0.7", "@ionic/angular": "^7.5.0"