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)中的注解

    深入分析安卓(Android)中的注解

    注解是我们经常接触的技术,Java有注解,Android也有注解,本文将试图介绍Android中的注解,以及ButterKnife和Otto这些基于注解的库的一些工作原理.下面一起来看看。
    2016-08-08
  • android intent使用定义标题

    android intent使用定义标题

    本文将详细介绍android怎样自定义Intent选择界面的标题,提供相关参考方法
    2012-11-11
  • Android使用WebView实现全屏切换播放网页视频功能

    Android使用WebView实现全屏切换播放网页视频功能

    这篇文章主要介绍了Android使用WebView实现全屏切换播放网页视频功能,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2019-07-07
  • Android自定义控件深入学习 Android生成随机验证码

    Android自定义控件深入学习 Android生成随机验证码

    这篇文章主要再次为大家介绍了Android自定义控件,以及针对自定义view学习,实战演练了Android生成随机验证码的详细过程,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android实现文件的分割和组装

    Android实现文件的分割和组装

    这篇文章主要介绍了Android实现文件的分割和组装,针对UDP大数据包的分割传输与组装有着非常实用的价值,需要的朋友可以参考下
    2014-09-09
  • 一文讲解Kotlin中的contract到底有什么用

    一文讲解Kotlin中的contract到底有什么用

    我们在开发中肯定会经常用Kotlin提供的一些通用拓展函数,当我们进去看源码的时候会发现许多函数里面有contract{}包裹的代码块,那么这些代码块到底有什么作用呢?下面这篇文章主要给大家介绍了关于Kotlin中contract到底有什么用的相关资料,需要的朋友可以参考下
    2022-01-01
  • Android判断字符串中是否含字母、中文或数字

    Android判断字符串中是否含字母、中文或数字

    这篇文章主要介绍了Android判断字符串中是否含字母、中文或数字的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android入门之使用SharedPreference存取信息详解

    Android入门之使用SharedPreference存取信息详解

    这篇文章主要为大家详细介绍了Android如何使用SharedPreference实现存取信息,文中的示例代码讲解详细,对我们学习Android有一定的帮助,需要的可以参考一下
    2022-12-12
  • Android6.0 屏幕固定功能详解

    Android6.0 屏幕固定功能详解

    android6.0在设置->安全->屏幕固定开启后,然后再长按home键出现最近的几个Activity可以选择一个图钉按钮就开启了屏幕固定功能。这篇文章主要介绍了Android6.0 屏幕固定功能的相关资料,感兴趣的朋友一起看看吧
    2016-09-09
  • Flutter上线项目实战记录之路由篇

    Flutter上线项目实战记录之路由篇

    这篇文章主要给大家介绍了关于Flutter上线项目实战记录之路由篇的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论