2011-11-22 85 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/) –