• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 手电筒使用(ArkTS)
2<!--Kit: Camera Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @qano-->
5<!--Designer: @leo_ysl-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9手电筒模式的使用是通过操作设备启用手电筒功能,使设备的手电筒功能持续保持常亮状态。
10
11在使用相机应用并操作手电筒功能时,存在以下几种情况说明:
12
13- 当使用后置相机并设置闪光灯模式[FlashMode](../../reference/apis-camera-kit/arkts-apis-camera-e.md#flashmode)关闭时,手电筒功能无法启用。
14- 当使用前置相机时,手电筒可以正常启用并保持常亮状态。
15- 从前置相机切换至后置相机时,如果手电筒原本处于开启状态,它将会被自动关闭。
16
17## 开发步骤
18
19详细的API说明请参考[Camera API参考](../../reference/apis-camera-kit/arkts-apis-camera.md)。
20
211. 导入camera接口,接口中提供了相机相关的属性和方法,导入方法如下。
22
23    ```ts
24    import { camera } from '@kit.CameraKit';
25    import { BusinessError } from '@kit.BasicServicesKit';
26    ```
27
282. 通过[CameraManager](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md)中的[isTorchSupported](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md#istorchsupported11)方法,检测当前设备是否支持手电筒功能。
29
30    ```ts
31    function isTorchSupported(cameraManager: camera.CameraManager) : boolean {
32      let torchSupport: boolean = false;
33      try {
34        torchSupport = cameraManager.isTorchSupported();
35      } catch (error) {
36        let err = error as BusinessError;
37        console.error('Failed to torch. errorCode = ' + err.code);
38      }
39      console.info('Returned with the torch support status:' + torchSupport);
40      return torchSupport;
41    }
42    ```
43
443. 通过[CameraManager](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md)中的[isTorchModeSupported](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md#istorchmodesupported11)方法,检测是否支持指定的手电筒模式[TorchMode](../../reference/apis-camera-kit/arkts-apis-camera-e.md#torchmode11)。
45
46    ```ts
47    function isTorchModeSupported(cameraManager: camera.CameraManager, torchMode: camera.TorchMode) : boolean {
48      let isTorchModeSupport: boolean = false;
49      try {
50        isTorchModeSupport = cameraManager.isTorchModeSupported(torchMode);
51      } catch (error) {
52        let err = error as BusinessError;
53        console.error('Failed to set the torch mode. errorCode = ' + err.code);
54      }
55      return isTorchModeSupport;
56    }
57    ```
58
594. 通过[CameraManager](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md)中的[setTorchMode](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md#settorchmode11)方法,设置当前设备的手电筒模式。以及通过[CameraManager](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md)中的[getTorchMode](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md#gettorchmode11)方法,获取当前设备的手电筒模式。
60
61    > **说明:**
62    > 在使用[getTorchMode](../../reference/apis-camera-kit/arkts-apis-camera-CameraManager.md#gettorchmode11)方法前,需要先注册监听手电筒的状态变化,请参考[状态监听](camera-torch-use.md#状态监听)。
63
64    ```ts
65    function setTorchModeSupported(cameraManager: camera.CameraManager, torchMode: camera.TorchMode) : void {
66      cameraManager.setTorchMode(torchMode);
67      let isTorchMode = cameraManager.getTorchMode();
68      console.info(`Returned with the torch mode supportd mode: ${isTorchMode}`);
69    }
70    ```
71
72
73## 状态监听
74
75在相机应用开发过程中,可以随时监听手电筒状态,包括手电筒打开、手电筒关闭、手电筒不可用、手电筒恢复可用。手电筒状态发生变化,可通过回调函数获取手电筒模式的变化。
76
77通过注册torchStatusChange事件,通过回调返回监听结果,callback返回TorchStatusInfo参数,参数的具体内容可参考相机管理器回调接口实例[TorchStatusInfo](../../reference/apis-camera-kit/arkts-apis-camera-i.md#torchstatusinfo11)。
78
79
80```ts
81function onTorchStatusChange(cameraManager: camera.CameraManager): void {
82  cameraManager.on('torchStatusChange', (err: BusinessError, torchStatusInfo: camera.TorchStatusInfo) => {
83    if (err !== undefined && err.code !== 0) {
84      console.error(`Callback Error, errorCode: ${err.code}`);
85      return;
86    }
87    console.info(`onTorchStatusChange, isTorchAvailable: ${torchStatusInfo.isTorchAvailable}, isTorchActive: ${torchStatusInfo.
88      isTorchActive}, level: ${torchStatusInfo.torchLevel}`);
89  });
90}
91```