三星Galaxy的RuntimeException - 手电筒

时间:2014-02-12 12:52:07

标签: android parameters camera runtimeexception flashlight

我完全不知道如何实现这一点。它在我的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
                            }
                        }
                    }
                }
            }
        });

1 个答案:

答案 0 :(得分:2)

在Android documentation中,您可以阅读:

public void setParameters (Camera.Parameters params)

Throws
RuntimeException    if any parameter is invalid or not supported.

这意味着您使用的是三星设备不支持的相机参数(FLASH_MODE),因此无法在此型号上使用。我认为它可能根本就没有内置闪光灯。