HiSilicon352 android9.0 适配红外遥控器

news2024/11/26 21:45:57

海思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) key
         if (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,按遥控器可以从串口看到如下打印:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员可以做哪些副业?我整理的千字副业指南。

都说不想做副业的程序员不是好程序员&#xff0c;尤其是在经济形势不好的现在&#xff0c;有一份靠谱和稳定的副业更是成为了程序员的不二之选。程序员的副业是细水长流型的&#xff0c;虽然收入未必能超过主业&#xff0c;但胜在每月稳定入账&#xff0c;可以作为小金库和备用…

基于STC12C5A60S2系列1T 8051单片机SPI通信应用

基于STC12C5A60S2系列1T 8051单片机SPI通信应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 8051单片机SPI通信介绍STC12C5A60S2系列1T 8051单片…

java中post请求可以像get请求一样拼装参数吗?

可以的&#xff0c;代码实例如下所示&#xff1a; 控制器如下所示&#xff1a; PostMapping(value "/mkdirDirectory") public Object mkdirDirectory(RequestParam("path") String path) {log.info("本地生成文件夹路径:{}", path);Object i…

C++(Qt)软件调试---自动注册AeDebug(17)

C(Qt)软件调试—自动注册AeDebug&#xff08;17&#xff09; 文章目录 C(Qt)软件调试---自动注册AeDebug&#xff08;17&#xff09;1、什么是AeDebug2、使用调试工具3、WinDbg注册到AeDebug4、ProcDump注册到AeDebug5、Dr.MinGW注册到AeDebug6、Visual Studio 注册到AeDebug 1…

【ARM Coresight OpenOCD 系列 1 -- OpenOCD 介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 OpenOCD 介绍1.1.1 OpenOCD 支持的JTAG 适配器1.1.2 OpenOCD 支持的调试设备1.1.3 OpenOCD 支持的 Flash 驱动 1.2 OpenOCD 安装与使用1.2.1 OpenOCD 代码获取及安装1.2.2 OpenOCD 使用1.2.3 OpenOCD 启用 GDB…

修改a-rate评分颜色;a-rate评分十分制

使用ant-design-vue的rate评分组件 1。修改颜色 2。十分制&#xff08;默认是5分&#xff0c;改成10分。且提示也是10分制&#xff09; <a-rate v-model"score" :tooltips"rate10" allow-half hoverChange"changeRate" />data() {score: …

和xshell和crt说再见,认识了一款51k star多端跨平台终端神器,强大酷炫

一、Tabby简介 Tabby&#xff08;以前称为Terminus&#xff09;是一款高度可配置的终端仿真器、SSH 和串行客户端。开源且跨平台&#xff0c;支持在Windows、macOS和Linux系统下使用。 源码下载 https://github.com/Bill13579/tabby官网地址 https://tabby.sh/1. 特点 集成…

子查询:内查询,嵌套查询

括号里面的查询语句会先于主查询语句 create table info ( id int, name varchar(10) primary key not null, score decimal(5,2), address varchar(20), hobbid int(5) );select name,score from info where name in (select name from info where score > 80); 子查询返回…

【uniapp】通用列表封装组件

uniapp页面一般都会有像以下的列表页面&#xff0c;封装通用组件&#xff0c;提高开发效率&#xff1b; &#xff08;基于uView前端框架&#xff09; 首先&#xff0c;通过设计图来分析一下页面展示和数据结构定义 w-table组件参数说明 参数说明类型可选值默认值toggle列表是…

栈的应用:括号匹配,递归

目录 1.栈的应用1.括号匹配问题算法实现 2. 递归栈在递归中的应用 3.队列的应用 1.栈的应用 1.括号匹配问题 ①可用栈实现该特性&#xff1a;最后出现的左括号最先被匹配&#xff08;LIFO)。 ②出栈&#xff1a;每出现一个右括号&#xff0c;就“消耗”一个左括号。 ③匹配失败…

如何将 ONLYOFFICE 文档 7.5 与 Odoo 进行集成

在本教程中&#xff0c;我们将了解如何使用集成应用实现 ONLYOFFICE 文档与 Odoo 之间的连接。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一款全面的在线办公工具&#xff0c;提供了文本文档、电子表格和演示文稿的查看和编辑功能。它高度兼容微软 Office 格式&#xff0c;包括…

Unity UGUI之Button控件的简单认识

Unity通过菜单或者Hierarchy面板创建Button,将会自动创建一个Image和Button控件&#xff0c;并且Transition属性默认选择Color Tint模式&#xff0c;除此之外还创建了个文本子对象。如下图所示&#xff1a; 而使用Inspector面板中Add Component只会创建Button控件。Transition属…

听说,工作能力强的项目经理都有这几个特征

大家好&#xff0c;我是老原。 很多项目经理每天忙忙碌碌&#xff0c;但是一看结果&#xff0c;团队业绩没有完成、人才没有培养起来、自己的管理水平和个人领导力也没有得到提升。 明明付出了很多时间和精力&#xff0c;结果却只收获了团队的抱怨&#xff0c;以及老板对你管…

UnoCss(原子化css引擎) 让你的开发更轻松愉快

什么是原子化CSS&#xff0c;UnoCSS又是什么&#xff0c;对此有疑问的推荐看下antfu的这篇文章——重新构想原子化 CSS (antfu.me) 相信看完这篇文章的你也会跟我一样热衷于UnoCSS. 介绍 今天介绍一个CSS开发利器 UnoCSS , 是一个具有高性能且极具灵活性的即时原子化 CSS 引擎…

web框架与Django

web应用程序 什么是web Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序&#xff0c;也就是说这…

ubuntu 18.04安装自己ko驱动 修改secure boot

因为本人老折腾自己的电脑&#xff0c;所以老重装系统&#xff0c;然后配置又不见了&#xff0c;这次配置赶紧记下来 insmod netlink_test.ko 报错&#xff1a;insmod: ERROR: could not insert module netlink_test.ko: Operation not permitted 添加 sudo insmod netlink_te…

C++跨模块传递CRT引发问题

SDK新增加了一个接口&#xff0c;参数使用std::vector<Class>&&#xff0c;传给dll函数中填充数值&#xff0c;然后应用层拿到这个vector出现了崩溃 越界等问题&#xff0c;调了很久&#xff0c;之前知道这个问题&#xff0c;没有想起来&#xff0c;耽误了许多时间。…

kubernetes资源监控

目录 一、资源限制 1、limitrange 2、ResourceQuota 二、metrics-server 三、图形化监控和代码行监控 1、dashboard 2、k9s 四、hpa 一、资源限制 Kubernetes采用request和limit两种限制类型来对资源进行分配。request(资源需求)&#xff1a;即运行Pod的节点必须满足运…

用友NC Cloud accept.jsp任意文件上传漏洞

一、漏洞描述 NC Cloud是用友推出的大型企业数字化平台。 用友网络科技股份有限公司NC Cloud存在任意文件上传漏洞&#xff0c;攻击者可利用该漏洞获取服务器控制权。 二、网络空间搜索引擎查询 fofa查询 icon_hash"1085941792" 三、漏洞复现 POC POST /aim/equi…

Linux程序设计shell程序学习

目录 1、编写shell脚本&#xff0c;通过循环的形式在终端上打印出等腰梯形 2、编写一个bash脚本程序&#xff0c;用for循环实现将当前目录下的所有.c文件移到指定的目录下&#xff0c;最后在显示器上显示指定目录下的文件和目录。 3、自行编写 shell 脚本&#xff0c;实现从…