Мне нужно отправить определенный шаблон с помощью встроенного ИК-бластера на устройство BLE.
Для этого я использую ConsumerIrManager
из Android SDK, но я заметил странное поведение.У меня есть Xiaomi Redmi Note 7 (Android 9) и Samsung Galaxy S6 (Android 8), а приложение имеет minSdk
21, поэтому не нужно беспокоиться о проблемах перед KitKat.
Проблема в том, что та же полезная нагрузкадает различную форму волны.
Шаблон определяется следующим образом:
new int[] { 1800, 1800, 900, 900, 900, 900, 900, 900, 1800, 1800, 1800, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 };
Числа обозначают длительность (в миллисекундах) каждого сигнала включения / выключения.
Теперь для Xiaomiдекодированный сигнал выглядит так:
, и это именно то, что говорит массив (более длинная часть - 1800, а более короткая - 900 (считая как минимумы, так и максимумы))).
Теперь на Samsung начало декодированного сигнала выглядит нормально, но через некоторое время он начинает действовать по-своему.
Как вы можете видеть, до тех пор, пока последние 3 бита (001, зеленым) не выглядят нормально, но затем что-то происходит, и он начинает испускать то, что я не определил в массиве.
Кроме того, я протестировал то же самое на Huawei, и он испускает что-то другоеЧем оба этих устройства.
Я что-то упускаю из-за поведения ConsumerIrManager
или у меня должна быть разная полезная нагрузка для каждого производителя?