【问题标题】:Zoom Control in Camera is not working in Android相机中的缩放控制在 Android 中不起作用
【发布时间】:2013-08-18 16:15:40
【问题描述】:

我正在使用我的应用程序中的 Surface 视图开发自定义相机,还使用屏幕捕获录制视频。

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

在缩放时获取此日志:

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

我正在使用以下代码:

/** * 设置缩放控制 * @param 参数 */

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);
}

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

【问题讨论】:

    标签: android camera zooming


    【解决方案1】:

    您可以使用此代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2015-10-02
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多