HiSilicon352 android9.0 适配红外遥控器
海思Android解决方案在原生Android基础上,基于传统电视用户使用习惯,增加了对红外遥控器和按键板的支持,使传统电视用户能更好适应智能电视方案。
一.功能描述:

在系统启动时,会先启动android_ir_user;vinput设备节点将按键事件转换为Android的标准输入发送到input。
二.文件路径
按键适配源码路径如下:
- framework层配置文件:
frameworks/base/core/java/android/view/KeyEvent.java
frameworks/base/core/res/res/values/attrs.xml - native层配置文件:
frameworks/native/include/android/keycodes.h
frameworks/native/include/input/InputEventLabels.h - 海思定制文件:
device/hisilicon/bigfish/prebuilts/Vendor_0001_Product_0001.kl - 海思红外遥控器配处理程序代码:
device/hisilicon/bigfish/system/ir_user/
三.遥控器按键适配
1> IR适配
需要先打开打印,从而获取去红外码,再依次进行 linux keycode 和 Android frameworks映射。
diff --git a/device/hisilicon/bigfish/system/ir_user/ir_user.cpp b/device/hisilicon/bigfish/system/ir_user/ir_user.cpp
index 335d698e80..db082c3c3f 100644
--- a/device/hisilicon/bigfish/system/ir_user/ir_user.cpp
+++ b/device/hisilicon/bigfish/system/ir_user/ir_user.cpp
@@ -550,7 +550,7 @@ void IrSampleThread()int ret = IR_GetValueWithProtocol(status, key, name, sizeof(name), readTimeout);if (ret) {if (!g_debugIrEnable) {
- printf("IR_GetValueWithProtocol ret = %d ", ret);
+ printf("IR_GetValueWithProtocol ret = %d\n", ret);continue;}IrAutomatedTest(num, key, status);
@@ -558,13 +558,14 @@ void IrSampleThread()isMouseEventKey = false;bool isBrowserMouseMode = false;SetBrowserMouseMode(isBrowserMouseMode);
+ printf("IR_GetValueWithProtocol linuxKeycode = %x---------- key=%llx\n",linuxKeycode ,key);if (!SetLinuxKeycode(linuxKeycode, key)) {continue;}// shield PIP(WINDOW) keyif (linuxKeycode == WINDOW) {isMouseEventKey = true;
- XLOGD("you have pressed PIP key\n ,yCoordinate is %d ", yCoordinate);
+ XLOGD("you have pressed PIP key\n ,yCoordinate is %d\n", yCoordinate);if (status == HI_UNF_KEY_STATUS_UP) {u32MouseMode = !u32MouseMode;}
2> 查看红外遥控器发射的按键值
串口输入以下命令:
android_ir_user -d //模拟自动红外测试
通过该命令,可以查看平台是否正常接收红外信号,按遥控器按键可以从串口看到第一步添加的打印。
IR_GetValueWithProtocol linuxKeycode = 0xa45bff00---------- key=139
3> 填入 key.xml 文件
源码文件:device/hisilicon/Hi3751V350/etc/input/key.xml
将按键打印的键值一一对应添加到对应的功能键中。
<?xml version="1.0" encoding="utf-8"?>
<key_xml><hisi-key><key value="0x639cff00" name="KEY_POWER" /> <!-- --><key value="0x2ed1ff00" name="KEY_MUTE" /> <!-- --><key value="0xef10ff00" name="KEY_SOURCE" /> <!-- --><key value="0x7986ff00" name="KEY_GUIDE" /> <!--EPG --><key value="0x7a85ff00" name="KEY_ZOOM" /> <!--ASPECT --><key value="0x7e81ff00" name="KEY_3D" /> <!-- --><key value="0x7f80ff00" name="KEY_INFO" /> <!-- --><key value="0x6d92ff00" name="KEY_1" /> <!-- --><key value="0x6c93ff00" name="KEY_2" /> <!-- --><key value="0x33ccff00" name="KEY_3" /> <!-- --><key value="0x609fff00" name="KEY_4" /> <!-- --><key value="0x718eff00" name="KEY_5" /> <!-- --><key value="0x708fff00" name="KEY_6" /> <!-- --><key value="0x37c8ff00" name="KEY_7" /> <!-- --><key value="0x6b94ff00" name="KEY_8" /> <!-- --><key value="0x758aff00" name="KEY_9" /> <!-- --><key value="0x748bff00" name="KEY_0" /> <!-- --><key value="0x3bc4ff00" name="KEY_SOUNDMODE" /> <!-- --><key value="0x39c6ff00" name="KEY_PICTUREMODE"/> <!-- --><key value="0x34cbff00" name="KEY_BACK" /> <!-- --><key value="0x7887ff00" name="KEY_HOME" /> <!-- --><key value="0x7788ff00" name="KEY_TVSETUP" /> <!-- --><key value="0x6897ff00" name="KEY_MENU" /> <!-- --><key value="0x35caff00" name="KEY_UP" /> <!--key up--><key value="0x2dd2ff00" name="KEY_DOWN" /> <!--key down--><key value="0x3ec1ff00" name="KEY_RIGHT" /> <!--key right--><key value="0x6699ff00" name="KEY_LEFT" /> <!--key left --><key value="0x31ceff00" name="KEY_ENTER" /> <!--key ok --><key value="0x30cfff00" name="KEY_CHANNELUP" /> <!-- --><key value="0x629dff00" name="KEY_CHANNELDOWN"/> <!-- --><key value="0x6f90ff00" name="KEY_VOLUMEUP" /> <!-- --><key value="0x6798ff00" name="KEY_VOLUMEDOWN" /> <!-- --><key value="0x649bff00" name="KEY_RED" /> <!-- --><key value="0x659aff00" name="KEY_GREEN" /> <!-- --><key value="0x3fc0ff00" name="KEY_YELLOW" /> <!-- --><key value="0x3dc2ff00" name="KEY_BLUE" /> <!-- --><key value="0x3cc3ff00" name="KEY_REWIND" /> <!--快退 --><key value="0x25daff00" name="KEY_PLAYPAUSE" /> <!-- --><key value="0x29d6ff00" name="KEY_STOP" /> <!-- --><key value="0x2fd0ff00" name="KEY_FASTFORWARD" /> <!--快进 --><key value="0x7b84ff00" name="KEY_PAGEUP" /> <!--PAGEUP --><key value="0x7689ff00" name="KEY_PAGEDOWN" /> <!--PAGEDOWN --><key value="0x26d9ff00" name="KEY_SUBTITLE" /> <!--SUBTITLE --><key value="0x6996ff00" name="KEY_NICAM" /> <!--NICAM MTS/HOLD --><key value="0x6a95ff00" name="KEY_TELETXT" /> <!--TELETXT CC --><key value="0x738cff00" name="KEY_CC" /> <!--Internet/REVEAL --><key value="0x7d82ff00" name="KEY_HDMI" /> <!--Swap --><key value="0x38c7ff00" name="WINDOW" /> <!--PIP/Cancel AV quicksetting--><key value="0x9a65ff00" name="KEY_RECALL" /> <!--NULL --></hisi-key>
</key_xml>
三,调试指引
1> 在串口输入以下命令,查看输入设备在运行环境下加载的配置文件。
dumpsys input
通过该命令可以查看输入设备加载的配置文件是否正确,海思平台遥控器配置文件加
载情况如下,如果加载不正确,系统会加载默认的配置文件Generic.kl:

2> 在串口输入以下命令,查看Android输入事件。
getevent
通过该命令可以查看输入事件是否传到EventHub,按遥控器可以从串口看到如下打印:

相关文章:
HiSilicon352 android9.0 适配红外遥控器
海思Android解决方案在原生Android基础上,基于传统电视用户使用习惯,增加了对红外遥控器和按键板的支持,使传统电视用户能更好适应智能电视方案。 一.功能描述: 在系统启动时,会先启动android_ir_user;vinp…...
0004Java安卓程序设计-springboot基于APP的鲜花商城
文章目录 **摘 要****目录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘 要 本毕业设计的内容是设计并且实现一个基于APP的鲜花商城。它是在Windows下,以MYSQL为数据库开发平台,java技术和…...
对Axios进行封装
封装的同时,你需要和 后端协商好一些约定,请求头,状态码,请求超时时间....... 设置接口请求前缀:根据开发、测试、生产环境的不同,前缀需要加以区分 请求头 : 来实现一些具体的业务,必须携带一…...
Python TCP服务端多线程接收RFID网络读卡器上传数据
本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块,不可以随意更改每行前面的空白,否则程序会运行错误!!!如果缩进不…...
Ubuntu22.04安装MySql
在Ubuntu上安装mysql就比较简单了 1、常规操作,更新软件包列表 apt update 至少安装之前看一眼版本吧 apt list mysql-server 嗯,是8.0.35版本的 2、安装mysql apt install mysql-server 3、给root用户设置密码 # 第一次安装完无需密码,让你输入…...
设计模式-桥接模式(Bridge)
设计模式-桥接模式(Bridge) 一、桥接模式概述1.1 什么是桥接模式1.2 简单实现桥接模式 二、使用桥接模式注意事项三、实现桥接模式的方式3.1 使用继承和组合的方式实现桥接模式3.2 使用接口和内部类的方式实现桥接模式 一、桥接模式概述 1.1 什么是桥接…...
库存预占架构升级方案设计-交易库存中心
背景介绍  伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。近三年数据可以看出:  接入商家同比增长37.64%、货…...
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
目录 一、整合redis 1、介绍 1.1、redis(Remote Dictionary Server) 1.2、MySQL 1.3、区别 2、整合 2.1、配置 2.2、文件配置 2.3、key的生成规则方法 2.4、注意 二、redis注解式缓存 1、Cacheable注解 2、CachePut注解 3、CacheEvict注解…...
chatGPT对英语论文怎么润色呢?
chatGPT对英语论文怎么润色呢? 回答1: 润色英语论文是一项重要的任务,它有助于提高论文的质量、语法准确性和清晰度。以下是一些关于如何润色英语论文的建议: 语法和拼写检查: 使用拼写和语法检查工具,如…...
【机器学习4】降维
常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标, 即最大化投影方差, 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…...
注册商标有助于企业拓展市场渠道
拓展市场渠道 注册商标有助于企业拓展市场渠道。在商业合作和交易中,消费者往往更加倾向于选择有知名度和信誉的品牌。通过注册商标,企业可以树立自己的品牌形象,提高品牌知名度和美誉度,从而更好地开拓市场和拓展业务。同时&…...
推荐能用ios端磁力下载工具
关于ios端磁力下载工具,之前的文章给大家介绍过2个,分别是雷电下载和闪电下载。但是如今因为不可抗力和苹果商店对于磁力下载和云盘功能的限制,目前这两款工具已经不能够使用了。也就是说免费的下载工具已经没有了,毕竟实现ios端这…...
网页文档阅读的学习笔记
1. 阅读邮件 我是一名人工智能专业的博士生,请你帮我总结此页面的要点...
mysql图书管理系统(49-56)源代码
-- 九、 子查询 -- 无关子查询 -- 比较子查询:能确切知道子查询返回的是单值时,可以用>,<,,>,<,!或<>等比较运算符。 -- 49、 查询与“俞心怡”在同一个部门的读者的借…...
使用Docker部署开源分布式任务调度系统DolphinScheduler
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 使用Docker部署开源分布式任务调度系统DolphinScheduler 文章目录 使用Docker部署开源分布式任务…...
光猫桥接与直接拨号的对比
近期搬家,经历了一次拉宽带,换光猫,购置路由器的过程,有一些总结记录下来,备忘 装宽带之前已经知道桥接的好处就是可以路由器拨号,避免拉胯的光猫拖慢网速,但具体有什么坏处也不清楚࿰…...
使用cpolar配合Plex搭建私人媒体站并实现远程访问
文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…...
Web APIs——综合案例
1、学生就业统计表 2、渲染业务 根据持久化数据渲染页面 步骤: ①:读取localstorage本地数据 如果有数据则转换为对象放到变量里面一会使用它渲染页面如果没有则用默认空数组[]为了测试效果,可以先把initData存入本地存储看效果 ②&…...
2023.10月考试战报|华为认证HCIP考试100%通过
相关文章: 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月࿰…...
Oracle 三种分页方法(rownum、offset和fetch、row_number() over())
Oracle的三种分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用rownum、使用offset和fetch、使用row_number() over() 1、使用rownum rownum是oracle中一个伪劣,它用于表示返回的行的序号。使用rownum进行分页查询的方…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
IP选择注意事项
IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时,需要考虑以下参数,然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...
Linux系统:进程间通信-匿名与命名管道
本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...
