三星S4变焦不支持平滑变焦isSmoothZoomSupported()==假变焦、不支持、平滑、isSmoothZoomSupported

2023-09-06 23:05:09 作者:爷们不狠↘江山不稳

我试图来处理ZoomIn / ZoomOut在我的相机记录应用程序的S4变焦设备。因为它仅支持常规缩放,即 parameters.isZoomSupported()==真 parameters.isSmoothZoomSupported()==假,我已经使用 parameters.setZoom(mZoomVal); mCamera.setParameters(参数); 如常。 问题是变焦生涩,嘈杂,不流畅。 有谁知道如何处理变焦速度'S4变焦像它在三星相机的应用程序做了什么?

 公共布尔的onkeydown(INT键code,KeyEvent的事件){
    Log.v(的onkeydown键code =+键code +事件=+ event.toString());

    布尔处理= FALSE;
    开关(钥匙code){
    案例KeyEvent.KEY code_FOCUS:
        setAutoFocus();
        办理=真;
        打破;
    案例KeyEvent.KEY code_CAMERA:

        如果(event.getRepeatCount()== 0){
            如果(ISREC()){
                STO $ P $件(1,0);
            } 其他 {
                STARTREC();
            }
        }

        办理=真;
        打破;
    案例256://KeyEvent.KEY$c$c_CAMERA_ZOOM_RING_MOVE:
        办理=真;
        打破;
    案例261://KeyEvent.KEY$c$c_CAMERA_ZOOM_RING_SPEED2
        办理=真;
        打破;
    案例KeyEvent.KEY code_ZOOM_IN:
        setZoomIn();
        //自动对焦();
        办理=真;
        打破;
    案例KeyEvent.KEY code_ZOOM_OUT:
        setZoomOut();
        //自动对焦();
        办理=真;
        打破;
    }

    如果(处理)
        Log.v(的onkeydown处理案件!);
    其他
        返回super.onKeyDown(键code,事件);

    返回处理;
}
公众诠释setZoomIn(){
    如果(mCamera == NULL){
        返回0;
    }

    参数参数= mCamera.getParameters();
    名单<整数GT; zoom_list = parameters.getZoomRatios();
    如果(mZoomVal> = mZoomMax)
        返回zoom_list.get(mZoomMax);

    / *
    如果(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = FALSE;
    } * /


    mZoomVal ++;
    isFocused = FALSE;

    parameters.setZoom(mZoomVal);
    mCamera.setParameters(参数);

    mZoomVal = parameters.getZoom();

    返回zoom_list.get(mZoomVal);
}

公众诠释setZoomOut(){
    如果(mCamera == NULL){
        返回0;
    }

    参数参数= mCamera.getParameters();
    名单<整数GT; zoom_list = parameters.getZoomRatios();
    如果(mZoomVal&所述; = 0)
        返回zoom_list.get(0);

    / *
    如果(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = FALSE;
    } * /


    mZoomVal--;
    isFocused = FALSE;

    parameters.setZoom(mZoomVal);
    mCamera.setParameters(参数);

    mZoomVal = parameters.getZoom();

    返回zoom_list.get(mZoomVal);
}

公共无效setAutoFocus(){
    如果(mCamera == NULL){
        返回;
    }

    如果(isFocused)
        返回;

    如果(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = FALSE;
    }

    isAutoFocusing = TRUE;
    mCamera.autoFocus(新Camera.AutoFocusCallback(){

        @覆盖
        公共无效onAutoFocus(布尔成功,相机摄像头){
            Log.v(onAutoFocus成功=+成功);
            isAutoFocusing = FALSE;
            isFocused =成功;
        }
    });

}
 

解决方案

我已经找到了平滑控制快门镜头三星S4放大设备解决方案。 在设置设备的智能模式: parameters.set(模式,智能汽车);

对于放大启动: parameters.set(放大作用,光远程启动);

对于缩小启动: parameters.set(放大作用,光宽启​​动);

对于缩放动作停止: parameters.set(放大作用,缩放停);

快门速度: parameters.set(变焦速度,1); // 1,2,...

不要忘记保存参数的摄像头实例 mCamera.setParameters(参数);

这工作正常,在我的设备,快门现在是无声的流畅。 :) 问候。

强劲双四核芯 三星GALAXY S4宁德5100

I've tried to handle ZoomIn/ZoomOut at 's4 zoom' device in my camera record application. Because it does support only regular zoom, i.e parameters.isZoomSupported()==true, parameters.isSmoothZoomSupported()==false, I have used parameters.setZoom(mZoomVal); mCamera.setParameters(parameters); as usual. Problem is Zoom is jerky, noisy and not smooth. Does anybody know how to handle Zoom speed in 's4 zoom' as like it was done in Samsung camera app?

public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.v("onKeyDown keyCode="+keyCode+" event="+event.toString());

    boolean handled = false;
    switch(keyCode){
    case KeyEvent.KEYCODE_FOCUS:
        setAutoFocus();
        handled = true;
        break;
    case KeyEvent.KEYCODE_CAMERA:

        if(event.getRepeatCount() == 0){
            if (isRec()) {
                stopRec(1, 0);
            } else {
                startRec();
            }
        }

        handled = true;
        break;
    case 256: //KeyEvent.KEYCODE_CAMERA_ZOOM_RING_MOVE:
        handled = true;
        break;
    case 261: //KeyEvent.KEYCODE_CAMERA_ZOOM_RING_SPEED2
        handled = true;
        break;
    case KeyEvent.KEYCODE_ZOOM_IN:
        setZoomIn();
        //AutoFocus();
        handled = true;
        break;
    case KeyEvent.KEYCODE_ZOOM_OUT:
        setZoomOut();
        //AutoFocus();
        handled = true;
        break;
    }

    if(handled)
        Log.v("onKeyDown HANDLED!");
    else
        return super.onKeyDown(keyCode, event);

    return handled;
}
public int setZoomIn(){
    if(mCamera == null){
        return 0;
    }

    Parameters parameters = mCamera.getParameters();
    List<Integer> zoom_list = parameters.getZoomRatios();
    if(mZoomVal >= mZoomMax)
        return zoom_list.get(mZoomMax);

    /*
    if(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = false;
    }*/


    mZoomVal++;
    isFocused = false;

    parameters.setZoom(mZoomVal);
    mCamera.setParameters(parameters);

    mZoomVal = parameters.getZoom();

    return zoom_list.get(mZoomVal);
}

public int setZoomOut(){
    if(mCamera == null){
        return 0;
    }

    Parameters parameters = mCamera.getParameters();
    List<Integer> zoom_list = parameters.getZoomRatios();
    if(mZoomVal <= 0)
        return zoom_list.get(0);

    /*
    if(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = false;
    }*/


    mZoomVal--;
    isFocused = false;

    parameters.setZoom(mZoomVal);
    mCamera.setParameters(parameters);

    mZoomVal = parameters.getZoom();

    return zoom_list.get(mZoomVal);
}

public void setAutoFocus(){
    if(mCamera == null){
        return;
    }

    if(isFocused)
        return;

    if(isAutoFocusing){
        mCamera.cancelAutoFocus();
        isAutoFocusing = false;
    }

    isAutoFocusing = true;
    mCamera.autoFocus(new Camera.AutoFocusCallback() {

        @Override
        public void onAutoFocus(boolean success, Camera camera) {
            Log.v("onAutoFocus success="+success);
            isAutoFocusing = false;
            isFocused = success;
        }
    });

}

解决方案

I have already found solution for Smooth control of Shutter lens on Samsung S4 Zoom device. Set device in smart mode: parameters.set("mode", "smart-auto");

For Zoom In start: parameters.set("zoom-action", "optical-tele-start");

For Zoom Out start: parameters.set("zoom-action", "optical-wide-start");

For Zoom action stop: parameters.set("zoom-action", "zoom-stop");

Shutter speed: parameters.set("zoom-speed", 1); //1,2,...

Don't forget save parameters in the Camera instance mCamera.setParameters(parameters);

This works fine in my device, shutter now is silent and smooth. :) Regards.