我只是设置了一个非常基本的相机预览,可以全屏显示相机。我比较了我的应用程序和Android相机的平滑度,并认为Android相机看起来更顺畅。
为什么会这样?是否有任何特殊技巧可以提高相机预览性能?
答案 0 :(得分:7)
前一段时间我遇到了同样的问题,结果发现它与相机分辨率有关。有可能您的Camera
正在使用最大可用分辨率进行初始化,这可能会降低预览期间的性能。尝试使用类似的东西设置较低的picture size
.-
Camera.Parameters params = camera.getParameters();
params.setPictureSize(1280, 960);
camera.setParameters(params);
请注意,您需要设置可用的图片大小。您可以使用
检查可用尺寸camera.getParameters().getSupportedPictureSizes();
希望它有所帮助。
修改强>
似乎使用不同于默认宽高比的图片尺寸,也会降低性能。这就是我选择pictureSize
.-
首先,我获得相机默认pictureSize
Camera.Parameters params = camera.getParameters();
defaultCameraRatio = (float) params.getPictureSize().width / (float) params.getPictureSize().height;
然后我得到一个符合相同比率的较低pictureSize
.-
private Size getPreferredPictureSize() {
Size res = null;
List<Size> sizes = camera.getParameters().getSupportedPictureSizes();
for (Size s : sizes) {
float ratio = (float) s.width / (float) s.height;
if (ratio == defaultCameraRatio && s.height <= PHOTO_HEIGHT_THRESHOLD) {
res = s;
break;
}
}
return res;
}
PHOTO_HEIGHT_THRESHOLD
是您要允许的最大高度。
答案 1 :(得分:2)
这个答案有点晚了,但在遇到同样的问题之后,我想我会分享我找到的东西。
我不仅无法匹配照相机的光滑度#34;而且我也无法匹配照相机的测光。与相机相比,我的实时预览要暗得多,特别是在光线不足的情况下。
我的解决方案最终是一个FPS问题,正如罗宾在早期评论中最初提出的那样。
Nexus 5上的默认预览FPS是静态15 FPS。股票Android应用程序检测并设置使用动态范围的预览FPS(只要该范围包括30fps)。在关联5上,该范围是7fps - > 30fps的。在低光照条件下,相机降至较低的FPS以保持预览明亮,而在明亮的条件下,它会以30 fps的速度跳跃。
来自股票android照片应用的相关代码:
以下是使用特定于Nexus 5的硬编码值(为简单起见)设置FPS 的相机api调用。
public void setFps(Camera camera) {
Camera.Parameters params = camera.getParameters();
params.setPreviewFpsRange(7000, 30000);
Camera.setParameters(params);
}