android 自定义相机 变焦问题 的代码实现

2025-12-17 03:30:25
推荐回答(1个)
回答1:

我见过其他的几个问题关于这个问题但都不能解决我的问题。我有一个自定义相机应用程序,做工精细,一切,但缩放按钮。这是我使用 SDK min 8 目标 14 的代码:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (isPreviewing){
camera.stopPreview();
}

Camera.Parameters p = camera.getParameters();
p.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
p.setColorEffect(effect);

zoomControls = (ZoomControls) findViewById(R.id.zoomControls);

if (p.isZoomSupported()) {
maxZoomLevel = p.getMaxZoom();
Toast.makeText(PictureTaker.this, String.valueOf(maxZoomLevel),Toast.LENGTH_LONG).show();
zoomControls.setIsZoomInEnabled(true);
zoomControls.setIsZoomOutEnabled(true);

zoomControls.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View v) {
if (currentZoomLevel < maxZoomLevel) {
currentZoomLevel++;
camera.startSmoothZoom(currentZoomLevel);
//Toast.makeText(PictureTaker.this, String.valueOf(currentZoomLevel),Toast.LENGTH_LONG).show();
}
}
});

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

camera.setParameters(p);

try {
camera.setPreviewDisplay(holder);
} // end try
catch (IOException e) {
Log.v(TAG, e.toString());
} // end catch

camera.startPreview(); // begin the preview
isPreviewing = true;
}

SetColorEffect 从选项菜单来,十分管用。我知道 isZoomSupported 和 getMaxZoom 的工作,因为烤面包机显示"59",当代码运行时,但什么都不做缩放按钮。这是从 XML 俯仰
android:id="@+id/zoomControls"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="17dp"
android:baselineAligned="false"
android:gravity="center_horizontal"
android:orientation="horizontal" />

我有所有必要的权限在清单中,在 LogCat 中显示没有错误。不知道我做错了。我举杯,第二如果添加到报告 currentZoomLevel 正在更改时按下的按钮,它显示的值获取递增一每个时间。我也尝试不使用 startSmoothZoom 和只设置与缩放
p.setZoom(currentZoomLevel); or p.setZoomLevel(15);

和既不一个工程也。我的手机 HTC 不可思议不会有完美工作变焦在其本机摄像头应用程序上。如果我注释掉的代码俯仰部分,一切工作罚款和所有其他功能的自定义照相机工作正常甚至用在那里的俯仰代码,它只是不会放大。