2010-04-12 182 views
2

我是新來的。我一直在嘗試使用android模擬器創建視頻捕捉應用程序,但沒有取得太大的成功。據我所知,通過互聯網上的所有樣本和代碼(本網站和其他網站),我仍然錯過了一步。MediaRecorder準備失敗

我已經使用接近這個線程通過JonPro做出結束這個樣本的嘗試: http://www.anddev.org/viewtopic.php?p=24723#24723

,我已經試圖使我自己的,但媒體記錄器將在準備階段總是失敗最無益'準備失敗'的消息。我不知道我錯過了什麼。我似乎有正確的權限,並根據模擬器安裝SDCard。我應該使用2.1以外的android SDK版本嗎?

即使該論壇中的代碼聲稱工作,我發現這條線丟失: recorder.setCamera(camera);

但仍然沒有喜悅的記錄表明: 「無法獲取攝像機(0x16b70)參數」 時準備()被調用,但它仍然作爲預覽是好的,沒有什麼意義,但沒有記錄!任何幫助或建議將不勝感激。

編輯:任何人都可以確認這可以爲SDK和模擬器工作嗎?或者我在浪費時間試圖讓這個版本在這個版本中工作。我是否能夠獲得準備功能的源代碼,因爲它是OpenSource?

+0

我一直在試圖長時間錄製視頻沒有成功。作爲解決方案,我使用MediaStore.ACTION_CAPTURE_VIDEO意圖啓動內置應用程序來錄製和返回視頻。 – 2010-05-20 07:14:02

回答

5

此問題的解決辦法是在準備之前必須設置mCameraDevice.unlock()。在mCameraDevice.setPreviewDisplay(mHolder);之後設置它是很重要的。

例如:

/*--------------------------------------surfaceCreated---------------------------------------------*/ 
/** 
* Surface Created sets that the surface is created. 
*/ 
public void surfaceCreated(SurfaceHolder arg0) { 
    // TODO Auto-generated method stu1595 
     try { 
      Log.d(LOG_TAG, "setPreviewDisplay enter"); 
      mCameraDevice.setPreviewDisplay(mHolder); 
      Log.d(LOG_TAG, "setPreviewDisplay exit"); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     mCameraDevice.unlock(); 
     Log.d("*************", "***********unlock()****"); 
    isSurfaceCreated = true; 


} 

BR P.N

+0

對於攝像機必須在'prepare'之前和'setPreviewDisplay'之後解鎖的信息+1 – Jomoos 2012-02-13 07:53:21

0
recorder.setVideoSize(176, 144); 
recorder.setVideoFrameRate(20); 
recorder.setAudioChannels(1); 
recorder.setPreviewDisplay(mHolder.getSurface()); 

幫我。在調試過程中查看logcat