我正在制作一款使用IR发射器控制电视的应用。该应用程序在我的Galaxy s5上完美运行,但在我的HTC ONE M8上却没有。我设法修改代码以使其在HTC上工作并假设这只是HTC手机的一个孤立问题。然而,一旦我升级到Lollipop,我的IR冲击波应用程序不再适用于我。我已经在不同的手机上测试了我的应用程序,如果IR冲击波可以工作,似乎有大约50/50的机会(是的,我只使用有红外爆破器的设备)。
所以我的问题是:我是否需要修改我用不同版本的android传输IR发射器的方式?
我能想出IR冲击波不能正常工作的唯一原因可能是因为从Android版本到版本都有变化吗?所以我需要根据手机所在的Android版本修改我的代码?有谁知道这是否正确?
我在Galaxy s5上传输的代码:
// Get a reference to the ConsumerIrManager
mCIR = (ConsumerIrManager)getSystemService(Context.CONSUMER_IR_SERVICE);
//If no ir blaster
if (!mCIR.hasIrEmitter()) {
Toast.makeText(getApplicationContext(), "Possibly No IR Blaster", Toast.LENGTH_LONG).show();
}
// otherise send signal
else {
mCIR.transmit(freq, PATTERN);
}
然后对于HTC设备我做的一切都是一样的,除了出于某种原因修改我的功能。
HTC设备代码:
mCIR.transmit(freq, translateForHTCDevices(PATTERN));
// Then here is how I modify it for HTC devices, just multiply each value by 27.7... weird right?...
private int[] translateForHTCDevices( int [] input) {
int [] result = new int[input.length];
for( int i = 0; i < input.length; i++) {
result[i] = (int) (input[i] * (27.7));
}
return result;
}
那我在这里做错了什么?这是HTC设备的问题还是仅仅是我测试的HTC设备是在不同版本的Android上,实际上问题是我的代码在某些Android版本上不起作用?
感谢您提供的任何帮助,我真的坚持如何让IR Blaster在所有Android版本的设备上运行。