Android红外遥控器移植

本文介绍了如何在Android系统中实现红外功能,包括编译HAL层代码、使系统支持红外功能及红外驱动移植等步骤。重点讲解了红外HAL层代码的位置、编译方法以及在不同Android版本中的配置差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编译hal层代码
              红外的hal代码路径

hardware/libhardware/modules/consumerir/

最终生成consumerir.default.so,但system文件系统中并没有该库,选择安装该库即可。
在device文件下的mk文件中加入
PRODUCT_PACKAGES += \
consumerir.default

在Andoird8.0以后的版本,libhardware中有部分代码集成在hardware/interfaces/ir,可以单独编译文件夹,将相应的库进行安装,如

PRODUCT_PACKAGES += android.hardware.ir@1.0-service \
		    android.hardware.ir@1.0-impl 、
                    consumerir.default

    <hal format="hidl" optional="true">
        <name>android.hardware.ir</name>
	<transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
        	<name>IIr</name>
            	<instance>default</instance>
        </interface>
    </hal>

 如果ir的hal层打开失败,会报如下错误。

04-15 10:08:47.061  2089  2089 I SystemServer: StartConsumerIrService
04-15 10:08:47.062   242   242 W hwservicemanager: getTransport: Cannot find entry android.hardware.ir@1.0::IConsumerIr/default in either framework or device manifest.
04-15 10:08:47.063  2089  2089 E System  : ******************************************
04-15 10:08:47.064  2089  2089 E System  : ************ Failure starting core service
04-15 10:08:47.064  2089  2089 E System  : java.lang.RuntimeException: FEATURE_CONSUMER_IR present, but no IR HAL loaded!
04-15 10:08:47.064  2089  2089 E System  :     at com.android.server.ConsumerIrService.&lt;init&gt;(ConsumerIrService.java:51)
04-15 10:08:47.064  2089  2089 E System  :     at com.android.server.SystemServer.startOtherServices(SystemServer.java:874)
04-15 10:08:47.064  2089  2089 E System  :     at com.android.server.SystemServer.run(SystemServer.java:446)
04-15 10:08:47.064  2089  2089 E System  :     at com.android.server.SystemServer.main(SystemServer.java:309)
04-15 10:08:47.064  2089  2089 E System  :     at java.lang.reflect.Method.invoke(Native Method)
04-15 10:08:47.064  2089  2089 E System  :     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:504)



2.让系统支持红外功能

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.consumerir.xml:system/etc/permissions/android.hardware.consumerir.xml

更高版本的Android

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.consumerir.xml:vendor/etc/permission/android.hardware.consumerir.xml

应用在打开红外设备的时候会申请红外权限,这个就是红外权限的文件,没有应用会出错。选择合适的红外芯片,并移植好驱动后,就可以通过第三方的应用控制电器了。另外有些红外芯片支持学习功能,但Android并没有相应的接口,可以改Android代码,然后将应源码放在Android源码下编译。如果要做android-studio下编译(android-api不能直接访问新方法),可采用getDeclaredMethod这个方法来获取Android系统新添加的方法。

红外framework层代码路径

frameworks/base/services/core/java/com/android/server/ConsumerIrService.java

frameworks/base/services/core/jni/com_android_server_ConsumerIrService.cpp

frameworks/base/services/core/jni/com_android_server_ConsumerIrService.cpp

3.红外驱动移植

         手机红外硬件方案介绍https://blog.youkuaiyun.com/mike8825/article/details/80955992

### Android.hardware API 的功能及用法 #### 一、概述 `android.hardware` 是 Android 平台提供的一组用于管理硬件资源的核心包。它允许应用程序开发者访问设备上的各种硬件组件,例如相机、传感器、指纹识别模块等。这些接口的设计旨在简化与硬件交互的过程,并确保跨不同设备的兼容性和一致性。 #### 二、主要子包及其功能 ##### 1. `android.hardware.camera2` 该子包提供了对现代摄像头系统的高级控制能力,取代了较旧的 `android.hardware.Camera` 接口[^2]。以下是其关键特性: - **动态配置**:支持多摄像头设置(如前后双摄),并能灵活调整参数。 - **性能优化**:通过更高效的图像捕获机制提升帧率和分辨率。 - **错误处理改进**:增强了异常情况下的恢复能力和稳定性。 代码示例展示如何打开默认摄像机: ```java import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraManager; public class CameraExample { public void openDefaultCamera(CameraManager manager) throws CameraAccessException { String[] cameraIds = manager.getCameraIdList(); if (cameraIds.length > 0) { manager.openCamera(cameraIds[0], null, null); // 打开第一个可用的摄像头 } } } ``` ##### 2. `android.hardware.fingerprint` 此部分描述的是指纹扫描仪的相关操作[^3]。主要包括以下几个方面: - 用户认证流程集成; - 安全上下文中执行敏感交易的安全保障措施。 下面是一个简单的例子来说明怎样启动一次指纹验证过程: ```java FingerprintManager.CryptoObject cryptoObject = new FingerprintManager.CryptoObject(cipher); fingerprintManager.authenticate(cryptoObject, cancellationSignal, flags, callback, handler); ``` ##### 3. 外设扩展支持 对于一些特殊场景下使用的外部设备,比如USB连接的AR眼镜或者其他类型的视觉辅助工具,则可以通过特定的方式接入系统框架内完成数据交换和服务调用[^4]。这通常涉及到自定义驱动程序以及遵循相应的协议栈实现无缝衔接。 #### 三、注意事项 当利用上述提到的各种API时需要注意版本适配问题,因为不同的Android OS可能具备不一样的特性和局限性。另外,在实际项目开发过程中还需要考虑权限申请、隐私保护等因素的影响。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值