簡體   English   中英

摩托羅拉Droid上的攝像頭預覽

[英]Camera Preview on Motorola Droid

我們的應用程序顯示相機預覽,它似乎在除摩托羅拉Droid之外的所有手機上都能正常工作,我們在設置相機參數時會遇到運行時異常:

    java.lang.RuntimeException: setParameters failed
   at android.hardware.Camera.native_setParameters(Native Method)
   at android.hardware.Camera.setParameters(Camera.java:611)
   at com.highwaynorth.andrometer.CameraPreviewSurfaceView.surfaceChanged(CameraPreviewSurfaceView.java:57)
   at android.view.SurfaceView.updateWindow(SurfaceView.java:460)
   at android.view.SurfaceView.dispatchDraw(SurfaceView.java:287)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1525)

這是surfaceChanged()的代碼,它主要來自APIDemos

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
   // Now that the size is known, set up the camera parameters and begin
   // the preview.
   Camera.Parameters parameters = mCamera.getParameters();
   parameters.setPreviewSize(w, h);
   parameters.setPictureFormat(PixelFormat.JPEG);
   parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
   parameters.setPreviewFrameRate(1);
   mCamera.setParameters(parameters);
   mCamera.startPreview();

}

有誰知道我們如何設置會導致摩托羅拉Droid上的異常的參數有什么問題?

我可以告訴你,你的問題是以下兩行之一:

parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);

我知道這一點,因為其余的代碼就像我在書中的一些相機樣本中做的那樣,並且它們已經在DROID上進行了測試。

您可能希望在Camera.Parameters對象上使用getSupportedPreviewFormats()getSupportedPreviewFrameRates() ,以查看相關設備是否支持您搜索的格式和幀速率。 請注意,這些方法對於Android 2.0來說是新手,因此它們可以在DROID /里程碑(以及可能是Nexus One)上工作,但在撰寫本文時沒有別的。 如果您要定位較舊的Android API版本,則需要使用反射或一些類加載技巧來使這些方法在Android 2.0上運行,並在舊版本上跳過。

您可能想要調查的另一件事:

我正在遇到運行Motoblur並更新到2.3的設備的問題(特別是Droid2,DroidX和Atrix與Verizon)。

Camera參數很好,但在layout / capture.xml中,ViewfinderView的背景設置為透明:

<com.google.zxing.client.android.ViewfinderView
   android:id="@+id/viewfinder_view" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:background="@color/transparent"
/>

好吧,看起來Android 2.3上的Motoblur透明並不透明......

去除

android:background="@color/transparent"

從ViewFinder解決了我的問題。

您應該檢查可用的預覽格式,以確保您可以在盡可能多的設備上運行。

看起來DROID支持PixelFormat.YCbCr_422_I PixelFormat.YCbCr_420_SP

您可以使用以下方法獲取可用格式列表。 getSupportedPreviewFormats()

像素格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM