Mam aplikację, aby uzyskać ramki podglądu kamery z powierzchnią. Pracował na systemie Android 4.0.4, ale nie działa z Jelly Bean, 4.1.2 na tym samym urządzeniu po aktualizacji. Po prostu wywołanie zwrotne nigdy nie jest wywoływane. Oto kod: snipped trochę:Podgląd kamery AndroidOdwołanie nie wywołano w 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) {
}
}
}
}
klatek wideo są wyświetlane na działalność, więc nie mogę dowiedzieć się, co robię źle.
Czy twoja powierzchnia została wywołana? – spartygw
Niestety, zmieniłem kod dawno temu, nie jestem teraz pewien. – Mustafa