1

在这个链接http://store.ovi.com/content/147853?clickSource=search&pos=1上有一个自定义的相机实现在 android我想知道我们如何在捕获图像时打开闪光灯,我们会这样做吗我们自己 ?或在示例中设置相机模式的任何api?

请帮忙 !

谢谢

4

2 回答 2

4

您可以使用 将所需的闪光模式设置为您在Camera对象中传递的参数的一部分setParameters(Camera.Parameters params)。请参阅参数上的方法,setFlashMode(String)提供或。FLASH_MODE_ONFLASH_MODE_OFFFLASH_MODE_AUTO

Camera camera = Camera.open();
Camera.Parameters params = new Camera.Parameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
// ... set other parameters
camera.setParameters(params);
于 2012-12-18T19:38:35.307 回答
1

在您拥有一个 Camera 实例之后,这相对容易(Camera.open() 将返回一个 Camera 实例)。

首先,您需要获取相机参数

Camera.Parameters params = yourCameraInstance.getParameters();

接下来,您需要检查正在使用的设备是否能够实现您希望实现的闪存模式,以防万一您试图告诉设备打开闪存而它却不能。这会导致崩溃。

 List<String> flashModes = params.getSupportedFlashModes();

这将返回设备能够以字符串形式支持的所有闪存模式的列表。例如,该列表应包含以下内容:FLASH_MODE_AUTO、FLASH_MODE_ON、FLASH_MODE_OFF 等。

然后执行以下操作:

 if (flashModes.contains(Camera.Parameters.FLASH_MODE_AUTO)) {
        params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
    }

最后,将您的新参数设置为您的相机实例,如下所示:

yourCameraInstance.setParameters(params);

同样,您可以以相同的方式检查其他相机功能:

    List<String> focusModes = params.getSupportedFocusModes();
    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
        params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
    }
    yourCameraInstance.setParameters(params);

希望这对某人有帮助!

于 2017-04-05T19:26:00.907 回答