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

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...