Android编程调用红外线遥控功能示例
程序员文章站
2023-12-02 18:36:10
本文实例讲述了android编程调用红外线遥控功能。分享给大家供大家参考,具体如下:
android api demos中有红外线遥控的小例子,在网上找了很久相关的资料,...
本文实例讲述了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程序设计有所帮助。