This is really strange. Which phone and release are you running on? I don't
know any phone that supports JPEG preview frame.

On Wed, Dec 9, 2009 at 12:25 AM, kaloer <[email protected]> wrote:

> 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]<android-beginners%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-beginners?hl=en
>

-- 
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

Reply via email to