2010-07-21 234 views
1

我正在寫一個程序來學習Android相機功能。 現在,我有一些關於相機預覽操作的問題:Android相機預覽問題

我的程序將在主Activity(ActivityMain)的onCreate()函數中創建一個surfaceview對象,然後將其設置爲內容。

super.onCreate(savedInstanceState); 

    m_surface = new MyCameraSurface(this);   
    // remove title bar 
    requestWindowFeature(Window.FEATURE_NO_TITLE);   
    setContentView(m_surface); 

然後startPreview()將在surfaceChanged()運行時被調用。

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
    Log.d(TAG, "*** surfaceChanged >>>>> ***"); 
    Log.d(TAG, "format=" + format + ", width=" + width + ", height=" + height); 

    if(m_control.IsCameraClosed() == false) { 
     if(m_control.IsPreviewRun() == false) {    
      m_control.startPreview(); 
     } 
    } 

    Log.d(TAG, "*** surfaceChanged <<<<< ***"); 
} 

我的問題是:在開始我的節目總是接收 「GetNextPreviewFrame錯誤/ 1幀:爲0x0,緩衝液:爲0x0」 錯誤:

07-22 06:47:46.727: DEBUG/MyCameraSurface(2313): *** surfaceChanged <<<<< *** 
07-22 06:47:46.735: DEBUG/SurfaceFlinger(1276): commiting overlay changes 
07-22 06:47:46.735: INFO/TIOverlay(1276): Nothing to do! 
07-22 06:47:46.735: INFO/ActivityManager(1276): Displayed activity com.hykwok.CameraEffect/.ActivityMain: 7866 ms (total 7866 ms) 
07-22 06:47:47.792: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0 
07-22 06:47:48.477: DEBUG/dalvikvm(1276): GC freed 2299 objects/119216 bytes in 143ms 
07-22 06:47:48.793: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0 
07-22 06:47:49.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0 
07-22 06:47:50.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0 

然而,當我切換到另一個活動(ActivityCameraSetting ),然後回到主要活動,輸出就會正常。

任何人都可以給我一些建議來解決它嗎?

我正在使用Motorola Milestone。固件版本爲2.1-update1,內部版本號爲SHOLS_U2.02.36.0。

我不確定其他Android手機是否有這個問題。

另一個問題是: 是否有可能通過預覽回調函數獲取預覽幀數據而不設置surfaceview保持器?

謝謝您的幫助。

源代碼可以從這裏下載:

Source codes link

+0

我遇到過摩托羅拉設備的類似問題。此外,有時候讓他們的手機很容易崩潰(我的意思是,不要在Java中引發異常,但也要重置設備)。我放棄了一些棘手的解決方法。根據我的理解,這絕對是摩托羅拉相機HAL中的BUG。不過,我可以觀察到這個問題仍然沒有解決在Droid X.我建議你嘗試其他設備(宏達電或三星) - 我要確保你的代碼將工作得很好。 – sandrstar 2011-06-16 06:15:04

回答

0

很難說這個問題到底是什麼沒有更多的日誌,我猜基礎上,爲0x0位,要麼你的面不完全創建,或者相機預覽尺寸設置不正確。我會建議的一個建議是:向您的MyCameraSurface構造函數添加:

m_holder.setFormat(PixelFormat.OPAQUE); 

。我收到了一些類似的模糊錯誤:CameraHal,這似乎解決了大部分錯誤。你可以發佈更多的日誌嗎?