/ / Wie verwende ich den Live-Feed der Kamera als Aktivitätshintergrund? - Android, Hintergrund, Kamera, Oberflächenansicht, Live-Wallpaper

Wie verwende ich Kamera Live Feed als Hintergrund für Aktivitäten? - Android, Hintergrund, Kamera, Oberflächenansicht, Live-Wallpaper

Ich versuche eine App zu erstellen, in der ich Kamera-Live-Feed als Hintergrund verwenden muss. (Ich weiß, es ist eine dumme Sache zu tun, aber kann nicht helfen, es ist eine Kundenforderung).

Ich habe versucht, es zu benutzen SurfaceView aber bisher kein Erfolg.

Was auch immer ich auf Stack Overflow gefunden habemehr von einer Vermutung oder Anweisungen, wie es geht, aber keine Echtzeit-Beispiele oder Code-Hilfe ist da draußen. Es wäre toll, wenn jemand, der das schon getan hat, ein Stück Code mit Stack Overflow-Benutzern wie mir teilt.

Antworten:

5 für die Antwort № 1

Schau mal hier:

http://developer.android.com/guide/topics/media/camera.html

Es gibt den gesamten Code, den Sie benötigen, um eine Aktivität zu erstellen, die die Kameravorschau anzeigt.


2 für die Antwort № 2
package com.example.CameraPreview;

import android.content.Context;
import android.content.pm.PackageManager;
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 mHolder;
private Camera mCamera;

public CameraView(Context context) {
super(context);
if(checkCameraHardware(context))  {
mCamera = getCameraInstance();
}
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public CameraView(Context context, AttributeSet attrs) {
super(context, attrs);

if(checkCameraHardware(context))  {
mCamera = getCameraInstance();
}
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
// The Surface has been created, now tell the camera where to draw the preview.
try {
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
} catch (IOException e) {
Log.d("CameraView", "Error setting camera preview: " + e.getMessage());
}
}

@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {

if (mHolder.getSurface() == null){
return;
}

try {
mCamera.stopPreview();
} catch (Exception e){

}
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();

} catch (Exception e){
Log.d("CameraView", "Error starting camera preview: " + e.getMessage());
}
}

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

}

private boolean checkCameraHardware(Context context) {
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
return true;
} else {
return false;
}
}

public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open();
}
catch (Exception e){
}
return c;
}

}