Как использовать живое видео в качестве фона активности?

Я пытаюсь создать приложение, в котором мне нужно использовать камеру в качестве фона. (Я знаю, что это глупая вещь, но она не может помочь, ее клиентский спрос).

Я попытался сделать это с помощью SurfaceView но пока ничего не добился.

До сих пор все, что я обнаружил в Stack Overflow, скорее всего, является догадкой или инструкциями, как это делать, но нет примеров в реальном времени или помощи кода. Было бы здорово, если бы кто-то, кто сделал это раньше, купил код с такими пользователями Stack Overflow, как я.

    Посмотрите здесь:

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

    Существует весь код, необходимый для выполнения операции, которая показывает предварительный просмотр камеры.

     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; } }