Intereting Posts
Как загрузить библиотеку поддержки Android v7 в проект Android SBT? Получить ссылку на переключатель ящика в панели действий поддержки Измените цвет ТЕКСТА (не фона) на счетчике при выборе элемента Подключиться к определенному андроиду точки доступа Проблема при использовании отпечатка пальца Android: IV требуется при расшифровке. Используйте IvParameterSpec или AlgorithmParameters для его предоставления. Как ограничить данные поставщика контента в приложениях Распознавание голоса в приложении для Android, которое всегда прослушивается Заглавная буква для EditText Индивидуальный уровень трафика для Google Maps Не удалось найти Library.apk! Лицензирование на основе подписки на Android Как опубликовать источники Android .aar, чтобы заставить Android Studio автоматически их найти? Что делает опция «Incremental Dex» в Android Studio? ActionBar настраиваемый заголовок как ImaveView вместо TextView Какова реальная цель тега contentDescription для Android?

ИК-излучатель и Android 5.0

Я столкнулся с проблемой с ИК-излучателем на моей Galaxy S5 под управлением Android 5.0.

До того, как я обновил его до версии 5.0, мое приложение отлично работало на моем телефоне, но теперь устройство, которое, как я полагаю, у меня получилось, не реагирует. Когда я нажимаю на свое приложение для отправки ИК-кода, светодиод мигает, указывая на то, что IR-менеджер активирован, и я могу получить сигнал с ИК-фотодиодом, подключенным к моей области видимости. К сожалению, форма сигнала, который я получаю, сильно отличается от того, что должно быть.

Могу добавить, что тот же самый код, который работает на моем планшете под Android 4.4.2, все еще работает отлично.

Чтобы помочь в ответе на мой вопрос, образец моего кода:

private String commande="0000 0070 0000 0032 0080 003F 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 " + "0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 " + "0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 " + "0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0030 0010 0A98"; IRManager=(ConsumerIrManager)activité.getSystemService(Context.CONSUMER_IR_SERVICE); code=commandConversion(commande); IRManager.transmit(code.getFrequency(),code.getCodes()); private RemoteCommandeCode commandConversion(String command) { List<String> list; RemoteCommandeCode code; int frequency; list= new ArrayList<String>(Arrays.asList(command.split(" "))); list.remove(0); // dummy frequency = Integer.parseInt(liste.remove(0), 16); // frequency list.remove(0); // seq1 list.remove(0); // seq2 code=new RemoteCommandeCode(list.size()); for (int i = 0; i < list.size(); i++) { code.setCode(i,Integer.parseInt(list.get(i), 16)); } frequency = (int) (1000000 / (frequency * 0.241246)); code.setFrequency(frequency); return(code); } public class RemoteCommandeCode { private int fréquence; private int [] codes; public RemoteCommandeCode(int nombreCodes){ codes=new int[nombreCodes]; } public int getFrequency() { return frequency; } public void setFrequency(int frequency) { this.frequency = frequency; } public int [] getCodes() { return codes; } public void setCodes(int [] codes) { this.codes = codes; } public void setCode(int i,int code){ codes[i]=code; } } 

Как уже было сказано, изображения сигнала, испускаемого простым кодом «0000 0070 0000 0003 0010 0020 0010 0020 0010 0020», я получаю 4.4.2: Сигнал на Android 4.4.2

И на Android 5.0: Сигнал на Android 5.0

Solutions Collecting From Web of "ИК-излучатель и Android 5.0"

Этот метод исправит проблемы с IR для всех версий Android

 /* * preforms some calculations on the codesets we have in order to make them work with certain models of phone. * * HTC devices need formula 1 * Samsungs want formula 2 * * Samsung Pre-4.4.3 want nothing, so just return the input data * */ private static int[] string2dec(int[] irData, int frequency) { int formula = shouldEquationRun(); //Should we run any computations on the irData? if (formula != 0) { for (int i = 0; i < irData.length; i++) { if (formula == 1) { irData[i] = irData[i] * (1000000/frequency);//the brackets should avoid an arithmetic overflow } else if (formula == 2) { irData[i] = (int) Math.ceil(irData[i] * 26.27272727272727); //this is the samsung formula as per http://developer.samsung.com/android/technical-docs/Workaround-to-solve-issues-with-the-ConsumerIrManager-in-Android-version-lower-than-4-4-3-KitKat } } } return irData; } /* * This method figures out if we should be running the equation in string2dec, * which is based on the type of device. Some need it to run in order to function, some need it NOT to run * * HTC needs it on (HTC One M8) * Samsung needs occasionally a special formula, depending on the version * Android 5.0+ need it on. * Other devices DO NOT need anything special. */ private static int shouldEquationRun() { //Some notes on what Build.X will return //System.out.println(Build.MODEL); //One M8 //System.out.println(Build.MANUFACTURER); //htc //System.out.println(Build.VERSION.SDK_INT); //19 //Samsung's way of finding out if their OS is too new to work without a formula: //int lastIdx = Build.VERSION.RELEASE.lastIndexOf("."); //System.out.println(Build.VERSION.RELEASE.substring(lastIdx+1)); //4 //handle HTC if (Build.MANUFACTURER.equalsIgnoreCase("HTC")) { return 1; } //handle Lollipop (Android 5.0.1 == SDK 21) / beyond if (Build.VERSION.SDK_INT >= 21) { return 1; } //handle Samsung PRE-Android 5 if (Build.MANUFACTURER.equalsIgnoreCase("SAMSUNG")) { if (Build.VERSION.SDK_INT >= 19) { int lastIdx = Build.VERSION.RELEASE.lastIndexOf("."); int VERSION_MR = Integer.valueOf(Build.VERSION.RELEASE.substring(lastIdx + 1)); if (VERSION_MR < 3) { // Before version of Android 4.4.2 //Note: NO formula here, not even the other one return 0; } else { // Later version of Android 4.4.3 //run the special samsung formula here return 2; } } } //if something else... return 0; } 

* Edit: Благодаря помощи OP я смог выяснить, как это исправить. Этот ответ должен теперь решить эту проблему.