当前位置: 移动技术网 > IT编程>移动开发>Android > Android编程调用红外线遥控功能示例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

美甲diy,修凡记,白智英录像事件图片

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网