Zoom personalizado da câmera do Android não funciona

Eu tenho visto várias outras questões sobre este assunto, mas nenhuma parece resolver o meu problema. Eu tenho um aplicativo de câmera personalizado que está funcionando bem, tudo, mas os botões de zoom. este é o meu código usando o SDK min 8 target 14:

@Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            if (isPreviewing){ 
                camera.stopPreview(); 
            }

            Camera.Parameters p = camera.getParameters();
            p.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
            p.setColorEffect(effect); 

            zoomControls = (ZoomControls) findViewById(R.id.zoomControls);

            if (p.isZoomSupported()) {
                maxZoomLevel = p.getMaxZoom();
                Toast.makeText(PictureTaker.this, String.valueOf(maxZoomLevel),Toast.LENGTH_LONG).show();
                zoomControls.setIsZoomInEnabled(true);
                zoomControls.setIsZoomOutEnabled(true);

                zoomControls.setOnZoomInClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        if (currentZoomLevel < maxZoomLevel) {
                            currentZoomLevel++;
                            camera.startSmoothZoom(currentZoomLevel);
                            //Toast.makeText(PictureTaker.this, String.valueOf(currentZoomLevel),Toast.LENGTH_LONG).show();
                        }
                    }
                });

                zoomControls.setOnZoomOutClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        if (currentZoomLevel > 0) {
                            currentZoomLevel--;
                            camera.startSmoothZoom(currentZoomLevel);
                        }
                    }
                });
            } else {
                zoomControls.setVisibility(View.GONE);
            }

            camera.setParameters(p); 

            try {
                camera.setPreviewDisplay(holder); 
            } // end try
            catch (IOException e) {
                Log.v(TAG, e.toString());
            } // end catch

            camera.startPreview(); // begin the preview
            isPreviewing = true;
        }

O setColorEffect está vindo do menu de opções e funciona perfeitamente. Eu sei que isZoomSupported e getMaxZoom estão funcionando porque o Toast exibe um "59" quando o código é executado, mas os botões de zoom não fazem nada. Este é o zoomControl do XML

<ZoomControls
 android:id="@+id/zoomControls"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:layout_marginBottom="17dp"
 android:baselineAligned="false"
 android:gravity="center_horizontal"
 android:orientation="horizontal" />

Eu tenho todas as permissões necessárias no Manifesto e nenhum erro é exibido no LogCat. Não tenho certeza do que estou fazendo de errado. Eu adicionei um segundo Toast para relatar se o atual ZoomLevel está sendo alterado quando o botão é pressionado e ele mostra o valor sendo incrementado por um de cada vez. Eu também tentei não usar startSmoothZoom e apenas definir o zoom com

p.setZoom(currentZoomLevel); or p.setZoomLevel(15); 

e nem um deles trabalha. Meu telefone, o HTC Incredible, tem um zoom perfeitamente funcional em seu aplicativo de câmera nativo. Se eu comentar as partes zoomControl do código, tudo funciona bem e todos os outros recursos da câmera personalizada funcionam bem, mesmo com o código zoomControl lá, ele simplesmente não faz zoom.

questionAnswers(3)

yourAnswerToTheQuestion