当前位置: 首页 > news >正文

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基础上&#xff0c;基于传统电视用户使用习惯&#xff0c;增加了对红外遥控器和按键板的支持&#xff0c;使传统电视用户能更好适应智能电视方案。 一.功能描述&#xff1a; 在系统启动时&#xff0c;会先启动android_ir_user&#xff1b;vinp…...

0004Java安卓程序设计-springboot基于APP的鲜花商城

文章目录 **摘 要****目录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 本毕业设计的内容是设计并且实现一个基于APP的鲜花商城。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;java技术和…...

对Axios进行封装

封装的同时&#xff0c;你需要和 后端协商好一些约定&#xff0c;请求头&#xff0c;状态码&#xff0c;请求超时时间....... 设置接口请求前缀&#xff1a;根据开发、测试、生产环境的不同&#xff0c;前缀需要加以区分 请求头 : 来实现一些具体的业务&#xff0c;必须携带一…...

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块&#xff0c;不可以随意更改每行前面的空白&#xff0c;否则程序会运行错误&#xff01;&#xff01;&#xff01;如果缩进不…...

Ubuntu22.04安装MySql

在Ubuntu上安装mysql就比较简单了 1、常规操作&#xff0c;更新软件包列表 apt update 至少安装之前看一眼版本吧 apt list mysql-server 嗯&#xff0c;是8.0.35版本的 2、安装mysql apt install mysql-server 3、给root用户设置密码 # 第一次安装完无需密码,让你输入…...

设计模式-桥接模式(Bridge)

设计模式-桥接模式&#xff08;Bridge&#xff09; 一、桥接模式概述1.1 什么是桥接模式1.2 简单实现桥接模式 二、使用桥接模式注意事项三、实现桥接模式的方式3.1 使用继承和组合的方式实现桥接模式3.2 使用接口和内部类的方式实现桥接模式 一、桥接模式概述 1.1 什么是桥接…...

库存预占架构升级方案设计-交易库存中心

背景介绍 &#xfeff; 伴随物流行业的迅猛发展&#xff0c;一体化供应链模式的落地&#xff0c;对系统吞吐、系统稳定发出巨大挑战&#xff0c;库存作为供应链的重中之重表现更为明显。近三年数据可以看出&#xff1a; &#xfeff;&#xfeff; 接入商家同比增长37.64%、货…...

【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案

目录 一、整合redis 1、介绍 1.1、redis&#xff08;Remote Dictionary Server&#xff09; 1.2、MySQL 1.3、区别 2、整合 2.1、配置 2.2、文件配置 2.3、key的生成规则方法 2.4、注意 二、redis注解式缓存 1、Cacheable注解 2、CachePut注解 3、CacheEvict注解…...

chatGPT对英语论文怎么润色呢?

chatGPT对英语论文怎么润色呢&#xff1f; 回答1&#xff1a; 润色英语论文是一项重要的任务&#xff0c;它有助于提高论文的质量、语法准确性和清晰度。以下是一些关于如何润色英语论文的建议&#xff1a; 语法和拼写检查&#xff1a; 使用拼写和语法检查工具&#xff0c;如…...

【机器学习4】降维

常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标&#xff0c; 即最大化投影方差&#xff0c; 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…...

注册商标有助于企业拓展市场渠道

拓展市场渠道 注册商标有助于企业拓展市场渠道。在商业合作和交易中&#xff0c;消费者往往更加倾向于选择有知名度和信誉的品牌。通过注册商标&#xff0c;企业可以树立自己的品牌形象&#xff0c;提高品牌知名度和美誉度&#xff0c;从而更好地开拓市场和拓展业务。同时&…...

推荐能用ios端磁力下载工具

关于ios端磁力下载工具&#xff0c;之前的文章给大家介绍过2个&#xff0c;分别是雷电下载和闪电下载。但是如今因为不可抗力和苹果商店对于磁力下载和云盘功能的限制&#xff0c;目前这两款工具已经不能够使用了。也就是说免费的下载工具已经没有了&#xff0c;毕竟实现ios端这…...

网页文档阅读的学习笔记

1. 阅读邮件 我是一名人工智能专业的博士生&#xff0c;请你帮我总结此页面的要点...

mysql图书管理系统(49-56)源代码

-- 九、 子查询 -- 无关子查询 -- 比较子查询&#xff1a;能确切知道子查询返回的是单值时&#xff0c;可以用>&#xff0c;<&#xff0c;&#xff0c;>&#xff0c;<&#xff0c;!或<>等比较运算符。 -- 49、 查询与“俞心怡”在同一个部门的读者的借…...

使用Docker部署开源分布式任务调度系统DolphinScheduler

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 使用Docker部署开源分布式任务调度系统DolphinScheduler 文章目录 使用Docker部署开源分布式任务…...

光猫桥接与直接拨号的对比

近期搬家&#xff0c;经历了一次拉宽带&#xff0c;换光猫&#xff0c;购置路由器的过程&#xff0c;有一些总结记录下来&#xff0c;备忘 装宽带之前已经知道桥接的好处就是可以路由器拨号&#xff0c;避免拉胯的光猫拖慢网速&#xff0c;但具体有什么坏处也不清楚&#xff0…...

使用cpolar配合Plex搭建私人媒体站并实现远程访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…...

Web APIs——综合案例

1、学生就业统计表 2、渲染业务 根据持久化数据渲染页面 步骤&#xff1a; ①&#xff1a;读取localstorage本地数据 如果有数据则转换为对象放到变量里面一会使用它渲染页面如果没有则用默认空数组[]为了测试效果&#xff0c;可以先把initData存入本地存储看效果 ②&…...

2023.10月考试战报|华为认证HCIP考试100%通过

相关文章&#xff1a; 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月&#xff0…...

Oracle 三种分页方法(rownum、offset和fetch、row_number() over())

Oracle的三种分页指的是在进行分页查询时&#xff0c;使用三种不同的方式来实现分页效果&#xff0c;分别是使用rownum、使用offset和fetch、使用row_number() over() 1、使用rownum rownum是oracle中一个伪劣&#xff0c;它用于表示返回的行的序号。使用rownum进行分页查询的方…...

《等保2.0系列(三):定级方法与第二级详解——从“影响一群人”到“S和A”》

在上一章中我们了解了等保2.0第一级别的划分详情&#xff0c;在这篇文章中我们来了解一下等保2.0的划分条件和详情。等保2.0中对于第二级别的定级原则是会对公民、法人和其他组织的合法权益造成严重损害或特别严重损害&#xff1b;或者对社会秩序和公共利益造成危害&#xff0c…...

百度Agent岗一面:你知道哪些更复杂的 RAG 范式?

&#x1f454;面试官&#xff1a;你了解哪些更复杂的 RAG 范式&#xff1f;除了最基本的检索加生成&#xff0c;还有什么更高级的玩法&#xff1f; &#x1f64b;‍♂️我&#xff1a;呃&#xff0c;我觉得 Advanced RAG 就是最复杂的了吧&#xff0c;加个 Rerank 和 Query 改…...

深入解析 MCP (Model Context Protocol):构建 AI Agent 的标准化连接器

深入解析 MCP (Model Context 协议)&#xff1a;构建 AI Agent 的标准化连接器 引言 随着大语言模型&#xff08;LLM&#xff09;能力的飞速发展&#xff0c;AI Agent&#xff08;智能体&#xff09;正逐渐从简单的对话机器人演变为能够执行复杂任务的自动化实体。然而&#xf…...

模力方舟:本土化AI开发平台如何破解中国开发者落地难题?

在AI技术快速迭代的今天&#xff0c;开发者面临的最大挑战已不再是获取前沿模型&#xff0c;而是如何将这些技术真正落地到实际业务场景中。Gitee推出的模力方舟(MoArk)平台&#xff0c;以其独特的本土化定位和全流程服务能力&#xff0c;正在成为国内AI开发者实现技术落地的关…...

【2026年最新600套毕设项目分享】中国剪纸微信小程序(30188)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 项目演示视频2 项目演示视频3 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远…...

RAG系统重排序技术:提升信息检索精度的关键方法

1. 项目概述在信息检索领域&#xff0c;传统RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统面临一个关键挑战&#xff1a;如何从海量文档中精准定位最相关的信息片段。这个问题就像在一座巨大的图书馆里寻找特定问题的答案——即使找到了正确的书架&#xff0…...

AI核心知识144—大语言模型之 红队(简洁且通俗易懂版)

红队 (Red Teaming) 是 AI 时代的“首席刺客” 和“白帽子黑客” 。正如我们在上一个话题聊到的&#xff0c;AI 为了刷高分会疯狂钻空子&#xff0c;甚至产生极其危险的倾向。为了防止这些拥有超级智商的怪物在发布后给人类社会带来灾难&#xff0c;顶尖 AI 实验室&#xff08;…...

为什么你的FastAPI+Llama3服务QPS不到80?:揭秘Python asyncio与KV Cache内存布局冲突的底层真相

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python AI 原生应用推理加速 现代 Python AI 应用正面临推理延迟高、内存占用大、GPU 利用率不均等瓶颈。原生加速并非仅依赖硬件升级&#xff0c;而是需在模型编译、运行时调度与 Python 生态协同三个…...

高校科技成果转化难怎么办?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地 一、现状概述&#xff1a;成效与短板 高校作为科技成果的重要源头&#xff0c;近年来在创新策源和成果转化方面取得显著成效。然而&#xff0c;受制于传统转化模式的局限性&#xff0c;高校科…...

GDSDecomp:如何用逆向工程工具在5分钟内完成Godot项目恢复?

GDSDecomp&#xff1a;如何用逆向工程工具在5分钟内完成Godot项目恢复&#xff1f; 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 当你面对一个打包好的Godot游戏PCK文件&#xff0c;想要了…...