Android编程调用红外线遥控功能示例

发布时间 - 2026-01-11 02:53:35    点击率:

本文实例讲述了Android编程调用红外线遥控功能。分享给大家供大家参考,具体如下:

Android API Demos中有红外线遥控的小例子,在网上找了很久相关的资料,发现比较少,或许找的方法不对。

Github上有一个与之相关的开源项目https://github.com/timnew/AndroidInfrared,还没来得及学习。希望有相关资料或学习项目的大神们多指导 。

/**
 * Android红外线遥控官方Demo
 * 
 * @description:
 * @author ldm
 * @date 2016-4-28 下午5:06:28
 */
public class ConsumerIrActivity extends Activity {
  private static final String TAG = "ConsumerIrTest";
  private TextView mFreqsText;
  // Android4.4之后 红外遥控ConsumerIrManager,可以被小米4调用
  private ConsumerIrManager mCIR;
  @SuppressLint("InlinedApi")
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.consumer_ir);
    // 获取系统的红外遥控服务
    mCIR = (ConsumerIrManager) getSystemService(Context.CONSUMER_IR_SERVICE);
    initViewsAndEvents();
  }
  private void initViewsAndEvents() {
    findViewById(R.id.send_button).setOnClickListener(mSendClickListener);
    findViewById(R.id.get_freqs_button)
        .setOnClickListener(mOnClickListener);
    mFreqsText = (TextView) findViewById(R.id.freqs_text);
  }
  View.OnClickListener mSendClickListener = new View.OnClickListener() {
    @TargetApi(Build.VERSION_CODES.KITKAT)
    public void onClick(View v) {
      if (!mCIR.hasIrEmitter()) {
        Log.e(TAG, "未找到红外发身器!");
        return;
      }
      // 一种交替的载波序列模式,通过毫秒测量
      int[] pattern = { 1901, 4453, 625, 1614, 625, 1588, 625, 1614, 625,
          442, 625, 442, 625, 468, 625, 442, 625, 494, 572, 1614,
          625, 1588, 625, 1614, 625, 494, 572, 442, 651, 442, 625,
          442, 625, 442, 625, 1614, 625, 1588, 651, 1588, 625, 442,
          625, 494, 598, 442, 625, 442, 625, 520, 572, 442, 625, 442,
          625, 442, 651, 1588, 625, 1614, 625, 1588, 625, 1614, 625,
          1588, 625, 48958 };
      // 在38.4KHz条件下进行模式转换
      mCIR.transmit(38400, pattern);
    }
  };
  @SuppressLint("NewApi")
  View.OnClickListener mOnClickListener = new View.OnClickListener() {
    public void onClick(View v) {
      StringBuilder b = new StringBuilder();
      if (!mCIR.hasIrEmitter()) {
        mFreqsText.setText("未找到红外发身器!");
        return;
      }
      // 获得可用的载波频率范围
      ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR
          .getCarrierFrequencies();
      b.append("IR Carrier Frequencies:\n");// 红外载波频率
      // 边里获取频率段
      for (ConsumerIrManager.CarrierFrequencyRange range : freqs) {
        b.append(String.format("  %d - %d\n",
            range.getMinFrequency(), range.getMaxFrequency()));
      }
      mFreqsText.setText(b.toString());// 显示结果
    }
  };
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
<Button
    android:id="@+id/send_button"
    android:text="@string/ir_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
  <Button
    android:id="@+id/get_freqs_button"
    android:text="@string/ir_get_freqs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
  <ScrollView
    android:id="@+id/freqs_text_scroll"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >
    <TextView
      android:id="@+id/freqs_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:paddingLeft="3dp"
      android:paddingRight="3dp" />
  </ScrollView>
</LinearLayout>

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android视图View技巧总结》、《Android资源操作技巧汇总》、《Android操作json格式数据技巧总结》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 红外线  # 遥控  # Android 8.0实现蓝牙遥控器自动配对  # Android自定义View实现遥控器按钮  # android模拟实现航拍遥控  # 未找到  # 进阶  # 操作技巧  # 还没  # 相关内容  # 中有  # 上有  # 很久  # 感兴趣  # 大神  # 给大家  # 找了  # 相关资料  # 与之  # 更多关于  # 所述  # 程序设计  # 开源  # 比较少  # 在网上 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何在VPS电脑上快速搭建网站?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何快速上传自定义模板至建站之星?  Laravel Session怎么存储_Laravel Session驱动配置详解  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何快速搭建高效WAP手机网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  微信小程序 canvas开发实例及注意事项  如何用y主机助手快速搭建网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何确保FTP站点访问权限与数据传输安全?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel怎么判断请求类型_Laravel Request isMethod用法  ,南京靠谱的征婚网站?  魔方云NAT建站如何实现端口转发?  如何在建站宝盒中设置产品搜索功能?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Firefox Developer Edition开发者版本入口  如何在阿里云通过域名搭建网站?  Linux网络带宽限制_tc配置实践解析【教程】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  怎么用AI帮你设计一套个性化的手机App图标?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  如何在建站之星网店版论坛获取技术支持?  Android使用GridView实现日历的简单功能  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  深圳网站制作的公司有哪些,dido官方网站?  如何快速登录WAP自助建站平台?  Android 常见的图片加载框架详细介绍  Bootstrap整体框架之CSS12栅格系统  企业网站制作这些问题要关注  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在 React 中条件性地遍历数组并渲染元素