Android Custom Camera Zoom Not Working
Solution 1:
Figured it out and maybe this can help some of the other people who have been having similar problems. It was the smoothzoom. Guess my HTC doesn't support this.
@OverridepublicvoidsurfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (isPreviewing){
camera.stopPreview();
}
p = camera.getParameters();
p.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
p.setColorEffect(effect);
if (p.isZoomSupported() && p.isSmoothZoomSupported()) {
//most phones
maxZoomLevel = p.getMaxZoom();
zoomControls.setIsZoomInEnabled(true);
zoomControls.setIsZoomOutEnabled(true);
zoomControls.setOnZoomInClickListener(newOnClickListener() {
publicvoidonClick(View v) {
if (currentZoomLevel < maxZoomLevel) {
currentZoomLevel++;
camera.startSmoothZoom(currentZoomLevel);
}
}
});
zoomControls.setOnZoomOutClickListener(newOnClickListener() {
publicvoidonClick(View v) {
if (currentZoomLevel > 0) {
currentZoomLevel--;
camera.startSmoothZoom(currentZoomLevel);
}
}
});
} elseif (p.isZoomSupported() && !p.isSmoothZoomSupported()){
//stupid HTC phones
maxZoomLevel = p.getMaxZoom();
zoomControls.setIsZoomInEnabled(true);
zoomControls.setIsZoomOutEnabled(true);
zoomControls.setOnZoomInClickListener(newOnClickListener() {
publicvoidonClick(View v) {
if (currentZoomLevel < maxZoomLevel) {
currentZoomLevel++;
p.setZoom(currentZoomLevel);
camera.setParameters(p);
}
}
});
zoomControls.setOnZoomOutClickListener(newOnClickListener() {
publicvoidonClick(View v) {
if (currentZoomLevel > 0) {
currentZoomLevel--;
p.setZoom(currentZoomLevel);
camera.setParameters(p);
}
}
});
}else{
//no zoom on phone
zoomControls.setVisibility(View.GONE);
}
camera.setParameters(p);
try {
camera.setPreviewDisplay(holder);
} // end trycatch (IOException e) {
Log.v(TAG, e.toString());
} // end catch
camera.startPreview(); // begin the preview
isPreviewing = true;
} // end method surfaceChanged
This lets my HTC zoom in steps. The key was setting the camera's parameters after each button click. You could probably set the currentZoomLevel to any number you want, based on the maxZoomLevel, (my HTC is 59 but my Droid 4 is only 15), during the clicks of the ZoomControls to make the device zoom in and out faster. Might be a tidier way to code this, should probably put some checks in to make sure maxZoomSize doesn't return a NULL or something, but it's working on multiple devices.
Solution 2:
Its simple forget about startSmoothZoom() method
follow this:
Camera.Parameters params = camera.getParameters();
params.setZoom(zoom_value);
camera.setParameters(params);
Solution 3:
params.setZoom(currentZoomLevel); camera.setParameters(params); code also work at my Samsung G3 phone.
Post a Comment for "Android Custom Camera Zoom Not Working"