Entschuldigung für mein Englisch. Ich habe activity1
und activity2
. In activity1
Ich habe Knopf, wenn ich diesen Knopf annehme, friert dieser Knopf für einige Sekunden ein und nach diesem öffnen activity2
. Um ein Einfrieren zu entfernen, wenn Sie auf die Schaltfläche klicken in activity1
Ich habe Code hinzugefügt, der die Kamera in neuen runOnUiThread
startet, aber jetzt nicht surfaceCreated
genannt.Nicht aufgerufen SurfaceCreated, wenn Kameraobjekt in Oberfläche in neuen runOnUiThread
mPreview - meine Gewohnheit Surface
mCamera - Objekt Kamera
Mein Code:
new Thread(new Runnable() {
@Override
public void run() {
CameraActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mPreview.addCamera(mCamera);
mPreview.addParent(CameraActivity.this);
mCamera.getParameters().setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
mPreview.refreshDrawableState();
mCamera.startPreview();
}
});
}
}).start();
Mein costom SurfaceView
(i hinzufügen nur wichtig Code)
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
public CameraPreview (Context context){
super(context);
}
public CameraPreview(Context context, AttributeSet attrs){
super(context, attrs);
}
public CameraPreview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void addCamera(Camera camera){
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
try {
if(mCamera!=null){
mCamera.stopPreview();
mCamera.setPreviewCallback(null);
mCamera.release();
mCamera = null;
}
} catch (Exception e){
Toast.makeText(this.getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
//code
mCamera.startPreview();
}
}