I just posted a fix on stackoverflow, let me know if it works:
http://stackoverflow.com/questions/6535652/takepicture-hangs-on-android-2-3-3/6886993#6886993

On Jul 20, 3:51 pm, musfiq <[email protected]> wrote:
> I get the similar kind of error in 2.3.4 but don't know how to fix
> it.
>
> On Jun 30, 10:01 am, dingding dangdang <[email protected]> wrote:
>
>
>
>
>
>
>
> > I have some codes of takeing picture working at Android 2.1 and 2.2.
> > But these codes broke at Android 2.3.
> > After spending a time to fix this issue in vain, I would like to ask for
> > help here.
>
> > My code flow to take picture is like this:
>
> > 1. create a class Camlayer extends SurfaceView
>
> >         public class CamLayer extends SurfaceView implements
> > SurfaceHolder.Callback {
>
> >             private void init(Context context){
> >                 // Install a SurfaceHolder.Callback so we get notified when
> > the
> >                 // underlying surface is created and destroyed.
> >                 mHolder = getHolder();
> >                 mHolder.addCallback(this);
> >                 mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
>
> >                 mCamera = Camera.open();
> >             }
>
> >             public CamLayer(Context context) {
> >                 super(context);
> >                 init(context);
> >             }
>
> >             public CamLayer(Context context, AttributeSet attrs) {
> >                 super(context, attrs);
> >                 init(context);
> >             }
>
> >             public void surfaceChanged(SurfaceHolder holder, int format, int
> > w, int h) {
> >                 Log.i(TAG+".surfaceChanged", "being called!");
> >                 Log.i(TAG+".surfaceChanged", "w="+w);
> >                 Log.i(TAG+".surfaceChanged", "h="+h);
>
> >                 if (isPreviewRunning) {
> >                     mCamera.stopPreview();
> >                 }
>
> >                    try {
> >                     mCamera.setPreviewDisplay(holder);
> >                     mCamera.setPreviewCallback(mPreviewCallback);
> >                 } catch (IOException e) {
> >                     Log.e(TAG+".surfaceCreated",
> > "mCamera.setPreviewDisplay(holder);");
> >                 }
>
> >                 Camera.Parameters p = mCamera.getParameters();
> >                 setOptimalSize(p, w, h, SIZEOFPREVIEW);
> >                 setOptimalSize(p, w, h, SIZEOFPICTURE);
> >                 mCamera.setParameters(p);
>
> >                 mCamera.startPreview();
> >                 isPreviewRunning = true;
> >             }
>
> >             public voidtakePicture(){
> >                 Log.i(TAG+".takePicture", "being called!");
> >                 mCamera.takePicture(null, null, mPictureCallback);
> >                 Log.i(TAG+".takePicture", "call ended!");
> >             }
>
> > 2. CamLayer.takePicture() will be called by external classes to start
>
> > 3. The problem is that at Android2.3.3, thetakePicturewill hang, so an
> > ANR problem is found. In /data/anr/traces.txt, below are found. As u can
> > see, the native_takePicture never returns.
>
> > DALVIK THREADS:
>
> > (mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
>
> > "main" prio=5 tid=1 NATIVE
>
> >   | group="main" sCount=1 dsCount=0 obj=0x40022170 self=0xce68
>
> >   | sysTid=2411 nice=0 sched=0/0 cgrp=default handle=-1345006464
>
> >   at android.hardware.Camera.native_takePicture(Native Method)
>
> >   at android.hardware.Camera.takePicture(Camera.java:746)
>
> >   at android.hardware.Camera.takePicture(Camera.java:710)
>
> >   at oms.cj.tube.camera.CamLayer.takePicture(CamLayer.java:256)
>
> >   at oms.cj.tube.camera.DefineColor.takePicture(DefineColor.java:61)
>
> >   at oms.cj.tube.camera.DefineColor.onKeyUp(DefineColor.java:71)
>
> >   at android.view.KeyEvent.dispatch(KeyEvent.java:1280)
>
> >   at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
>
> >   at
> > com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(Pho 
> > neWindow.java:16
> > 66)
> >   at
> > android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2571)
>
> >   at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2546)
>
> >   at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
>
> >   at android.os.Handler.dispatchMessage(Handler.java:99)
>
> >   at android.os.Looper.loop(Looper.java:123)
>
> >   at android.app.ActivityThread.main(ActivityThread.java:3691)
>
> >   at java.lang.reflect.Method.invokeNative(Native Method)
>
> >   at java.lang.reflect.Method.invoke(Method.java:507)
>
> >   at
> > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 
> > 841)
>
> >   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
>
> >   at dalvik.system.NativeStart.main(Native Method)
>
> > Is there anybody having the same problem? And know how to fix it?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" 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-developers?hl=en

Reply via email to