我絕對不知道如何實現這一點。它在我的Razr上正常工作,但在很多三星設備上都失敗了。我有一個運行相機預覽的SurfaceView。我已經包含了一個使用手電筒的按鈕。拋出異常,我插入try塊:RuntimeException與三星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