Android红外线遥控

来源:互联网 发布:reflection软件 编辑:程序博客网 时间:2024/03/29 02:43
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>
1 0
原创粉丝点击