Android-Kamera PreviewCallback nicht als 4.1

Habe ich eine Anwendung, um Kamera-Vorschau-frames mit einer Oberfläche. Es funktioniert auf Android 4.0.4, aber es funktioniert nicht mit Jelly Bean 4.1.2 auf dem gleichen Gerät nach dem update. Einfach das callback wird nie zurück gerufen. Hier ist der code: Schnitt ein wenig:

public class Panel extends Activity {
    Camera myCamera;
    int cameraId = -1;
    MyCameraSurfaceView myCameraSurfaceView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_panel);

        myCamera = getCameraInstance();
        myCamera.setPreviewCallback(new Camera.PreviewCallback() {
            @Override
            public void onPreviewFrame(byte[] data, Camera camera) {
                Log.d("Camera Preview", data.length + "");
            }
        });

        myCameraSurfaceView = new MyCameraSurfaceView(this, myCamera);
        FrameLayout myCameraPreview = (FrameLayout) findViewById(R.id.videoview);
        myCameraPreview.addView(myCameraSurfaceView);
    }

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


    public class MyCameraSurfaceView extends SurfaceView implements
            SurfaceHolder.Callback {

        private SurfaceHolder mHolder;
        private Camera mCamera;

        public MyCameraSurfaceView(Context context, Camera camera) {
            super(context);
            mCamera = camera;
            mHolder = getHolder();
            mHolder.addCallback(this);
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            try {
                mCamera.setPreviewDisplay(holder);
                mCamera.startPreview();
            } catch (IOException e) {
            }
        }
    }
}

Das video-frames angezeigt wird, auf die Aktivität, so dass ich kann nicht herausfinden, was ich falsch mache.

  • Ist Ihre surfaceCreated immer genannt?
  • Sorry, habe ich geändert der code vor langer Zeit, ich bin mir nicht sicher jetzt.
InformationsquelleAutor Mustafa | 2012-12-07
Schreibe einen Kommentar