Android Liga / desliga o Flash da câmera programaticamente com o Camera2
Estou fazendo um aplicativo simples que funciona como uma lanterna. Preciso ser capaz de ligar e desligar o flash a partir de um botão no aplicativo com a API Camera2, pois recebo erros com a API da câmera antiga. Eu gostaria de usar uma lanterna "lanterna", onde a câmera não precisa ser aberta para que o flash acenda. Sei que é possível, pois muitos telefones têm um flash ligado / desligado no menu de configurações rápidas, mas não consigo encontrar nenhum código ou tutorial sobre como fazer isso.
Código:
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Estou executando em um Nexus 6P com Android 6.0.1.
EDIT: eu preciso usar a API Camera2. Ainda não encontrei um bom tutorial para isso e, depois de obter uma resposta, vou criar um em Q / A aqui.