android - 三星s4 zoom不支持平滑缩放isSmoothZoomSupported()==false

标签 android android-camera

我已经尝试在我的相机记录应用程序中处理“s4 缩放”设备的放大/缩小。因为它只支持常规缩放,即 parameters.isZoomSupported()==trueparameters.isSmoothZoomSupported()==false,我使用了 parameters.setZoom (mZoomVal); mCamera.setParameters(parameters); 像往常一样。 问题是 Zoom 不稳定、嘈杂且不流畅。 有人知道如何像在三星相机应用程序中那样处理“s4 变焦”中的变焦速度吗?

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

}

最佳答案

我已经找到了在 Samsung S4 Zoom 设备上平滑控制快门镜头的解决方案。 将设备设置为智能模式:parameters.set("mode", "smart-auto");

对于放大开始:parameters.set("zoom-action", "optical-tele-start");

对于缩小开始:parameters.set("zoom-action", "optical-wide-start");

对于缩放 Action 停止:parameters.set("zoom-action", "zoom-stop");

快门速度:parameters.set("zoom-speed", 1);//1,2,...

不要忘记在 Camera 实例中保存参数 mCamera.setParameters(parameters);

这在我的设备上运行良好,快门现在安静且流畅。 :) 问候。

关于android - 三星s4 zoom不支持平滑缩放isSmoothZoomSupported()==false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712785/

相关文章:

android - Android 中的相机/图片方向

Android - 如何仅在退出并返回应用程序时跟踪应用程序恢复?

android - 升级 Android Gradle 插件 7.1 后无法加载类 AndroidComponentsExtension

android - 从纵向 Activity 中以横向方式打开相机时上下文为空

android 在相机上显示矩形

java - Android 相机应用拍照后延迟

android - LayoutTransitions 不适用于可见性更改

java - 无法在 Android Studio 中安装或导入 Volley

android - 跨平台 openGLES?

android - android中的地理标记