2011-01-22 161 views
0

在實施SurfaceHolder.Callback,一些在線教程提示(實際上,我發現這是谷歌在API演示寫)安卓:camera.setParameter問題

public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
     Parameters params = camera.getParameters(); 
     params.setPreviewSize(width, height); 
     camera.setParameters(params); 
     camera.startPreview(); 
    } 

然而,這是不實際的。在真實設備上,像這樣的代碼可能會在camera.setParameter(params)上引發異常,因爲設備可能不支持指定的高度和寬度。

看完一些Q後&就像在stackoverflow上一樣,我明白了爲什麼這是不對的。那些帖子說我應該找一個最適合屏幕的。然後我決定使用params.getSupportedPreviewSizes();打印我的手機(HTC Magic,android 2.1)支持的尺寸表。得到這些,不管手機的方向如何。

h:720 , w:1280 
h:480 , w:800 
h:480 , w:720 
h:480 , w:640 
h:432 , w:576 
h:320 , w:480 
h:240 , w:400 
h:288 , w:384 
h:288 , w:352 
h:240 , w:320 
h:272 , w:272 
h:240 , w:240 
h:160 , w:240 
h:144 , w:176 

畢竟,我對如何找到最適合屏幕的尺寸沒有任何線索。我現在對什麼是正確的程序感到困惑。我認爲這個計劃應該是相當普遍的,我不必自己想出一個。

任何人都可以幫助我,並發表一篇寫得好的public void surfaceChanged樣本嗎?

謝謝!

回答

0

我所知道的是,其寬度和高度作爲回調參數傳遞的是在運行時計算的SurfaceHolder。所以你不可能得到例外。

+0

我真的明白了。因爲這個參數是SurfaceHolder的參數,所以我打算在相機上設置它。 – Haozhun 2011-01-22 19:10:49