It works now. Should simply set the parameters.setPreviewFormat(); to PixelFormat.JPEG.
On 5 Dec., 13:05, kaloer <[email protected]> wrote: > I have a screenshot of the flicker here:http://tinypic.com/r/35003lv/6 > > On 5 Dec., 12:59, kaloer <[email protected]> wrote: > > > Hi, > > > I have an Dialog with a custom view. This view has a SurfaceView which > > shows a camera preview. However, the preview is very flickering. > > > The taken photo does not contain flicker. It looks as it should. > > > Why does the preview flicker? (The camera does work :-) ) > > > This is my custom view: > > --------- > > > public class CameraView extends LinearLayout implements > > SurfaceHolder.Callback, OnClickListener, PictureCallback { > > > private SurfaceView surfView; > > private SurfaceHolder previewHolder; > > private Camera camera; > > OnProfilePictureTakenListener onProfilePictureTakenListener = null; > > > public CameraView(Context context) { > > super(context); > > setOnClickListener(this); > > surfView = new SurfaceView(getContext()); > > addView(surfView); > > previewHolder = surfView.getHolder(); > > previewHolder.addCallback(this); > > > > previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); > > } > > > @Override > > public void surfaceChanged(SurfaceHolder holder, int format, int > > width, > > int height) { > > Camera.Parameters parameters = camera.getParameters(); > > parameters.setPreviewSize(width, height); > > parameters.setPictureFormat(PixelFormat.JPEG); > > camera.setParameters(parameters); > > camera.startPreview(); > > } > > > @Override > > public void surfaceCreated(SurfaceHolder holder) { > > camera = Camera.open(); > > try { > > camera.setPreviewDisplay(previewHolder); > > } catch(Throwable t) { > > Log.e("surfaceCallback", "Exception", t); > > Toast.makeText(getContext(), t.getMessage(), > > Toast.LENGTH_LONG).show > > (); > > } > > } > > > @Override > > public void surfaceDestroyed(SurfaceHolder holder) { > > camera.stopPreview(); > > camera.release(); > > camera = null; > > } > > > @Override > > public void onClick(View v) { > > takePicture(); > > } > > > private void takePicture() { > > camera.stopPreview(); > > camera.takePicture(null, null, this); > > } > > > @Override > > public void onPictureTaken(byte[] data, Camera camera) { > > new SavePhotoTask().execute(data); > > camera.startPreview(); > > } > > > public void setOnPictureTakenListener(OnProfilePictureTakenListener > > lis) { > > onProfilePictureTakenListener = lis; > > } > > > class SavePhotoTask extends AsyncTask<byte[], String, String> { > > > @Override > > protected String doInBackground(byte[]... jpeg) { > > File photo = new > > File(Environment.getExternalStorageDirectory(), > > "/.addMePictures/" + System.currentTimeMillis()); > > if(photo.exists()) { > > photo.delete(); > > } > > try { > > FileOutputStream fos = new > > FileOutputStream(photo.getPath()); > > fos.write(jpeg[0]); > > fos.close(); > > } catch(IOException e) { > > e.printStackTrace(); > > } > > if(onProfilePictureTakenListener != null) { > > > > onProfilePictureTakenListener.onProfilePictureTaken(photo); > > } > > return null; > > } > > > } > > > public interface OnProfilePictureTakenListener { > > public abstract void onProfilePictureTaken(File imgFile); > > } > > > } > > > -------- > > > Thank you very much! > > > //Kaloer -- You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en

