3

目录

  • 前言
  • 关于手电筒使用场景
  • 鸿蒙应用手电筒常用功能
  • 手电筒功能具体实现
  • 手电筒功能的扩展
  • 结束语

前言

在智能手机时代中,手电筒功能已成为一项基本而实用的工具。在日常生活中,手电筒为人们在黑暗环境中提供照明,如夜间行走、寻找物品或处理突发的停电情况,尤其对于居住在电力供应不稳定地区的人们,手电筒是必备的工具。而HarmonyOS作为华为推出的新一代操作系统,提供了丰富的API和框架,让开发者可以轻松地在自己的应用中集成手电筒功能。在HarmonyOS开发中,开发者可以利用系统提供的接口控制手机的闪光灯,实现手电筒功能,这项功能不仅能够提升应用的实用性,还能增强用户体验。那么本文就来详细介绍如何在HarmonyOS应用中实现手电筒功能。

关于手电筒使用场景

由于现在电力的普及,各家各户已经不需要手电筒,但是在户外活动中,比如露营、徒步旅行、探险等,手电筒还是有很大作用的,可以帮助驴友看清道路、识别方向、避免危险。另外,手电筒也是紧急情况下的重要信号工具,通过闪烁灯光来引起救援人员的注意。而且在工作场景中,比如维修工人、电力工程师、矿工等常常需要手电筒来照亮狭小或昏暗的工作空间,以便进行准确的操作和检查。
甚至有时候,手电筒可以在遇到紧急危险时作为防身工具,用来暂时吓退潜在的威胁。所以说手电筒功能虽看似简单,却在保障人们的生活便利、安全以及完成各种任务方面发挥着不可或缺的作用。

鸿蒙应用手电筒常用功能

这里分享常用的手机手电筒的常用功能,也是为了后面开发该应用的需求汇总,具体如下所示:

  • 基本的开关模式:使用者通过点击应用的开关按钮轻松打开和关闭手电筒;
  • SOS 求救模式:参照国际通用的 SOS 求救信号节奏(三短、三长、三短)闪烁灯光,在紧急情况下,可以发送求救信号;
  • 频闪模式:通过一定频率快速闪烁灯光,可用于引起注意、信号指示等特点的情形;
  • 电量显示模式:可以实时显示设备当前的电量状态,让使用者了解当前剩余电量能支持手电筒使用的时长;
  • 低电量提醒模式:当手机电量低于一定阈值(比如 20%),给使用者发送提醒通知,从而避免突然没电,而影响正常使用。

手电筒功能具体实现

1、检测是否支持手电筒

根据手机特性,虽然99%的智能手机都支持手电筒功能,但是也不是百分之百支持手电筒,然而鸿蒙手机设备也不例外,第一步就是先要检测手机是否支持手电筒功能。可以直接使用系统自带接口来检测,检测设备是否支持手电筒,主要是通过isTorchSupported方法,具体如下所示:

isTorchSupported(): boolean

系统能力: SystemCapability.Multimedia.Camera.Core
方法的返回值是一个boolean类型:

类型说明
bool返回ture表示设备支持手电筒

使用示例代码如下所示:


function isTorchSupported(cameraManager: camera.CameraManager): boolean {
let isTorch = cameraManager.isTorchSupported();
return isTorch;
}

2、检测是否支持设置手电筒模式

那么接下来,继续进行检测是否支持设置的手电筒模式,主要是通过isTorchModeSupported方法,具体方法如下所示:

isTorchModeSupported(mode: TorchMode): boolean

系统能力: SystemCapability.Multimedia.Camera.Core
具体参数:

参数名类型必填说明
modeTorchMode手电筒模式。

方法的返回值是一个boolean类型:

类型说明
boolean返回true表示设备支持设置的手电筒模式。

使用示例代码如下所示:

function isTorchModeSupported(cameraManager: camera.CameraManager, torchMode: camera.TorchMode): boolean {
let isTorchMode = cameraManager.isTorchModeSupported(torchMode);
return isTorchMode;
}

3、设置设备手电筒模式

然后是设置设备手电筒模式,主要是通过setTorchMode方法,具体如下所示:

setTorchMode(mode: TorchMode): void

系统能力: SystemCapability.Multimedia.Camera.Core
具体参数:

参数名类型必填说明
modeTorchMode手电筒模式。

错误码:
具体的错误码的详细介绍,请移步参见Camera错误码。

错误码ID错误信息
7400101Parameter missing or parameter type incorrect.
7400102Operation not allowed.
7400201Camera service fatal error.

使用示例代码如下所示:

import { BusinessError } from '@kit.BasicServicesKit';

function setTorchMode(cameraManager: camera.CameraManager, torchMode: camera.TorchMode): void {
  try {
    cameraManager.setTorchMode(torchMode);
  } catch (error) {
    // 失败返回错误码error.code并处理
    let err = error as BusinessError;

  }
}

4、手电筒状态变化回调

关于手电筒状态变化回调,通过注册回调函数获取手电筒状态变化,使用callback异步回调。主要是通过on(‘torchStatusChange’)方法,具体如下所示:

on(type: ‘torchStatusChange’, callback: AsyncCallback): void

使用说明:当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。
系统能力: SystemCapability.Multimedia.Camera.Core
参数:

参数名类型必填说明
typestring监听事件,固定'torchStatusChange'。cameraManager对象获取成功后可监听。目前只支持手电筒打开,手电筒关闭,手电筒不可用,手电筒恢复可用会触发该事件并返回
callbackAsyncCallback回调函数,用于获取电筒状态变化信息

使用示例代码如下所示:

import { BusinessError } from '@kit.BasicServicesKit';

function callback(err: BusinessError, torchStatusInfo: camera.TorchStatusInfo): void {
  if (err !== undefined && err.code !== 0) {

    return;
  }
}

function registerTorchStatusChange(cameraManager: camera.CameraManager): void {
  cameraManager.on('torchStatusChange', callback);
}

5、手电筒状态变化注销回调

关于手电筒状态变化注销回调,主要是通过注销回调函数取消获取手电筒状态变化,使用off(‘torchStatusChange’)方法,具体如下所示:

Column() {
  Button('开启手电筒', { stateEffect: true, type: ButtonType.Capsule })
    .width('90%')
    .height(60)
    .margin(40)
    .onClick(() => {
      camera.getCameraManager(getContext() as common.UIAbilityContext).setTorchMode(1);
    })
    
  Button('关闭手电筒', { stateEffect: true, type: ButtonType.Capsule })
    .width('90%')
    .height(60)
    .margin(40)
    .onClick(() => {
      camera.getCameraManager(getContext() as common.UIAbilityContext).setTorchMode(0);
    })
}

}

手电筒功能的扩展

最最后再来分享一下关于手电筒的扩展功能,除了上面基本的开关控制,手电筒功能还可以进行下面的扩展,上面也提到过这些功能,比如:

  • 亮度调节:根据环境光线自动调节闪光灯亮度。
  • SOS信号:在紧急情况下使用闪光灯发送SOS信号。
  • 手势控制:通过特定的手势或手机动作来控制手电筒。

结束语

通过上文对于在HarmonyOS开发中手电筒的使用详解,想必大家对手电筒相关的使用和开发有了更详细的了解吧?大家可以在自己的HarmonyOS应用中轻松实现手电筒功能。个人觉得这不仅提升了应用的实用性,还能增强用户的互动体验。随着HarmonyOS生态的不断壮大,我们期待更多的创新应用能够利用这一功能,为用户提供更加便捷和智能的服务。


灵芸小骏
9k 声望846 粉丝

移动开发者。