首页 > 系统 > Android > 正文

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

2019-12-12 02:13:10
字体:
来源:转载
供稿:网友

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表