Фрагментация Android IR Blaster/передатчика

Я делаю приложение, которое использует ИК-бластер для управления моим телевизором. Приложение отлично работало на моем Galaxy s5, но не на моем HTC ONE M8. Мне удалось изменить код, чтобы заставить его работать на HTC, и я предположил, что это была просто изолированная проблема с телефонами HTC. Однако, как только я обновился до Lollipop, мое приложение IR blaster больше не работает для меня. Я тестировал свое приложение на разных телефонах, и вероятность того, что ИК-бластер будет работать, составляет примерно 50/50 (да, я использую только устройства с ИК-бластерами).

Итак, мой вопрос: нужно ли мне изменять способ передачи с помощью ИК-бластера для другой версии Android?

Единственная причина, по которой я могу придумать, что ИК-бластер не работает, может быть, потому что в него были внесены изменения от версии к версии 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?

Спасибо за любую помощь, которую вы можете предоставить, я действительно застрял здесь, как заставить ИК-бластер работать на всех устройствах со всеми версиями Android.


person alexward1230    schedule 24.03.2015    source источник
comment
Я нашел кое-что очень полезное! stackoverflow.com/questions/28794899/ir- эмиттер-и-андроид-5-0   -  person alexward1230    schedule 24.03.2015