Tôi có một ứng dụng để có được khung xem trước máy ảnh với một bề mặt. Nó hoạt động trên Android 4.0.4 nhưng nó không hoạt động với Jelly Bean, 4.1.2 trên cùng một thiết bị sau khi cập nhật. Đơn giản, gọi lại không bao giờ được gọi lại. Đây là đoạn mã: Đã cắt một chút:Android Camera PreviewCallback không được gọi trong 4.1
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) {
}
}
}
}
Khung hình video đang được hiển thị trên hoạt động, vì vậy tôi không thể hiểu được mình đang làm gì sai.
Bề mặt của bạnCó được gọi là không? – spartygw
Xin lỗi, tôi đã thay đổi mã một thời gian dài trước đây, tôi không chắc chắn bây giờ. – Mustafa