2016-06-17 3 views
1

카메라 2의 플래시를 켜고 끌 때 도움이 필요합니다. 코드가 작동하지 않아 사진을 찍을 때 플래시가 켜지지 않습니다. 나는 많은 다른 방법을 시도해 왔지만 짧아졌다. 여기 내 코드가있다. 도와주세요!카메라가 카메라 2의 플래시를 켜고 끄지 않습니다.

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    private CameraCaptureSession mSession; 
    private CaptureRequest.Builder mBuilder; 
    private CameraDevice mCameraDevice; 
    private CameraManager mCameraManager; 
    Boolean isOn = false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if (null == savedInstanceState) { 
      getFragmentManager().beginTransaction() 
        .replace(R.id.container, Camera2BasicFragment.newInstance()) 
        .commit(); 
     } 


     final Button flashOn = (Button) findViewById(R.id.flah_off); 
     flashOn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(isOn) { 
        flashOn.setBackgroundResource(R.drawable.flash_on); 
        turnOnFlashLight(); 
       }else{ 
        flashOn.setBackgroundResource(R.drawable.flah_off); 
        turnOffFlashLight(); 
       } 
       isOn = !isOn; 
      } 
     }); 

    } 

    public void turnOnFlashLight() { 
     try { 
      mBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_TORCH); 
      mSession.setRepeatingRequest(mBuilder.build(), null, null); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public void turnOffFlashLight() { 
     try { 
      mBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF); 
      mSession.setRepeatingRequest(mBuilder.build(), null, null); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+0

에 횃불이 기능을 사용하여이 꽤 완전한 솔루션입니다 http://stackoverflow.com/a/6069503/493321 – basilisk

+0

네,하지만 도움이 필요해. –

답변

0

내가 카메라 2

@TargetApi(Build.VERSION_CODES.M) 
public void toggleMarshmallowFlashlight(boolean enable) { 
    try { 
     final CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); 
     final String[] list = manager.getCameraIdList(); 
     manager.setTorchMode(list[0], enable); 
    } catch (CameraAccessException e) { 
    } 
} 
관련 문제