我正在编写一个在M8中使用IR发射器的程序。我查看了所有可以找到的样本,并且不知道我做错了什么。以下是我的代码中的一些片段:
MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
{
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
int[] pattern = {22, 22};
ConsumerIrManager irManager = (ConsumerIrManager) getApplicationContext().getSystemService(Context.CONSUMER_IR_SERVICE);
if (irManager != null)
{
if (irManager.hasIrEmitter())
{
try
{
while (true)
{
// transmit the pattern at 38KHz
irManager.transmit(38000, pattern);
}
} catch (Exception e)
{
String message = e.getMessage();
}
}
}
}
这是AndroidManifest.xml
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.TRANSMIT_IR" />
运行此程序时,出现以下错误
10-26 18:00:32.703 947-1735/? E/ConsumerIrService﹕ Error transmitting: -18
10-26 18:00:32.713 947-1443/? E/ConsumerIrService﹕ Error transmitting: -22
10-26 18:00:32.843 947-958/? E/ConsumerIrService﹕ Error transmitting: -18
10-26 18:00:32.863 947-1514/? E/ConsumerIrService﹕ Error transmitting: -22
此时我只是试图让红外LED开启,因此真正的循环使我能够拿到相机并检查红外LED是否正在发射。
我尝试了各种模式,在上面的代码片段中,为了简洁起见,我将其简化为简单模式。我已经使用了看到红外线的相机来验证红外LED实际上没有为这个程序启动,而它确实适用于其他程序(例如HTC的电视应用程序)。我试过从Eclipse和Android Studio运行它。在我的搜索中,似乎错误-22是一个无效参数,但我不确定我是否给出了无效参数,或者无效参数是否在发送函数中发生了多个层。
注意:虽然我在try块中有传输调用,但运行此代码时不会触发异常。