Android 摩托罗拉Droid相机预览

Android 摩托罗拉Droid相机预览,android,camera,motorola,motorola-droid,Android,Camera,Motorola,Motorola Droid,我们的应用程序显示一个摄像头预览,除了摩托罗拉Droid,它似乎在所有手机上都能正常工作。在摩托罗拉Droid中,当我们设置摄像头参数时,会出现运行时异常: java.lang.RuntimeException: setParameters failed at android.hardware.Camera.native_setParameters(Native Method) at android.hardware.Camera.setParameters(Camera.j

我们的应用程序显示一个摄像头预览,除了摩托罗拉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()的代码,它主要来自

}


有人知道我们设置参数的方式有什么问题吗?这些参数可能会导致摩托罗拉Droid出现异常。

我可以告诉您,您的问题在于以下两条线路之一:

parameters.setPreviewFormat(PixelFormat.YCbCr_422_SP);
parameters.setPreviewFrameRate(1);
我知道这一点,因为剩下的代码就是我在书中的一些相机样本中所做的,它们已经在一个机器人上进行了测试


您可能希望在Camera.Parameters对象上使用
getSupportedPreviewFormats()
getSupportedPreviewFrameRates()
,以查看相关设备是否支持您寻求的格式和帧速率。请注意,这些方法对于Android2.0来说是新的,因此它们将在DROID/Milestone(以及NexusOne)上工作,但在撰写本文时,没有其他方法。如果您针对的是较旧的Android API版本,则需要使用反射或一些类加载技巧,以使这些方法在Android 2.0上工作,并在较旧的版本上被跳过。

您应该检查可用的预览格式,以确保可以在尽可能多的设备上运行

它看起来像是机器人的支架 PixelFormat.YCbCr_422_I PixelFormat.YCbCr_420_SP

您可以使用以下方法获取可用格式的列表。


您可能需要调查的另一件事:

对于运行Motoblur并更新到2.3的设备(尤其是Verizon的Droid2、DroidX和Atrix),我遇到了这个问题

摄像头参数正常,但在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"
/>

通过取景器解决了我的问题。

你说得对。我们将其更改为与APIDemos完全匹配,并删除了对setPictureFormat()、setPreviewFormat()和setPreviewFrameRate()的调用,现在它可以在Droid上正常工作。谢谢你详细的回答!
<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:background="@color/transparent"