2012-03-25 53 views
0

如果我在HTC Hero(CyanogenMod 6.1.0)上運行這個演示程序,我從Camera.startPreview()方法中得到一個RuntimeException。HTC Hero上的Camera PreviewDemo

這似乎是這裏所描述的同樣的問題:

Android Camera will not work. startPreview fails

換句話說,你需要設置預覽大小時切換左右的寬度和高度。確實如此,但是會破壞其他設備上的演示。

現在,我理解演示的目的是展示如何讓攝像頭預覽啓動並運行(所以這個問題超出了它的範圍),但我想知道是否有一個乾淨的解決方法,因爲我不想把「如果HTC_HERO」式的邏輯在我的代碼(反正,我敢肯定,其他設備也會有類似的行爲)?

一個黑客可能會捕獲異常,然後再調用setPreviewSize()方法交換PARAMS,但我希望能找到一個更好的方式。

+0

OP所指的「演示」是:https://github.com/commonsguy/cw-advandroid/tree/master/Camera/Preview – CommonsWare 2012-03-25 16:38:39

+0

嗯,我必須道歉,因爲我不能再現問題了。事實上,它似乎每次都是第一次工作。我只能假設通用的「startPreview失敗」的RuntimeException正在被別的東西造成的。出於興趣,高級Android開發書討論了需要在橫向模式下進行定向的Camera預覽邏輯中的錯誤。我有興趣瞭解更多關於這方面的信息? – 2012-03-25 16:55:39

+0

至少通過1.x,你必須在任何涉及「攝像頭」的任何環境中工作。關閉我的頭頂,這是固定的,當我不記得。 – CommonsWare 2012-03-25 16:56:22

回答

1

我不想在代碼中放置「if HTC_HERO」風格的邏輯(無論如何,我確定其他設備會有類似的行爲)?

在某種程度上,如果您試圖達到運行100%任意ROM mod的設備的100%,這是不可避免的,因爲錯誤將會比比皆是。

一個黑客可能會捕獲異常,然後用交換的參數重新調用setPreviewSize()方法,但我希望找到一個更好的方法。

從理論上講,應該有一些通用的預覽尺寸代碼來確定正確的尺寸並相應地配置SurfaceView。如果AOSP相機應用的代碼是任何跡象顯示,這個代碼將是巨大的,它仍然不可能在各處都起作用(例如,不合規格的設備或ROM MODS違反了「萬能」的解決方案的作者認爲任何假設)。

您可能希望檢查ZXing的條形碼掃描儀等項目,並瞭解他們如何解決問題。