本文实例讲述了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());// 显示结果 } }; }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android视图View技巧总结》、《Android资源操作技巧汇总》、《Android操作json格式数据技巧总结》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。