0

我花了很多时间调试只能在特定设备上重现的不同问题。

例如,我尝试使用 Intent 从相机拍照。因为只有有限的一组设备按预期运行。

另一个例子是当我使用 onPictureTakenCallback 中的字节数组时:

public void onPictureTaken(byte[] data, Camera camera) {
    byte[] tempData = new byte[data.length];
    System.arraycopy(data, 0, dataTemp, 0, data.length);
    ///...
}

因此,如果我不制作副本,而是稍后使用原始“数据”数组,那么我会遇到麻烦,因为某些设备会在一段时间后清理该数组。但是其他设备不进行此类清洁,因此无需复制即可完美运行。

再举一个例子:某些设备在以下情况下返回 null:

Camera.Parameters params = camera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
// sizes is null

但是大多数设备(我认为)都会返回支持的尺寸列表。

所以我想知道是否有任何类型的知识库/常见问题解答这些问题?如果没有,让我们在这里发布我们面临的问题?

4

1 回答 1

1

我对此一无所知。但是您收到的字节数组是映射的,并且可以控制另一个(本机)应用程序(因此数据可能会由相机应用程序自行决定,如果它重用此缓冲区)

最好的方法是尽快将其复制到安全位置

至于预览尺寸 - 它们一团糟。即使您获得此列表,实际上也并非所有分辨率都受支持(我在更大的分辨率上遇到了段错误 - 不知何故预览缓冲区不适合)。唯一的方法是通过依次激活它们并等待异常来探测是否实际支持此预览大小

于 2011-11-22T09:42:31.093 回答