小米电视的红外控制

原理

红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。

发射机一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。

接收电路一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制(机构)。

不说那么多废话了,看代码吧。。。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class ConsumerIrActivity extends Activity {
private static final String TAG = "ConsumerIrTest";
private TextView mFreqsText;
// Android4.4之后 红外遥控ConsumerIrManager
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 = { 36,23,21,21,23,55,23,55,23,21,23,55,23,22,23,54,23,22,23,55,
23,55,23,402,38,22,22,22,23,55,23,55,23,21,23,55,23,22,22,54,23,22,23,55,23,
55,22,402,38,21,23,22,23,55,23,55,23,21,23,55,23,21,23,55,23,22,23,55,23,55,22 };

// 在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());// 显示结果
}
};
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<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>

小米TV控制指令

1
2
3
4
5
6
7
8
9
10
11
开关机 36,23,21,21,23,55,23,55,23,21,23,55,23,22,23,54,23,22,23,55,23,55,23,402,38,22,22,22,23,55,23,55,23,21,23,55,23,22,22,54,23,22,23,55,23,55,22,402,38,21,23,22,23,55,23,55,23,21,23,55,23,21,23,55,23,22,23,55,23,55,22
上 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,34,22,33,23,45,22,55,23,475,39,22,23,45,23,22,23,33,23,45,23,22,23,22,23,33,23,34,23,44,23,56,23,476,38,22,23,44,23,21,23,33,23,44,23,21,23,22,23,33,23,33,23,44,23,56,23
下 36,23,23,43,23,22,23,32,23,44,23,22,23,21,23,33,23,44,23,43,23,22,23,491,38,22,23,43,23,22,23,33,22,44,23,22,23,21,23,33,23,44,23,43,23,22,23,492,38,22,23,43,23,22,23,33,22,43,23,22,23,21,23,33,23,44,23,44,22,22,23
左 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,45,23,56,23,33,23,33,23,474,39,22,23,45,22,22,22,33,23,45,22,22,23,22,23,44,23,55,23,34,22,33,23,475,38,22,22,44,23,22,23,34,23,44,23,22,23,21,23,44,23,56,23,33,23,34,23
右 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,56,23,22,23,22,23,45,23,497,39,22,23,45,23,22,23,33,23,45,23,22,23,22,23,56,23,22,23,22,23,44,23,498,38,22,23,44,23,22,23,33,23,44,23,21,23,21,23,55,23,21,23,22,22,44,23
ok 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,56,23,33,23,21,23,55,23,474,38,22,23,44,23,21,23,33,23,44,23,21,23,22,23,55,23,33,23,22,23,56,23,475,38,22,23,45,23,22,23,33,23,44,23,22,23,22,23,56,23,33,23,22,23,55,23
音量+ 36,23,21,43,23,22,23,32,23,44,23,22,23,21,23,55,23,44,23,21,23,22,23,491,37,22,21,43,23,22,23,32,23,44,23,22,23,21,23,55,23,44,23,21,23,22,23,491,37,22,21,43,23,22,23,32,23,44,23,22,23,21,23,55,23,44,23,21,23,22,23
音量- 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,56,23,56,23,22,23,33,23,479,39,22,23,45,23,22,23,33,23,45,23,22,23,22,23,56,23,56,23,22,23,33,23,480,38,22,23,44,23,21,23,33,23,44,23,22,22,22,23,55,23,55,23,21,23,33,23
菜单 36,23,23,44,23,22,23,33,23,44,23,22,23,22,23,33,23,22,23,44,23,45,23,3955
返回 36,23,23,43,23,22,23,32,23,44,23,22,23,21,23,33,23,55,23,44,22,33,23,470,38,22,22,43,23,22,23,32,23,44,23,22,23,21,23,33,23,55,23,44,22,33,23,470,38,22,23,43,23,22,23,33,22,44,23,22,23,21,23,33,23,55,23,44,22,32,23
首页 36,23,21,43,23,22,23,32,23,44,23,22,23,21,23,44,23,21,23,33,23,44,23,492,38,21,23,44,23,22,23,32,23,44,23,22,23,21,23,44,23,21,23,33,23,44,23,492,38,21,23,44,23,22,23,32,23,44,23,22,21,21,23,44,23,21,23,33,23,44,23