当前位置: 首页 > 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进行分页查询的方…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...