2013-01-10 81 views
6

我需要一些關於Android的MediaRecorder類的幫助。Android getSupportedVideoSizes allways返回null

我嘗試使用getSupportedVideoSizes來獲取支持的視頻大小列表,但它總是返回null。

在測試中,下列設備返回nullgetSupportedVideoSizes被查詢:

  • 銀河NEXUS(的Android 4.2)
  • HTC一個贈送(是Android 4.4.2)
  • HTCEVOV4G(4.0.3的Android )
+0

下面是關於主題的一些討論http://stackoverflow.com/questions/5934829/how-to-get-supported-video-camera-resolutions-in-android。 – harism

+0

嗨,感謝您的幫助,但不幸的是我看到了這篇文章。但我怎樣才能設置單獨的預覽和視頻輸出?這是我無法理解...因爲他們都使用該函數getSupportedVideoSizes但對我來說,它一直返回null ... – cataHHH

+0

你看到YShinkarev剩下的最後一個評論嗎?有人提到,在某些情況下''getSupportedVideoSizes''按設計返回null。 – harism

回答

33

The documentation for Camera.getSupportedVideoSizes()讀取,

返回
如果相機具有單獨的預覽和視頻輸出,Size對象的列表;否則,返回null。

不完全清楚。但是,這意味着如果Camera.getSupportedVideoSizes()返回null,那麼相機支持的預覽尺寸和視頻尺寸是相同的;在這種情況下,要獲取支持的視頻大小列表,請使用Camera.getSupportedPreviewSizes()

示例代碼:

public List<Size> getSupportedVideoSizes(Camera camera) { 
    if (camera.getParameters().getSupportedVideoSizes() != null) { 
     return camera.getParameters().getSupportedVideoSizes(); 
    } else { 
     // Video sizes may be null, which indicates that all the supported 
     // preview sizes are supported for video recording. 
     return camera.getParameters().getSupportedPreviewSizes(); 
    } 
} 
+4

android文檔中的描述是徹頭徹尾的荒謬! –

+0

好的答案和解釋......這是一個容易被忽視的小問題,特別是當您的開發設備返回getSupportedVideoSizes()的列表時。結果三星和其他人返回null,所以我的應用程序不得不猜測要使用的圖片大小,這導致所有設備不支持的設置。當使用getSupportedPreviewSizes()來處理空情況時,它現在穩定運行。 – Wookie

+0

可笑的文檔需要這種令人敬畏的挖掘。謝謝+1;) –

0

或者只是使用

mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 

自動設定最佳分辨率。