写点什么

【HarmonyOS Next】鸿蒙监听手机按键

作者:GeorgeGcs
  • 2025-03-24
    上海
  • 本文字数:1297 字

    阅读完需:约 4 分钟

【HarmonyOS Next】鸿蒙监听手机按键

【HarmonyOS Next】鸿蒙监听手机按键

一、前言

应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。


这两种需求,鸿蒙都提供了对应的监听事件进行处理。onKeyEvent 默认的按钮监听事件


onKeyPreIme 这是优先级最高的监听回调,别上面多了一个 return 开关,用于告诉系统监听事件是否再向下传递。



窗口是第一级接收按钮事件的实体。后续会传递给后三级。

二、解决方案参考

我们以音量实体按键举例,通过绑定 onKeyEvent 按键监听来获取按键事件的回调。需要注意的是,绑定了按键事件需要控件获得焦点时,用户去操作按键才会有监听回调。


    // 给控件添加默认聚焦      .defaultFocus(true)          // 给Button设置onKeyEvent事件        .onKeyEvent((event?: KeyEvent) => {        })
复制代码


使用 onKeyPreIme 屏蔽音量使用下键。


import { KeyCode } from '@kit.InputKit';
@Entry@Componentstruct PreImeEventExample { build() { Column() { Search({ placeholder: "Search..." }) .width("80%") .height("40vp") .border({ radius:"20vp" }) .onKeyPreIme((event:KeyEvent) => { // 屏蔽音量使用下键 if (event.keyCode == KeyCode.KEYCODE_VOLUME_DOWN) { return true; } return false; }) } }}
复制代码

三、DEMO 源码示例:

import { KeyCode } from '@kit.InputKit'
@Entry@Componentstruct KeyClickTestPage { @State text: string = '' @State eventType: string = ''
build() { Column() { Button('KeyEvent') .defaultFocus(true) // 给Button设置onKeyEvent事件 .onKeyEvent((event?: KeyEvent) => { if(event){ if (event.type === KeyType.Down) { this.eventType = 'Down' // 按钮 按下 } if (event.type === KeyType.Up) { this.eventType = 'Up'// 按钮 抬起 } // KEYCODE_VOLUME_UP 16 音量增加键 // KEYCODE_VOLUME_DOWN 17 音量减小键 // KEYCODE_POWER 18 电源键 this.text = 'onKeyEvent KeyType:' + this.eventType + '\nkeyCode:' + event.keyCode + '\nkeyText:' + event.keyText + '\nintentionCode:' + event.intentionCode } }) .onKeyPreIme((event:KeyEvent) => { // 屏蔽音量使用下键 if (event.keyCode == KeyCode.KEYCODE_VOLUME_DOWN) { return true; } this.text = 'onKeyPreIme KeyType:' + this.eventType + '\nkeyCode:' + event.keyCode + '\nkeyText:' + event.keyText + '\nintentionCode:' + event.intentionCode
return false; }) Text(this.text).padding(15) }.height(300).width('100%').padding(35) }}
复制代码

扩展资料

点击跳转参考按键Code列表:



发布于: 刚刚阅读数: 4
用户头像

GeorgeGcs

关注

路漫漫其修远兮,吾将上下而求索。 2024-12-24 加入

历经腾讯,宝马,研究所,金融。 待过私企,外企,央企。 深耕大应用开发领域十年。 OpenHarmony,HarmonyOS,Flutter,H5,Android,IOS。 目前任职鸿蒙应用架构师。 HarmonyOS官方认证创作先锋

评论

发布
暂无评论
【HarmonyOS Next】鸿蒙监听手机按键_鸿蒙_GeorgeGcs_InfoQ写作社区