-1

我在自定義相機應用程序中遇到問題。在閃光燈功能打開的情況下,手機會將第一張照片與閃光燈一起拍攝,但在第二張照片上則不會使用閃光燈。安卓相機應用程序閃光燈

flashCameraButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (isPressed) { 
       flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.onflash)); 

       flashOnButton(); 
      } else if (isPressed) { 
       flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.offflash)); 
       isPressed = !isPressed; 
       flashOffButton(); 
      } else 
       flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.onflash)); 
      flashOnButton(); 
     } 
    }); 

    private void flashOnButton() { 
    if (camera != null) { 
     try { 
      Camera.Parameters param = camera.getParameters(); 
      param.setFlashMode(!flashmode ? Camera.Parameters.FLASH_MODE_ON 
        : Camera.Parameters.FLASH_MODE_ON); 
      camera.setParameters(param); 
      flashmode = !flashmode; 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

    } 
} 
    private void flashOffButton() { 
    if (camera != null) { 
     try { 
      Camera.Parameters param = camera.getParameters(); 
      param.setFlashMode(!flashmode ? Camera.Parameters.FLASH_MODE_OFF 
        : Camera.Parameters.FLASH_MODE_OFF); 
      camera.setParameters(param); 
      flashmode = !flashmode; 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

    } 
} 
+1

您正在檢查if和else if中的相同條件。 –

+0

好吧然後我用這個Anoop kanyan –

+0

這段代碼來自一些教程嗎? –

回答

0

看看下面的代碼。你可以做類似的事情吧:

btnSwitch.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (isFlashOn) { 
       // turn off flash 
       //change the picture 
       turnOffFlash(); 
      } else { 
       // turn on flash 
       //change the picture 
       turnOnFlash(); 
      } 
     } 
    }); 
} 


// Get the camera 
private void getCamera() { 
    if (camera == null) { 
     try { 
      camera = Camera.open(); 
      params = camera.getParameters(); 
     } catch (RuntimeException e) { 
      Log.e("Camera Error. Failed to Open. Error: ", e.getMessage()); 
     } 
    } 
} 


// Turning On flash 
private void turnOnFlash() { 
    if (!isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 


     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(params); 
     camera.startPreview(); 
     isFlashOn = true; 


    } 

} 


// Turning Off flash 
private void turnOffFlash() { 
    if (isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 


     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_OFF); 
     camera.setParameters(params); 
     camera.stopPreview(); 
     isFlashOn = false; 


    } 
} 

我們這裏做的是檢查是否Flash是ON或OFF,如果是,我們調用方法turnOffFlash()將其關閉,如果它是OFF,我們調用方法turnOnFlash()將其打開。

+0

好的,謝謝Anoop Kanyan,我怎樣才能在這個方法中聲明(isFlashon) –

+0

在所有方法之外聲明它,並且最初將它設置爲false。 –

+0

好的謝謝,但我想當閃光燈毫無疑問,它點擊閃光第一次圖像和第二次點擊圖像與閃光燈自動關閉。我想如果閃光燈上它應該直到我改變閃光模式 –