У меня нет абсолютно никакой идеи, как реализовать это. Он отлично работает на моем Razr, но не работает на многих устройствах Samsung. У меня есть SurfaceView, запускающий предварительный просмотр камеры. Я включил кнопку, чтобы использовать фонарик. Исключение, когда я вставил попробовать блок:RuntimeException с Samsung Galaxy - фонарик
if (hasFlash()) {
btnLight = (ImageButton) findViewById(R.id.btn_light);
btnLight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Parameters p = camera.getParameters();
if (p.getSupportedFlashModes() != null) {
if (p.getSupportedFlashModes().contains(
Parameters.FLASH_MODE_TORCH)) {
if (isLightOn) {
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
btnLight.setImageResource(R.drawable.light_on);
isLightOn = false;
} else {
try {
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
btnLight.setImageResource(R.drawable.light_off);
isLightOn = true;
} catch (RuntimeException e){
// I don't know how to make this stupid thing work for all phones
}
}
}
}
}
});
Обычно я распечатываю все параметры камеры и проверяю, какие значения я могу использовать. Аппаратные API не могут работать для всех устройств. – yushulx