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:
In the android console I get these messages:
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"