变焦控制相机未在Android平台 [英] Zoom Control in Camera is not working in Android

查看:113
本文介绍了变焦控制相机未在Android平台的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在自定义相机使用的工作表面观在我的应用程序,还录制视频屏幕捕获。

我期待实现缩放控制在我的相机code,但没有得到成功。

获得这个日志变焦:

  E / Adreno200的-ES20(12756):其中,qgl2DrvAPI_glBufferSubData:709计算值:GL_INVALID_OPERATION

我使用低于code:

/ **
 * setZoomControl
 * @参数PARAMS
 * /

 公共无效setZoomControl(Camera.Parameters PARAMS){
    paramtrs =参数;
    ZoomControls zoomControls =(ZoomControls)findViewById(R.id.zoomcontrols);    如果(params.isZoomSupported()){
        最终诠释maxZoomLevel = paramtrs.getMaxZoom();
        Log.i(最大ZOOM,是+ maxZoomLevel);        zoomControls.setIsZoomInEnabled(真);
        zoomControls.setIsZoomOutEnabled(真);        zoomControls.setOnZoomInClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
                INT currentZoomLevel = 0;
                如果(currentZoomLevel< maxZoomLevel){
                    currentZoomLevel ++;
                    camera.startSmoothZoom(currentZoomLevel);
                }
            }
        });        zoomControls.setOnZoomOutClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
                INT currentZoomLevel = 0;
                如果(currentZoomLevel大于0){
                    currentZoomLevel--;
                    camera.startSmoothZoom(currentZoomLevel);
                }
            }
        });
    }其他
        zoomControls.setVisibility(View.GONE);
}

请给我建议什么在我的code发生。


解决方案

  

您可以使用此code


 如果(params.isZoomSupported()){
        最终诠释maxZoomLevel = params.getMaxZoom();
        Log.i(最大ZOOM,是+ maxZoomLevel);
        zoomControls.setIsZoomInEnabled(真);
        zoomControls.setIsZoomOutEnabled(真);        zoomControls.setOnZoomInClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
                如果(currentZoomLevel< maxZoomLevel){
                    currentZoomLevel ++;
                    //mCamera.startSmoothZoom(currentZoomLevel);
                    params.setZoom(currentZoomLevel);
                    mCamera.setParameters(PARAMS);
                }
            }
        });        zoomControls.setOnZoomOutClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
                如果(currentZoomLevel大于0){
                    currentZoomLevel--;
                    params.setZoom(currentZoomLevel);
                    mCamera.setParameters(PARAMS);
                }
            }
        });
    }
    其他
        zoomControls.setVisibility(View.GONE);

I am working on Custom Camera using Surface view in my application, also recording Video with screen Capture.

I am looking to implement Zoom Control in my Camera Code but not getting success.

Getting this log while Zooming:

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

I am using below code:

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

Please suggest me whats happening in my code.

解决方案

You can use this code

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

这篇关于变焦控制相机未在Android平台的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆