Camera Preview no Motorola Droid

votos
3

Nosso aplicativo exibe uma visualização da câmera e parece funcionar bem em todos os telefones, exceto para o Motorola Droid, onde temos uma exceção tempo de execução quando definir os parâmetros da câmera:

    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)

Aqui está o código para surfaceChanged (), que é principalmente tomada de 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();

}

Alguém sabe o que está errado com a forma como estamos definindo os parâmetros que iria estar causando a exceção na Motorola Droid?

Publicado 10/01/2010 em 06:15
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Posso dizer-lhe o seu problema é com uma das duas linhas seguintes:

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

Eu sei que isso, porque o resto do que o código é apenas o que eu faço em algumas amostras câmera em meu livro, e eles já foram testados em uma DROID.

Você pode desejar usar getSupportedPreviewFormats()e getSupportedPreviewFrameRates()em seus Camera.Parameters objeto, para ver se o dispositivo em questão suporta o formato ea taxa de quadros que você procura. Note-se que esses métodos são novos para o Android 2.0, então eles vão trabalhar no Droid / Milestone (e, presumivelmente, o Nexus One), mas nada mais no momento da redação deste texto. Se você está direcionando versões mais antigas da API do Android, você vai precisar usar a reflexão ou alguns truques classloading para obter esses métodos para trabalhar no Android 2.0 e ser ignorada em versões mais antigas.

Respondeu 10/01/2010 em 13:18
fonte usuário

votos
0

Outra coisa que você pode querer investigar:

Eu estou enfrentando esse problema para dispositivos que executam Motoblur e atualizado para 2.3 (especialmente Droid2, DroidX e Atrix com a Verizon).

Os parâmetros da câmara eram bons, mas no layout / capture.xml o fundo da ViewfinderView definiu como transparente:

<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"
/>

Bem, parece que transparente para Motoblur no Android 2.3 não é tão transparente ...

removendo

android:background="@color/transparent"

No visor resolveu o meu problema.

Respondeu 23/08/2012 em 01:16
fonte usuário

votos
0

Você deve verificar quais pré-visualização estão disponíveis para se certificar de que você pode executar em tantos dispositivos quanto possível formatos.

Parece que DROID suporta PixelFormat.YCbCr_422_I PixelFormat.YCbCr_420_SP

você pode usar o seguinte método para obter uma lista de formatos disponíveis. getSupportedPreviewFormats ()

formatos de pixel

Respondeu 24/02/2010 em 04:48
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more