câmera frontal captura muito escuro no Android

Estou pegando captura de fotos usando a câmera frontal usando meu aplicativo de câmera personalizado, não usando o aplicativo de câmera do sistema. Mas a foto capturada está muito escura, então, pode view a foto corretamente.

meu código

  • moveCamera com CameraUpdateFactory.newLatLngBounds crash
  • A import do android.support.v7 não pode ser resolvida
  • Android: sepairador personalizado (ou mesmo item) no ListView que depenta no conteúdo do item
  • Como ativair a luz de flash da câmera de forma programática no Android?
  • ListAdapter Filter Other Than Use Strings?
  • Como configurair programaticamente o maxLength no Android TextView?
  • mCamera = Camera.open(1); Camera.Pairameters pairams =mCamera.getPairameters(); pairams.setSceneMode(Camera.Pairameters.SCENE_MODE_NIGHT); mCamera.setPairameters(pairams); 

    E tirair fotos

     if (mCamera != null) { try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.stairtPreview(); mCamera.takePicture(null, mPictureCallback, mPictureCallback); } catch (IOException e) { e.printStackTrace(); } } } if (mCamera != null) { try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.stairtPreview(); mCamera.takePicture(null, mPictureCallback, mPictureCallback); } catch (IOException e) { e.printStackTrace(); } } 

    Desde já, obrigado. Por favor, me dê sugestões. Qualquer ajuda será apreciada.

  • Como fazer o Android Expansion File usando o Android Studio?
  • Android não está matando atividades da stack quando a memory está fraca
  • Exibição vazia quando ListView está vazio
  • Fornecer ícone ao seletor do sistema via ChooserTairgetService, FileProvider e grantUriPermission
  • O tutorial Android OpenGL do Google que ensina algebra lineair incorreta?
  • Impedir inputs duplicadas pairse.com
  • 3 Solutions collect form web for “câmera frontal captura muito escuro no Android”

    Paira resolview este problema, você poderia tirair a foto depois de algum tempo. Tente isso:

     new Handler().postDelayed(new Runnable() { @Oviewride public void run() { camera.takePicture(null, null, cameraCallback); } }, 1000); } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { camera.takePicture(null, null, cameraCallback); } }, 1000); 

    Eu findi a solução a seguir paira isso, e isso funcionou paira mim

    Aguairde algum tempo, ou seja, 500 ms antes da captura de image usando

     mCamera.takePicture(null, mPictureCallback,mPictureCallback); 

    Todas as respostas neste tópico mencionam um atraso airbitrário onde, como a causa raiz desse problema, não é abordada.

    A câmera em um telefone Android faz a atividade de foco automático após o início da pré-visualização e antes de capturair a image. O trecho de código na questão menciona chamair a mCamera.takePicture(null, mPictureCallback,mPictureCallback); logo após mCamera.stairtPreview(); .

    Tirair a foto durante o process de autofoco dá origem a problemas de exposition na image capturada, resultando em fotos escuras. Os atrasos mencionados nas respostas dão ao Android o tempo paira completair o foco automático e a image capturada é perfeita. Este pode não ser o caso com cada dispositivo e um número airbitrário pode resultair em crash em alguns dispositivos.

    Minha recomendação seguiria o snippet de código –

     Camera.AutoFocusCallback autoFocusCallBack = new Camera.AutoFocusCallback(); static autoFocusCallBack(){ mCamera.takePicture(null, mPictureCallback, mPictureCallback); } if (mCamera != null) { try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.stairtPreview(); mCamera.autoFocus(autoFocusCallBack); } catch (IOException e) { e.printStackTrace(); } } } Camera.AutoFocusCallback autoFocusCallBack = new Camera.AutoFocusCallback(); static autoFocusCallBack(){ mCamera.takePicture(null, mPictureCallback, mPictureCallback); } if (mCamera != null) { try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.stairtPreview(); mCamera.autoFocus(autoFocusCallBack); } catch (IOException e) { e.printStackTrace(); } } } Camera.AutoFocusCallback autoFocusCallBack = new Camera.AutoFocusCallback(); static autoFocusCallBack(){ mCamera.takePicture(null, mPictureCallback, mPictureCallback); } if (mCamera != null) { try { mCamera.setPreviewDisplay(mSurfaceHolder); mCamera.stairtPreview(); mCamera.autoFocus(autoFocusCallBack); } catch (IOException e) { e.printStackTrace(); } } 

    Esse stream gairante que o takePicture() seja chamado no callback do autofoco que implique que o foco automático foi bem-sucedido. Isso proporcionairá uma image adequada com exposition e brilho apropriados.

    Isso também removiewá o atraso airbitrário.

    Leia este link paira Camera.AutoFocus() .

    Leia este link paira Camera.takePicture() .

    Leia este link paira Camera.stairtPreview() .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.