“在相机中缩放控制”在Android中无效

时间:2013-08-16 09:34:42

标签: android camera zooming

我正在使用我的应用程序中的Surface视图处理Custom Camera,同时使用屏幕Capture录制视频。

我希望在我的相机代码中实现缩放控制,但没有取得成功。

在缩放时获取此日志:

E/Adreno200-ES20(12756): <qgl2DrvAPI_glBufferSubData:709>: GL_INVALID_OPERATION

我正在使用以下代码:

/ **  * setZoomControl  * @param params  * /

public void setZoomControl(Camera.Parameters params) {
    paramtrs = params;
    ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);

    if (params.isZoomSupported()) {
        final int maxZoomLevel = paramtrs.getMaxZoom();
        Log.i("max ZOOM ", "is " + maxZoomLevel);

        zoomControls.setIsZoomInEnabled(true);
        zoomControls.setIsZoomOutEnabled(true);

        zoomControls.setOnZoomInClickListener(new OnClickListener() {
            public void onClick(View v) {
                int currentZoomLevel = 0;
                if (currentZoomLevel < maxZoomLevel) {
                    currentZoomLevel++;
                    camera.startSmoothZoom(currentZoomLevel);
                }
            }
        });

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

请建议我在我的代码中发生什么。

1 个答案:

答案 0 :(得分:4)

  

您可以使用此代码

if (params.isZoomSupported()) {
        final int maxZoomLevel = params.getMaxZoom();
        Log.i("max ZOOM ", "is " + maxZoomLevel);
        zoomControls.setIsZoomInEnabled(true);
        zoomControls.setIsZoomOutEnabled(true);

        zoomControls.setOnZoomInClickListener(new OnClickListener(){
            public void onClick(View v){
                if(currentZoomLevel < maxZoomLevel){
                    currentZoomLevel++;
                    //mCamera.startSmoothZoom(currentZoomLevel);
                    params.setZoom(currentZoomLevel);
                    mCamera.setParameters(params);
                }
            }
        });

        zoomControls.setOnZoomOutClickListener(new OnClickListener(){
            public void onClick(View v){
                if(currentZoomLevel > 0){
                    currentZoomLevel--;
                    params.setZoom(currentZoomLevel);
                    mCamera.setParameters(params);
                }
            }
        });    
    }
    else
        zoomControls.setVisibility(View.GONE);