2016-06-17 5 views
1

Ich brauche Hilfe beim Ein-/Ausschalten des Blitzes für Kamera2. Der Code funktioniert nicht und der Blitz wird bei der Aufnahme nicht eingeschaltet. Ich habe viele verschiedene Methoden ausprobiert, bin aber zu kurz gekommen. Hier ist mein Code. Bitte helfen Sie!Die Kamera schaltet den Blitz für Kamera2 nicht ein

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

Dies ist eine ziemlich umfassende Lösung http://stackoverflow.com/a/6069503/493321 – basilisk

+0

Ja, aber Ich brauche Hilfe damit –

Antwort

0

Ich benutze diese Funktion für die Fackel auf Camera2

@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) { 
    } 
}