我只是设置了一个非常基本的相机预览,可以全屏显示相机。我比较了我的应用程序和安卓相机的流畅度,发现安卓相机看起来更流畅。
为什么会这样?有没有什么特别的技巧可以提高相机预览性能?
我只是设置了一个非常基本的相机预览,可以全屏显示相机。我比较了我的应用程序和安卓相机的流畅度,发现安卓相机看起来更流畅。
为什么会这样?有没有什么特别的技巧可以提高相机预览性能?
我前段时间遇到过同样的问题,结果证明与相机分辨率有关。您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
您要允许的最大高度在哪里。
这个答案有点晚了,但是在遇到同样的问题之后,我想我会分享我的发现。
我不仅无法匹配库存相机的“平滑度”,而且我也无法匹配库存相机的测光。与普通相机相比,我的实时预览要暗得多,尤其是在光线不足的情况下。
我的解决方案最终是一个 FPS 问题,正如 Robin 在早期评论中最初提出的那样。
Nexus 5 上的默认预览 FPS 是静态 15 FPS。股票 android 应用程序检测并设置使用动态范围的预览 FPS(只要该范围包括 30fps)。在 nexus 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);
}