Индикатор камеры Android гаснет через 2 секунды? - PullRequest
0 голосов
/ 14 ноября 2011

Я использую вспышку камеры в своем приложении, я сделал код для этого, он работает вкл / выкл света.но через 2 секунды он выключается.Если я нажимаю на кнопку снова, это давало силу закрыть.Это код, который я использую для этого, пожалуйста, помогите мне.

Я хочу, чтобы это было так, как если бы пользователь нажимал кнопку включения, а пользователь нажимал кнопку выключения.

private void processOffClick()  {

    //togglebutton.setButtonDrawable(R.drawable.offbutton);
    System.out.println("in off state");
    if( cam != null ){
        cam.stopPreview();
        cam.release();
    }
}
private void processOnClick()  {

    //togglebutton.setButtonDrawable(R.drawable.onbutton);
    System.out.println("in on state");       
    cam = Camera.open();     
    Parameters params = cam.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_ON);
    cam.setParameters(params);

    cam.startPreview();
    cam.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
        }
    });      
}

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Мой опыт говорит, что режим вспышки должен быть "ФАКЕЛ" (если поддерживается), и он запускается только при запуске предварительного просмотра.Однако камеры ведут себя по-разному на разных устройствах и не всегда, как указано в описаниях их возможностей

1 голос
/ 14 ноября 2011

поставить строки:

Parameters params = cam.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
cam.setParameters(params);

в processOffClick вместо помещения в processOnClick вот так:

boolean clicked = false;
private void processOffClick()  {

  //togglebutton.setButtonDrawable(R.drawable.offbutton);
  clicked = false;
  System.out.println("in off state");
  if( cam != null ){
      cam.stopPreview();
      cam.release();
  }
}
private void processOnClick()  {
  clicked = true;
  //togglebutton.setButtonDrawable(R.drawable.onbutton);
  System.out.println("in on state");       
  cam = Camera.open();     
  Parameters params = cam.getParameters();
  params.setFlashMode(Parameters.FLASH_MODE_ON);

  while(clicked)  { 
     cam.setParameters(params);

     cam.startPreview();
        cam.autoFocus(new AutoFocusCallback() {
           public void onAutoFocus(boolean success, Camera camera) {
        }
     });
  } 
}

Это может сработать, я не проверял код

Я добавил цикл while, чтобы он удерживал вспышку и фокусировку до тех пор, пока она не нажата.

0 голосов
/ 16 октября 2012

1.Включить

camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

2. Выключить

camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();

И добавьте следующее разрешение на AndroidManifest.xml.

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

смотри это http://www.mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

...