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

 更新时间:2017年08月21日 11:56:21   作者:迟做总比不做强  
这篇文章主要介绍了Android编程调用红外线遥控功能,结合实例形式分析了Android红外线功能的相关组件调用与布局操作实现技巧,需要的朋友可以参考下

本文实例讲述了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 AsyncTask 后监听异步加载完毕的动作详解

    Android AsyncTask 后监听异步加载完毕的动作详解

    这篇文章主要介绍了Android 使用AsyncTask 后监听异步加载完毕的动作的相关资料,需要的朋友可以参考下
    2016-11-11
  • android中SQLite使用及特点

    android中SQLite使用及特点

    SQLite是一个轻量级数据库,它设计目标是嵌入式的,而且占用资源非常低,本文重点给大家介绍android中SQLite使用及特点,感兴趣的朋友跟随小编一起看看吧
    2021-04-04
  • Android自定义广播接收

    Android自定义广播接收

    这篇文章主要为大家详细介绍了Android自定义广播接收,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Android Studio实现长方体表面积计算器

    Android Studio实现长方体表面积计算器

    这篇文章主要为大家详细介绍了Android Studio实现长方体表面积计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • android自定义环形统计图动画

    android自定义环形统计图动画

    这篇文章主要为大家详细介绍了android自定义环形统计图动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Android拆轮子系列之写验证码控件的方法

    Android拆轮子系列之写验证码控件的方法

    这篇文章主要介绍了Android拆轮子系列之写验证码控件的方法的, 涉及到Canvas和pint的使用和View的基本用法等相关知识点,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2016-10-10
  • Android listview动态加载列表项实现代码

    Android listview动态加载列表项实现代码

    这篇文章主要为大家详细介绍了Android listview动态加载列表项实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Flutter图片与文件选择器使用实例

    Flutter图片与文件选择器使用实例

    这篇文章主要为大家介绍了Flutter图片与文件选择器使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android中TextView文本高亮和点击行为的封装方法

    Android中TextView文本高亮和点击行为的封装方法

    这篇文章主要介绍了Android中TextView文本高亮和点击行为的封装方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Flutter常用的布局和事件示例详解

    Flutter常用的布局和事件示例详解

    这篇文章主要给大家介绍了关于Flutter常用的布局和事件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03

最新评论