2011-11-22 87 views
0

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

例如,我离开了我的尝试,使用意图从相机拍摄照片。因为只有有限的一组设备的行为如预期。

另一个例子是,当我使用一个字节数组从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 

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

所以我想知道是否有任何种类的知识库/常见问题汇编这些问题?如果没有,让我们在这里发布我们遇到的问题?

回答

1

我不知道。但是你正在接收的字节数组是mmap,并且在控制另一个(本地)应用程序(因此数据可能会在相机应用程序自行决定,如果它重新使用此缓冲区)

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

至于预览大小 - 他们是一团糟。即使你得到这个列表,并不是所有的解决方案都支持(我在更大的分辨率上得到了段错误 - 不知何故预览缓冲区不适合)。唯一的方法是通过依次激活它们并等待反馈来确定是否实际支持预览大小。

+0

是的,但我正在寻找一个可以找到所有这些技巧的地方(如支持的分辨率和其他许多技巧) 。因为每十五米就是一次重大的打击。也许我们可以在这里发布所有奇怪的HW(而不仅仅是)相关问题? –

+0

是的,我们可以做到。我在android中使用的java中开发了OCR库 - 我将一些相机实用程序类放在一起,封装了这个逻辑。 (请参阅演示模块:http://sourceforge.net/projects/javaocr/)我在2个应用程序中使用它,但尚未收到用户投诉(http://www.pribluda.de/android/ocrcall/) –