红外发射器和 Android 5.0

2023-12-21

我在运行 Android 5.0 的 Galaxy S5 上遇到了红外发射器问题。

在我更新到 5.0 之前,我的应用程序在我的手机上运行得很好,但现在,我要管理的设备没有任何反应。当我单击应用程序发送红外代码时,LED 指示灯会闪烁,表示红外管理器已激活,并且我可以通过连接到示波器的红外光电二极管接收信号。不幸的是,我得到的信号形状与应有的信号形状非常不同。

我可以补充一点,在 Android 4.4.2 下的平板电脑上运行的相同代码仍然可以完美运行。

为了帮助回答我的问题,我的代码示例:

private String commande="0000 0070 0000 0032 0080 003F 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 "
+ "0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 "
+ "0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 "
+ "0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0030 0010 0A98";

IRManager=(ConsumerIrManager)activité.getSystemService(Context.CONSUMER_IR_SERVICE);
code=commandConversion(commande);
IRManager.transmit(code.getFrequency(),code.getCodes());

private RemoteCommandeCode commandConversion(String command) {
    List<String> list;
    RemoteCommandeCode code;
    int frequency;

    list= new ArrayList<String>(Arrays.asList(command.split(" ")));

    list.remove(0); // dummy

    frequency = Integer.parseInt(liste.remove(0), 16); // frequency

    list.remove(0); // seq1

    list.remove(0); // seq2

    code=new RemoteCommandeCode(list.size());

    for (int i = 0; i < list.size(); i++) {
        code.setCode(i,Integer.parseInt(list.get(i), 16));
    }

    frequency = (int) (1000000 / (frequency * 0.241246));

    code.setFrequency(frequency);

    return(code);
}

public class RemoteCommandeCode {
    private int fréquence;
    private int [] codes;

    public RemoteCommandeCode(int nombreCodes){
        codes=new int[nombreCodes];
    }

    public int getFrequency() {
        return frequency;
    }

    public void setFrequency(int frequency) {
        this.frequency = frequency;
    }

    public int [] getCodes() {
        return codes;
    }

    public void setCodes(int [] codes) {
        this.codes = codes;
    }

    public void setCode(int i,int code){
        codes[i]=code;
    }
}

As asked, images of the signal emitted with the simple code "0000 0070 0000 0003 0010 0020 0010 0020 0010 0020", I get on 4.4.2 : Signal on Android 4.4.2

and on Android 5.0 : Signal on Android 5.0


此方法将修复所有 Android 版本的 IR 问题

/*
 * preforms some calculations on the codesets we have in order to make them work with certain models of phone.
 *
 * HTC devices need formula 1
 * Samsungs want formula 2
 *
 * Samsung Pre-4.4.3 want nothing, so just return the input data
 *
 */
private static int[] string2dec(int[] irData, int frequency) {
    int formula = shouldEquationRun();

    //Should we run any computations on the irData?
    if (formula != 0) {
        for (int i = 0; i < irData.length; i++) {
            if (formula == 1) {
                irData[i] = irData[i] * (1000000/frequency);//the brackets should avoid an arithmetic overflow
            } else if (formula == 2) {
                irData[i] = (int) Math.ceil(irData[i] * 26.27272727272727); //this is the samsung formula as per http://developer.samsung.com/android/technical-docs/Workaround-to-solve-issues-with-the-ConsumerIrManager-in-Android-version-lower-than-4-4-3-KitKat
            }
        }
    }
    return irData;
}

/*
 * This method figures out if we should be running the equation in string2dec,
 * which is based on the type of device. Some need it to run in order to function, some need it NOT to run
 *
 * HTC needs it on (HTC One M8)
 * Samsung needs occasionally a special formula, depending on the version
 * Android 5.0+ need it on. 
 * Other devices DO NOT need anything special.
 */
private static int shouldEquationRun() {
    //Some notes on what Build.X will return
    //System.out.println(Build.MODEL); //One M8
    //System.out.println(Build.MANUFACTURER); //htc
    //System.out.println(Build.VERSION.SDK_INT); //19

    //Samsung's way of finding out if their OS is too new to work without a formula:
    //int lastIdx = Build.VERSION.RELEASE.lastIndexOf(".");
    //System.out.println(Build.VERSION.RELEASE.substring(lastIdx+1)); //4

    //handle HTC
    if (Build.MANUFACTURER.equalsIgnoreCase("HTC")) {
        return 1;
    }
    //handle Lollipop (Android 5.0.1 == SDK 21) / beyond
    if (Build.VERSION.SDK_INT >= 21) {
        return 1;
    }
    //handle Samsung PRE-Android 5
    if (Build.MANUFACTURER.equalsIgnoreCase("SAMSUNG")) {
        if (Build.VERSION.SDK_INT >= 19) {
            int lastIdx = Build.VERSION.RELEASE.lastIndexOf(".");
            int VERSION_MR = Integer.valueOf(Build.VERSION.RELEASE.substring(lastIdx + 1));
            if (VERSION_MR < 3) {
                // Before version of Android 4.4.2
                //Note: NO formula here, not even the other one
                return 0;
            } else {
                // Later version of Android 4.4.3
                //run the special samsung formula here
                return 2;
            }
        }
    }
    //if something else...
    return 0;
}

*编辑:感谢OP的帮助,我能够弄清楚如何解决这个问题。这个答案现在应该可以解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

红外发射器和 Android 5.0 的相关文章

  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • 在android API 23中获取用户的位置

    我可以编写获取用户位置的代码 并且在 API 更多细节 我手动启用设备的 GPS 第一次运行应用程序请求权限并且没有日志返回 在下次运行应用程序时 返回我准备好的 Toast 检查您的提供商 这是我写的代码 public class Mai
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • EasyMock : java.lang.IllegalStateException: 1 个匹配器预期,2 个记录

    我在使用 EasyMock 2 5 2 和 JUnit 4 8 2 通过 Eclipse 运行 时遇到问题 我已阅读此处所有类似的帖子 但尚未找到答案 我有一个包含两个测试的类 它们测试相同的方法 我正在使用匹配器 每个测试单独运行时都会通
  • 为什么 Casbah / Java MongoDB 驱动程序最终会出现 java.lang.IllegalArgumentException?

    我使用时看到一个奇怪的问题casbah java driver 当驱动程序尝试从 mongo 创建响应时 我不断遇到以下异常 Oct 16 2012 10 45 07 AM com mongodb DBTCPConnector MyPort
  • 在 Java/GWT 中解析用户时间输入

    解析用户在 GWT 中的文本字段中键入的时间的最佳方法是什么 默认时间格式要求用户完全按照区域设置指定的时间格式输入时间 我想要更加灵活 因为用户可以通过多种不同的方式输入时间 例如 8 8p 8pm 8 15pm 13 15 1315 1
  • 基于Java模式分割字符串

    您好 我有以下模式的日志文件 2014 03 06 03 21 45 432 ERROR mfs pool 3 thread 19 dispatcher StatusNotification Error processing notific
  • 蓝牙权限在 jetpack compose 中无法正常工作

    我在用com google accompanist accompanist permissions 0 25 1在我的项目中 我正在尝试在运行时请求蓝牙权限 我想知道用户如何知道权限被永久禁用 清单 xml
  • APACHE POI 从 Java 中的 Excel 获取精确的字体颜色

    在 Excel 工作表中 如何使用 Java 中的 Apache POI 获取准确的字体颜色值 我试图通过使用来获取字体颜色 org apache poi ss usermodel Font f book getFontAt style g
  • Flutter 图像选择器明确请求许可

    图像选择器包说 无需配置 该插件应该开箱即用 不再需要添加 android requestLegacyExternalStorage true 作为属性 AndroidManifest xml 中的标记 如 image picker 所示
  • C3P0:生产中未返回的连接超时?

    参数unreturnedConnectionTimeout给定时间段后未返回的连接超时 我正在尝试决定是否应该在我的制作中使用它persistence xml 使用它的一大优点是连接池将能够从泄漏的连接中恢复 一个很大的缺点是泄漏的连接将很
  • 针对不同处理器架构的 Gradle android 构建

    我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构 armeabi armeabi v7a x86 mips 构建 4 个单独的 apk 我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folde
  • JSF“总”变量类似于 JSTL 中的 c:set

    我不喜欢 JSF 但我需要用它来解决这个问题 我正在 纯 JSF 中工作 所以这就是我基本上需要的 但我不知道如何用 JSF 来实现它
  • Unity 上适用于 Android 的 vuforia 插件和 prime31 facebook 插件之间的冲突

    如今客户需要它 这真的很紧急 T T 我在 Unity 上的 Android 应用程序中同时安装了 vuforia 插件和 prime31 facebook 插件 难点在于androidmanifest xml文件 它们都充当 MAIN 和
  • 需要同步仅增量计数器吗?

    我使用整数作为计数器 该整数只会增加 并且肯定有多个线程会同时增加它 当没有其他线程尝试访问其值时 在程序执行结束时读取该计数器的值 我假设我不必为这种仅增量计数器使用锁或任何类型的同步 这是正确的吗 如果这有什么区别的话 我用 Java
  • JavaFX 中的 MVC 模式与场景生成器

    我是 JavaFX 新手 根据我当前的设置 正在努力创建合适的 MVC 架构 我使用 Scene Builder 单击了一个 UI 并指定了一个 Controller 类 Startup public class Portal extend
  • 获取Android联系人排序首选项

    在 Android 的 联系人 gt 设置 中 我们有 列表排序依据 和 查看联系人姓名 选项 有什么方法可以在另一个应用程序中获取这些首选项吗 这意味着我的应用程序有我自己版本的联系人列表 我需要这些才能对其进行相应的排序 int sor
  • 如何获取 res.drawable 文件夹的路径来复制文件?

    我正在编写我的应用程序AndroidStudio 我的里面有gif文件drawable gifs文件夹 我希望将该文件复制到MediaStore Images Media单击按钮后的文件夹 目前 即使使用发布的一些答案 我也无法获取我的 g
  • 带有客户端证书的android webview

    我尝试了几天使用嵌入在应用程序中的客户端证书的Web视图 但在我看来 android sdk没有提供任何方法来做到这一点 是否有回调来拦截服务器发送的质询 有没有办法将 webview 与客户端证书一起使用并发出 https 请求 因为我也
  • 是什么让热部署成为“难题”?

    在工作中 我们经常遇到这样的问题 永久代内存不足 http www jroller com agileanswers entry preventing java s java lang例外 团队负责人认为这是 JVM 中的一个错误 与代码的

随机推荐

  • 请求和响应处理之间的 HTTP 断开/超时

    假设以下场景 客户端正在向服务器发送 HTTP POST 请求有效并且 已被服务器处理 数据已插入数据库 Web 应用程序正在响应客户端 客户端超时 并且看不到 HTTP 响应 在这种情况下 我们会遇到以下情况 客户不知道他的数据是否有效以
  • 检测不支持的浏览器版本并显示特定的 div 和消息

    我的网站中有一个聊天机器人 它需要最新版本的浏览器才能完美工作 因此我需要向用户显示一条消息 请将您的浏览器更新到最新版本 我不想使用第三方插件 如果用户使用此 js 代码使用不受支持的浏览器版本 我如何显示 div Html div di
  • 如何将对象传递给属性构造函数

    我试图将对象传递到 Attributes 构造函数中 如下所示 PropertyValidation new NullOrEmptyValidatorScheme public string Name get private set 使用此
  • 通过java processBuilder运行cmd命令

    我正在尝试使用 ProcessBuilder 来运行命令语句 ProcessBuilder pb new ProcessBuilder cmd exe C start Process p pb start 但是 我只能打开cmd exe I
  • 2.7 CSV模块想要unicode,但不想要unicode

    csvfile open finishedFileName num csv w newline writ csv writer csvfile dialect excel firstline unicode str firstline tr
  • XCode 构建阶段:在后台运行脚本(不阻止构建)

    当我在模拟器中构建和运行 iOS 应用程序时 我希望能够在后台运行脚本 即不阻止构建过程 我试过了osascript path to script 并且还后台运行了一个单独的 shell 脚本 该脚本执行相同的操作 但两者都不起作用 构建停
  • 将公共代码添加为 git 子模块时出现问题:“索引中已存在”

    我想添加一些 git 子模块 我收到了两个共享一些通用代码的项目 共享代码只是复制到两个项目中 我为通用代码创建了一个单独的 git 存储库 并将其从项目中删除 并计划将其添加为git子模块 我使用 git submodule add 的路
  • 如何检查 preg_match() 是否为 False 而不是 True?

    我有这段代码 可确保用户名只是字母和数字 但是我的代码设置方式 我需要它来检查结果是否预匹配 https www php net manual en function preg match php is false 现在它说 如果安全则回显
  • 在组件安装过程中调试包

    我需要在 Embarcadero RAD Studio XE5 中构建为 BCB6 Borland C Builder 6 制作的旧组件 项目是 CPP 项目 组件代码包含在 PAS 文件中 该项目包含6个包 一个设计时间三个包 三个包运行
  • from Gui import * 在 python 3 中?

    我正在尝试这个 import os sys from Gui import import Image as PIL import ImageTk class ImageBrowser Gui def init self Gui init s
  • 通过PowerShell + WinRM传递双引号

    我正在用这个code https stackoverflow com a 13284313 1118239在服务器上执行远程代码 MSI 安装 通过脚本传递双引号是行不通的 我尝试了下面给出的两种变体 3 和 4 以及输出 输入 1 测试命
  • Rails 4 has_secure_password 呈现密码确认可选

    我使用 Rails 4有安全密码在我的用户模型中 技巧说如果我不设置 password confirmation 它永远不会被触发 但为什么当我运行测试时我会收到错误 密码确认不能为空如下 Failures 1 User Failure E
  • 在 Linq to SQL 中连接两个表

    也许是一个非常简单的问题 但我是 Linq to SQL 的新手 我有两张桌子 User UserId name Password Email USER TABLE Id UserId FirstName LastName 我想要一个查询
  • BufferGeometry 偏移量和索引

    我只是想知道 偏移量 和 索引 索引 到底是什么 偏移量例如中提到的https github com mrdoob Three js blob dev src core BufferGeometry js https github com
  • Python 中的桑基图

    有没有一个Python库可以生成桑基图 http en wikipedia org wiki Sankey diagram 我见过这个桑基图应用程序和库列表 http www sankey diagrams com sankey diagr
  • 从一维张量中提取前 k 个值索引

    给定 Torch 中的一维张量 torch Tensor 包含可以比较的值 比如浮点 我们如何提取顶部的索引k该张量中的值 除了暴力方法之外 我还在寻找 Torch lua 提供的一些 API 调用 它可以有效地执行此任务 截至拉取请求 4
  • 如何用动画从 UITableView 中删除行?

    我在从表视图中删除行时遇到问题 当按下行中的删除按钮时 我使用下面的代码 NSIndexPath indexPath NSIndexPath indexPathForRow control tag 100 inSection 0 resul
  • realm-js - 将本地领域数据复制到同步领域

    我在用realm js使用 React Native 在用户的设备上存储数据 并且工作流程中的某个点我想将本地领域中的所有数据复制到同步领域 以保留在 ROS 上 我遇到了一个问题 在我们的模式中 我们通过将引用一个对象的属性添加到另一个对
  • 如何根据对象字符串属性在 Xcode 中设置条件断点?

    我希望能够让调试器在达到特定字符串匹配时中断 举个例子 我可能有这样的事情 Foo myObj self gimmeObj myObj可能有一个名为name 我希望调试器在分配时停止 myObj name isEqualToString B
  • 红外发射器和 Android 5.0

    我在运行 Android 5 0 的 Galaxy S5 上遇到了红外发射器问题 在我更新到 5 0 之前 我的应用程序在我的手机上运行得很好 但现在 我要管理的设备没有任何反应 当我单击应用程序发送红外代码时 LED 指示灯会闪烁 表示红