Camera verwenden

  • Antworten:6
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 332

16.11.2020, 20:32:35 via Website

Hallo zusammen

Ich möchte in meiner App ein vorschaubild der Camera verwenen. Ich habe ein Beispiel in welchem die Klasse

android.hardware.Camera

verwendet wird. Mann soll aber diese Klasse durch die Klasse

android.hardware.camera2

ersetzen. Hat mir jemand ein Beispiel wie ich das umsetzen muss um ein Vorschaubild der Camera in meine App ein zu binden.

Gruss Renato

Mein bisheriger Code

package ch.robbisoft.sun_app;

import android.content.Context;
//import android.hardware.camera2.*;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

import java.io.IOException;

public class CameraView extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder surfaceHolder;
private Camera camera;

public CameraView(Context context){
    super(context);
    surfaceHolder = getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public CameraView(Context context, AttributeSet attrs) {
    super(context, attrs);
    surfaceHolder = getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera.open();

// camera.save();
camera.setDisplayOrientation(90);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
camera.release();
camera = null;
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    try {
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPreviewSize(width, height);
        camera.setParameters(parameters);
        camera.startPreview();
    }catch (Exception e){
        Log.w("ch.robbisoft.sun_app.SaveActivity.CameraView", "Exception: ", e);
    }
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    camera.stopPreview();
    camera.release();
    camera = null;
}

}

Diskutiere mit!
  • Forum-Beiträge: 3.569

16.11.2020, 21:03:02 via Website

Hallo Renato,

ich habe das noch nicht umgesetzt, aber du musst dir das Bitmap der Camera schnappen und
daraus ein Thumbnail erstellen .

Die Suche auf die Schnelle
https://stackoverflow.com/questions/39279610/android-capture-image-from-camera-as-thumbnail-but-not-as-it-should-be

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 332

16.11.2020, 21:19:49 via Website

Ciao Stefan

Danke für die schnelle Hilfe.
Ich möchte kein Foto machen. Ich möchte das vorschaubild der Kamera als hintergrund in mener Activity einbinden.

Gruss Renato

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 1.304

17.11.2020, 10:10:06 via Website

Hallo
Also ich würde dir schon empfehlen auf die Camera2 umzusteigen. Denn neure Handys unterstutzen die Cam1 nicht mehr.
This class was deprecated in API level 21.
We recommend using the new android.hardware.camera2 API for new applications.
https://developer.android.com/reference/android/hardware/Camera

Im Übrigen würde mich interessieren wie du denn überhaupt auf deine Klasse „CameraView“ zugreifst.
Hast du davon ein Widget im Layout?

Wo und wie lässt du das surfaceView anzeigen oder wie greift du in der Main drauf zu ?

Hier etwas hilfe für die Cam2 leider in Kotlin aber das kannst du ja :)
https://proandroiddev.com/understanding-camera2-api-from-callbacks-part-1-5d348de65950

PS vielleicht auch CameraX
https://o7planning.org/de/10529/anleitung-android-camera

— geändert am 17.11.2020, 11:04:59

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 332

18.11.2020, 20:07:51 via Website

Ciao Jokel

Herzlichen Dank für deine ausführliche Hilfe. Ich muss mal alle Links sichten. Das dauert seine Zeit bis ich die Übersicht habe.

Genau der Zugriff geht über ein Witget welches ich im Layout unter Project habe. Dies habe ich aus einem Buch abgekupfert. Da es aber schon was älter ist, verwendet es noch die Camera1. Mal schauen ob ich es umbauen kann.

Gruss Renato

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 332

19.11.2020, 20:37:39 via Website

Hallo zusammen

Der zweite Link von Jokel ist super. Dort hat es ein Link auf ein Projekt in githup. Ich habe mir das geholt und ausprobiert. Es funktioniert. Es enthält sogar zwei Versionen. eine in Java und eine in Kotlin. Danke Jokel für dein Link. Ist echt hilfreich.

Gruss Renato

Hilfreich?
Diskutiere mit!
Empfohlene Artikel bei NextPit