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进行分页查询的方…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...