gpt4 book ai didi

java - 红外遥控应用程序

转载 作者:太空狗 更新时间:2023-10-29 13:23:40 25 4
gpt4 key购买 nike

我正在制作一个带有 6 个按钮的远程控制应用程序,它适用于三星电视。对于 kitkat,我使用了新的 api ConsumerIRmanager,但我希望该应用程序也能与 jellybean 一起使用,因此该应用程序非常适合 kitkat 版本,但它不会在 jellybean 上启动,这里是代码:

public class MainActivity extends Activity {

Object irdaService;
Method irWrite;
SparseArray<String> irData;
TextView mFreqsText;
ConsumerIrManager mCIR;
ImageButton power;
SeekBar sBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
// Be sure to call the super class.
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_layout);
power = (ImageButton) findViewById(R.id.powerBtn);
power.setVisibility(View.GONE);
irData = new SparseArray<String>();
irData.put(
R.id.toggleButton1,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
irData.put(
R.id.upProg,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 003f 0015 003f 0015 0015 0015 0040 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
irData.put(
R.id.downBtn,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 0015 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
irData.put(
R.id.minusBtn,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
irData.put(
R.id.plusBtn,
hex2dec("0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e"));
irData.put(
R.id.muteBtn,
hex2dec("0000 006c 0022 0003 00ab 00aa 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 003f 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0714 00ab 00aa 0015 0015 0015 0e91"));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

irInit4KitKat();
} else {
irInit4JellyBean();
}

}

@TargetApi(Build.VERSION_CODES.KITKAT)
public void irInit4KitKat() {

// Get a reference to the ConsumerIrManager
mCIR = (ConsumerIrManager) getSystemService(Context.CONSUMER_IR_SERVICE);

}

public void irInit4JellyBean() {
Object irService = this.getSystemService("irda");
//irService.getClass();
Class irClass = irService.getClass();
Class params[] = new Class[1];
params[0] = String.class;
try {
irWrite = irClass.getMethod("write_irsend", params);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}

public void irSend(View view) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

irSend4Kitkat(view);
} else {

irSend4JellyBean(view);
}
}

@TargetApi(Build.VERSION_CODES.KITKAT)
private void irSend4Kitkat(View view) {

String data = irData.get(view.getId());
if (data != null) {
String values[] = data.split(",");
int[] pattern = new int[values.length - 1];

for (int i = 0; i < pattern.length; i++) {
pattern[i] = Integer.parseInt(values[i + 1]);
}

mCIR.transmit(Integer.parseInt(values[0]), pattern);
}
}

private void irSend4JellyBean(View view) {
String data = irData.get(view.getId());
if (data != null) {
try {
irWrite.invoke(irdaService, data);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}

protected String hex2dec(String irData) {
List<String> list = new ArrayList<String>(Arrays.asList(irData
.split(" ")));
list.remove(0); // dummy
int frequency = Integer.parseInt(list.remove(0), 16); // frequency
list.remove(0); // seq1
list.remove(0); // seq2

for (int i = 0; i < list.size(); i++) {
list.set(i, Integer.toString(Integer.parseInt(list.get(i), 16)));
}

frequency = (int) (1000000 / (frequency * 0.241246));
list.add(0, Integer.toString(frequency));

irData = "";
for (String s : list) {
irData += s + ",";
}
return irData;
}
}

主要内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.irtest"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.TRANSMIT_IR"
android:required="false" />
<uses-feature android:name="android.hardware.consumerir" />
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />


<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

我无法启动 Activity ComponentInfo com.example.irtest/com.irtest.MainActivity : java.lang.NullPointerException我在这一行有问题 Class irClass = irService.getClass();

最佳答案

“irda”服务仅适用于 KitKat 之前的三星设备。在 KitKat 及更高版本上,所有 IR 命令都在 Consumer IR API 中处理。

关于java - 红外遥控应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com