Действует ли Endian по-разному на разных устройствах?
Я использую AudioRecord.read(byte[], int, int)
для записи 16-битных данных PCM. Используя этот метод, я могу получить данные с прямым порядком байтов на моем устройстве, но я не знаю, работает ли он на других устройствах. Хотя я видел ссылку на API, я не мог понять это.
Зависит ли endian от родного порядка?
2 ответа
Вам не нужно беспокоиться об этом, Android позаботится об этом за вас.
Данные в Java всегда представлены в виде байтов
К сожалению, это не так просто, как предполагает предыдущий (3 года) ответ.
Если вы используете 16-битный PCM, Android будет иметь его кодирование с прямым порядком байтов. Смотрите AudioFormat. Тестирование показало, что на Nexus 5x это был BE, Xiaomi MI3s сообщили LE.
Чтобы получить постоянство вашего устройства вы можете использовать ByteOrder.nativeOrder()