安卓自定义相机应用程序中的缩放功能无法正常工作

3

我有这个函数来为我的相机应用添加缩放控制。这个函数是从surfaceChanged()中调用的。

但是,在许多设备上,按+/-进行缩小/放大没有任何效果。这些设备支持缩放。同时,该代码在Sony Xperia上运行良好,所以代码必须是正确的。

请帮助我修复它。我需要做更多的事情吗?

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

    if (params.isZoomSupported()) {
        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++;
                    camera.startSmoothZoom(currentZoomLevel);
                }
            }
        });

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

3
根据文档,您应该检查“params.isSmoothZoomSupported()”以查看是否可用“Camera.startSmoothZoom(..)”。 - harism
1
是的,那就是问题所在。Smoothzoom不被支持。因此,我们需要调用setZoom()而不是startSmoothZoom(),然后再调用camera.setparams。请将您的评论添加为答案,我会接受它。谢谢。 - png
Harism,请提供完整的代码,如果它适用于自定义相机。 - Balwinder Singh
Preetha,请提供完整的代码,以便定制相机。 - Balwinder Singh
@preetha 你好,我也想在我的应用程序中添加缩放功能,我已经创建了自定义相机,但是我有一些小问题,你能帮我吗? - Android
@preetha..我也遇到了同样的问题...只支持Zoom而不是SmoothZoom..谢谢 :) - androidDev
1个回答

1
我解决了这个问题。
不要使用startSmoothZoom()方法。
Camera.Parameters params = camera.getParameters();
params.setZoom(zoom_value);
camera.setParameters(params);

请查看此链接:http://stackoverflow.com/questions/16482825/android-custom-camera-zoom-not-working/42473465#42473465 - Hantash Nadeem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接