欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-02 18:36:10
本文实例讲述了android编程调用红外线遥控功能。分享给大家供大家参考,具体如下: android api demos中有红外线遥控的小例子,在网上找了很久相关的资料,...

本文实例讲述了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程序设计有所帮助。