【发布时间】:2014-02-12 12:52:07
【问题描述】:
我完全不知道如何实现这一点。它在我的 Razr 上运行良好,但在很多三星设备上都失败了。我有一个运行相机预览的 SurfaceView。我已经包含了一个使用手电筒的按钮。在我插入 try 块的地方抛出了异常:
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 不能适用于所有设备。
标签: android parameters camera runtimeexception flashlight