Как улучшить блютуз на андроид
Некоторые пользователи беспроводных наушников отмечают низкое качество звука и недостаток высоких частот при использовании стандартного Bluetooth-кодека SBC, который поддерживают все аудиоустройства. Частой рекомендацией для улучшения звука является покупка устройств и наушников с поддержкой кодеков aptX и LDAC. Эти кодеки требуют лицензионных отчислений, поэтому устройства с их поддержкой стоят дороже.
Оказывается, низкое качество SBC обусловлено искусственными ограничениями Bluetooth-стеков и настроек наушников, и это ограничение можно обойти на любых существующих устройствах, путём программных изменений смартфона или компьютера.
Кодек SBC
У кодека SBC есть множество разных параметров, которые согласуются на этапе установки соединения. Среди них:
- Количество и тип каналов: Joint Stereo, Stereo, Dual Channel, Mono;
- Количество частотных полос: 4 или 8;
- Количество блоков в пакете: 4, 8, 12, 16;
- Алгоритм распределения битов при квантовании: Loudness, SNR;
- Максимальное и минимальное значение пула битов, используемых при квантовании (bitpool): обычно, от 2 до 53.
Декодирующее устройство обязано поддерживать любое сочетание этих параметров. Кодирующее устройство может реализовывать не все.
Существующие Bluetooth-стеки, как правило, согласуют следующий профиль: Joint Stereo, 8 полос, 16 блоков, Loudness, bitpool 2..53. Этот профиль кодирует 44.1 кГц аудио с битрейтом 328 кбит/с.
Параметр bitpool напрямую влияет на битрейт в рамках одного профиля: чем он выше, тем выше битрейт, а следовательно и качество.
Однако параметр bitpool не привязан к конкретному профилю; влияние на битрейт также в значительной степени оказывает и другие параметры: тип каналов, количество частотных полос, количество блоков. Поднять битрейт можно косвенно, путем согласования нестандартных профилей, без изменения bitpool.
Формула подсчета битрейта SBC
Например, режим Dual Channel кодирует каналы раздельно, используя весь bitpool для каждого из каналов. Заставив устройство использовать Dual Channel вместо Joint Stereo, мы получим почти удвоенный битрейт при том же максимальном значении bitpool: 617 кбит/с.
По моему мнению, использование не привязанного к профилю значения bitpool на этапе согласования — недоработка стандарта A2DP, которая и привела к искусственному ограничению качества SBC. Разумней было бы согласовывать bitrate, а не bitpool.
Такие фиксированные значения Bitpool и Bitrate берут свое начало из таблицы с рекомендованными к использованию значениями для высококачественного аудио. Но рекомендация — не повод ограничиваться этими значениями.
Спецификация A2DP v1.2, которая была активна с 2007 по 2015 год, предписывает всем декодирующим устройствам корректно работать с битрейтами до 512 кбит/с:
The decoder of the SNK shall support all possible bitpool values that do not result in excess of the maximum bit rate. This profile limits the available maximum bit rate to 320kb/s for mono, and 512kb/s for two-channel modes.
В новой версии спецификации ограничение по битрейту отсутствует. Предполагается, что современные наушники, выпущенные после 2015 года и поддерживающие EDR, могут поддерживать битрейты до ≈730 кбит/с.
По какой-то причине, у проверенных мной Bluetooth-стеков Linux (PulseAudio), Android, Blackberry и macOS есть искусственные ограничения максимального значения параметра bitpool, который напрямую влияет на максимальный битрейт. Но это — не самая большая проблема, почти все наушники тоже ограничивают максимальное значение bitpool числом 53.
Как я уже успел убедиться, большинство устройств отлично работает на модифицированном Bluetooth-стеке с битрейтом в 551 кбит/с, без прерываний и треска. Но такой битрейт никогда не будет согласован в обычных условиях, на обычных Bluetooth-стеках.
Модифицируем Bluetooth-стек
В любом Bluetooth-стеке, который совместим со стандартом A2DP, есть поддержка режима Dual Channel, но активировать её из интерфейса не представляется возможным.
Давайте добавим переключатель в интерфейс! Я сделал патчи для Android 8.1 и Android 9, которые добавляют полноценную поддержку Dual Channel в стек, добавляют режим в меню переключения режима в инструменты разработчика, и обрабатывают SBC с поддержкой Dual Channel так, будто это дополнительный кодек, вроде aptX, AAC или LDAC (Android называет это HD Audio), добавляя галочку в настройки Bluetooth-устройства. Вот как это выглядит:
При активации галочки, Bluetooth-аудио начинает передаваться с битрейтом 551 кбит/с, если наушники поддерживают соединение на скорости 3 мбит/с, или 452 кбит/с, если наушники поддерживают только 2 мбит/с.
- LineageOS
- Resurrection Remix
- crDroid
Откуда взялись 551 и 452 кбит/с?
Технология разделения эфира в Bluetooth предназначена для эффективной передачи больших пакетов фиксированного размера. Передача данных происходит слотами, самое большое количество слотов, отправляемых за одну передачу — 5. Также есть режимы передачи, использующие 1 или 3 слот, но не 2 или 4. В 5 слотах можно передать до 679 байт на скорости соединения 2 мбит/с и до 1021 байт на скорости 3 мбит/с, а в 3 — 367 и 552 байта соответственно.
Если мы хотим передать меньше данных, чем 679 или 1021 байт, но больше, чем 367 или 552 байта, то передача всё равно займет 5 слотов, а данные будет передаваться за такое же время, что уменьшает эффективность передачи.
SBC в режиме Dual Channel, на 44100 Гц-аудио с параметрами Bitpool 38, 16 блоков во фрейме, 8 частотных диапазонов, кодирует аудио во фреймы размером 164 байт, с битрейтом 452 кбит\с.
Аудио должно быть инкапсулировано в протоколы передачи L2CAP и AVDTP, которые забирают 16 байт от полезной аудионагрузки.
Таким образом, в одну Bluetooth-передачу с 5 слотами удаётся вместить 4 аудиофрейма:
Мы вместили 11.7 мс аудиоданных в отправляемый пакет, который будет передан за 3.75 мс, и у нас осталось 6 неиспользованных байт в посылке.
Если чуть поднять bitpool, 4 аудиофрейма уже не удастся упаковать в одну посылку. Придётся отправлять по 3 фрейма за раз, что снижает эффективность передачи, уменьшает количество передаваемого аудио за одну посылку, и быстрее приведёт к заиканиям аудио при плохих радиоусловиях.
Таким же образом был подобран битрейт 551 кбит/с для EDR 3 мбит/с: с Bitpool 47, 16 блоками во фрейме, 8 частотными диапазонами получается размер фрейма 200 байт, при битрейте 551 кбит/с. В одну посылку вмещается 5 фреймов или 14.6 мс музыки.
Зачем всё это нужно?
Вопреки расхожему мнению о качестве звука кодека aptX, на некоторых файлах он может давать результаты хуже, чем SBC со стандартным битрейтом в 328 кбит/с.
SBC динамически выделяет биты квантования для частотных полос, действуя по принципу «от нижних к верхним». Если весь битрейт использовался на нижние и средние частоты, верхние частоты «обрежутся» (вместо них будет тишина).
aptX квантует частотные полосы одним и тем же количеством бит постоянно, из-за чего у него постоянный битрейт: 352 кбит/с для 44.1 кГц, 384 кбит/с для 48 кГц, и он не может «перенести биты» на те частоты, которые больше всего в них нуждаются. В отличие от SBC, aptX не будет «обрезать» частоты, а будет добавлять в них шумы квантования, уменьшая динамический диапазон аудио, и иногда привносить характерные потрескивания. SBC же «съедает детали» — отбрасывает наиболее тихие участки.
В среднем, по сравнению с SBC 328k, aptX вносит меньше искажений в музыку с широким частотным диапазоном, но на музыке с узким диапазоном частот и широким динамическим диапазоном SBC 328k иногда выигрывает.
Рассмотрим частный случай. Спектрограмма записи игры на фортепиано:
Основная энергия лежит в частотах от 0 до 4 кГц, и продолжается до 10 кГц.
Спектрограмма файла, сжатого в aptX, выглядит следующим образом:
А так выглядит SBC 328k.
Видно, что SBC 328k периодически полностью отключал диапазон выше 16 кГц, и расходовал весь доступный битрейт на диапазоны ниже этого значения. Однако, aptX внес больше искажений в слышимый человеческим ухом спектр частот, что можно видеть на вычтенной оригинальной спектрограмме из спектрограммы aptX (чем ярче, тем больше искажений):
В то время как SBC 328k меньше испортил сигнал в диапазоне от 0 до 10 кГц, а остальное — обрезал:
Битрейта 485k SBC хватило, чтобы сохранить весь диапазон частот, без отключения полос.
SBC 485k на этой композиции значительно опережает aptX в диапазоне 0-15 кГц, и с меньшей, но все же заметной разницей — в 15-22 кГц (чем темнее, тем меньше искажений):
Переключившись на высокобитрейтный SBC, вы получите звук, зачастую превосходящий aptX, на любых наушниках. На наушниках, поддерживающих подключение EDR 3 мбит/с, битрейт 551 кбит/с даёт звук, сравнимый с aptX HD.
А можно ещё больше?
В патче для Android также имеется опция для ещё большего повышения битрейта для устройств EDR 2 мбит/с. Можно повысить битрейт с 452 кбит/с до 595 кбит/с, ценой уменьшения стабильности передачи в сложных радиоусловиях.
Достаточно установить переменную persist.bluetooth.sbc_hd_higher_bitrate в значение 1:
Патч на экстремальный битрейт пока принят только в LineageOS 15.1, но не в 16.0.
Совместимость с устройствами
SBC Dual Channel поддерживается практически всеми наушниками, колонками и автомобильными головными устройствами. Это немудрено — стандарт предписывает его поддержку в любых декодирующих устройствах. Есть небольшое количество устройств, на которых этот режим вызывает проблемы, но это — единичные экземпляры.
Более подробно с совместимыми устройствами можно ознакомиться на 4pda или xda-developers.
Сравнение различий звука
Связь с разработчиками Android
Я писал многим разработчикам Bluetooth-стека из Google, с просьбой рассмотреть включение патчей в основную ветку Android — AOSP, но не получил ни одного ответа. Мои патчи в системе работы с патчами Gerrit для Android также остались без комментариев со стороны кого-либо причастного.
Я был бы рад, если бы мне посодействовали в связи с разработчиками из Google и внедрении SBC HD в Android. Патчcет в gerrit уже устарел (это одна из ранних ревизий), и я его обновлю, если разработчиков заинтересуют мои изменения (мне непросто его обновлять, у меня нет совместимых с Android Q устройств).
Технологию Bluetooth сегодня использует каждый второй владелец смартфона для сопряжения с другими устройствами. Но только единицами пользователей проводится специальная настройка Bluetooth на Android, которая помогает на порядок быстрее находить стабильную связь с устройствами. В этой статье рассматриваются главные настройки Bluetooth-соединения и его оптимизации для дальнейшего комфортного использования.
Возможности технологии Bluetooth на Android
Для сопряжения устройств через Bluetooth не используется интернет-трафик, необходимо просто наличие двух устройств с исправными модулями.
С появлением и развитием Wi-Fi популярность технологии Bluetooth не уменьшилась, потому что она использует на порядок меньше энергоресурсов. По этой причине создаются беспроводные наушники, спортивные браслеты, умные часы и другие Bluetooth-устройства.
Настройка Bluetooth на Android-устройствах
При правильной настройке Bluetooth-модуля можно получить максимальный уровень комфорта от использования: быстрое сопряжение с другими аксессуарами, высокую скорость передачи данных. Пользователь, который знает, как настроить на Android Bluetooth, получает ускорение и стабилизацию процесса передачи любых файлов начиная от рабочих документов и заканчивая отснятыми видеоматериалами.
Включение модуля Bluetooth
Наладка любого оборудования, работающего под управлением операционной системы Android, начинается непосредственно с его активации, то есть нужно включить Bluetooth на планшете Android. Для этого следует открыть меню настроек, найти раздел Bluetooth и передвинуть ползунок вправо.
Некоторые настройки модуля станут доступными только после того, как вы активируете передатчик.
Переименование устройства
При выборе пункта меню «Переименование устройства», можно изменить стандартное название гаджета на более узнаваемое, которое будет отображаться на других девайсах в процессе сопряжения или в момент передачи данных.
Видимость устройства
В целях безопасности все Android-устройства изначально находятся в невидимом положении. Данная настройка изменяется только на время, достаточное для поиска и сопряжения двух устройств. В ранних версиях операционной системы Android данную функцию пользователю приходилось включать вручную.
В настоящий момент можно просто зайти в настройки Bluetooth, устройство автоматически перейдет в видимый режим. Далее дождаться, пока гаджет оппонента отсканирует сеть на наличие доступных устройств.
Настройка сопряженных девайсов
При первом подключении к любому устройству система Android предлагает наладить сопряжение. Стоит согласиться, так как впоследствии больше не придется сканировать систему и заставлять оппонента переходить в видимый режим для соединения.
Сопряженные устройства могут передавать данные друг другу, даже находясь в невидимом режиме. При этом для удобства в настройках сопряженных устройств можно изменить имя того или иного гаджета.
Другие настройки сопряжения остаются недоступными даже для пользователей с рутированными устройствами (с полными правами на использование).
Просмотр полученных данных
Полезной настройкой модуля Bluetooth является пункт «Полученные файлы». Данная настройка переносит пользователя в папку, куда сохраняются все файлы с других устройств, полученных через Bluetooth.
Эта директория создается по умолчанию на внутреннем накопителе устройства. При желании все файлы из этой директории можно переместить в другие разделы, например, на внешний накопитель.
Удобство данной функции заключается в получении доступа к данным без затрат времени на поиски диспетчером файлов. При ее выборе открывается полный перечень ранее полученной информации.
Использование инженерного меню для настройки Bluetooth-модуля
Инженерное меню – это инструмент, который используют разработчики программного обеспечения в финальных корректировках перед выпуском системы. Настройка Bluetooth в инженерном меню Android должна остаться без изменений, если вы не обладаете надлежащими знаниями и опытом.
В разделе информации об устройстве найдите установки Bluetooth-модуля. Запустите повторное сканирование и измените параметры поиска. Но лучше отказаться от столь опрометчивых шагов, так как любые изменения могут привести к серьезным ошибкам.
Обновление Bluetooth-модуля на Android
Обновление Bluetooth-модуля может быть программным и аппаратным. В первом случае все модернизации зачастую вносятся разработчиками программного обеспечения и заливаются на гаджет вместе с обновлениями системы.
Сегодня на вашем телефоне гораздо больше возможностей Bluetooth. Вот отличные советы и приложения, чтобы получить больше от Bluetooth на устройстве Android.
1. Изучите встроенные настройки Bluetooth
Вы можете многое сделать, просто изучив встроенные в телефон настройки Bluetooth. Например, когда у вас подключены наушники, Android предлагает множество вариантов для настройки ваших предпочтений.
Вы можете включить HD-аудио на совместимых устройствах, отредактировать, должен ли он синхронизироваться с громкостью звука телефона, и многое другое. Чтобы получить доступ к этому, вам нужно будет Настройки> Подключенные устройства, Нажмите значок зубчатого колеса рядом с подключенным аксессуаром; вам может понадобиться заглянуть под Ранее подключенные устройства найти их.
Помимо этих параметров, вы можете редактировать аудиокодек Bluetooth, если у вас возникли трудности или Android не распознает предпочитаемый вами вариант устройства по умолчанию. Это один из полезных инструментов в Параметры разработчика меню, указанное как Bluetooth аудио кодек,
2. Разблокировать или заблокировать телефон с помощью Bluetooth
Как только они отключатся или выйдут за пределы диапазона, ваш телефон автоматически заблокируется. Стоит отметить, что Smart Lock работает с любым гаджетом Bluetooth и не ограничивается аудио аксессуарами. Вы можете настроить его с помощью умных часов или системы Bluetooth вашего автомобиля.
Чтобы настроить Smart Lock, перейдите на Безопасность и местоположение > Умный замок > Доверенные устройства, Здесь вам будет предложено добавить доверенное устройство. Вы можете выбрать любой из существующих сопряженных устройств. Подтвердите выбор и все готово.
3. Разблокируйте компьютер с Windows, Mac или Chrome через Bluetooth
Ваш телефон Android также может разблокировать или заблокировать компьютер через Bluetooth. И Windows, и Chrome OS включают собственные решения для этого. Пользователи Mac, с другой стороны, должны будут полагаться на стороннее приложение.
Chromebook имеет функцию Smart Lock, которая позволяет разблокировать их с помощью сенсора отпечатков пальцев вашего телефона. Чтобы включить его, откройте настройки на вашем Chromebook и ниже Подключенные устройства, настройте свой телефон Android. Следуйте инструкциям, и вы будете готовы к его использованию. В следующий раз, когда вы окажетесь на экране входа в Chrome OS, вам будет предложено использовать Smart Lock, если Bluetooth вашего телефона включен.
В Windows есть опция безопасности Dynamic Lock, которая блокирует ваш компьютер, если Bluetooth-устройство покидает свой радиус. Доступ к нему можно получить, проверив Разрешить Windows автоматически блокировать ваше устройство, когда вас нет коробка в настройки > Счета > Варианты входа > Динамическая блокировка, Если вы хотите разблокировать компьютер с Windows через биометрические данные телефона, попробуйте приложение «Разблокировка по отпечаткам пальцев».
К сожалению, macOS не содержит никаких специфических для Android функций безопасности. Вместо этого вы можете установить бесплатное приложение под названием DroidID. После сопряжения вы можете войти в свой компьютер, используя сканер отпечатков пальцев вашего телефона.
4. Воспользуйтесь преимуществами Bluetooth-апплетов IFTTT
IFTTT может помочь вам автоматизировать ряд действий Bluetooth, которые в противном случае пришлось бы выполнять вручную. Вы можете использовать сервис для установки триггеров Bluetooth, которые выполняются на основе определенного события.
Скажем, вы часто играете музыку, когда подключаете наушники Bluetooth. Вместо того, чтобы открывать приложение самостоятельно, вы можете создать апплет IFTTT для его автоматизации. Аналогичным образом IFTTT может отключить Bluetooth при отключении беспроводного устройства.
Все апплеты IFTTT бесплатны. Вы можете просмотреть их, выполнив поиск «Bluetooth» в приложении IFTTT.
5. Соревнуйтесь локально с многопользовательскими играми на основе Bluetooth
Вам не всегда нужен Wi-Fi, чтобы играть в многопользовательские игры на вашем телефоне. Благодаря Bluetooth вы можете легко участвовать в локальных сражениях.
В магазине Play Store представлены сотни игр с многопользовательскими режимами Bluetooth. Вы можете мгновенно создать местное лобби и соревноваться с друзьями без подключения к интернету. Из-за ограничений Bluetooth игры по понятным причинам проще.
Одно из приложений, которое поможет вам начать работу, называется Dual! Как следует из названия, это простая аркада с упором на многопользовательские игры. Подробнее об этом смотрите в нашем списке лучших мобильных игр для двух игроков.
6. Реакция YouBlue
В дополнение к Bluetooth он поддерживает несколько других событий на основе Wi-Fi, входящих вызовов, подключения телефона к источнику питания и т. Д. Хотя YouBlue React может работать сразу с несколькими аксессуарами, вам придется заплатить за этот бонус. Бесплатная версия ограничивает вас одним устройством.
7. Bluetooth-чат
Насколько хорошо вы знаете Bluetooth?
Однако, несмотря на то, что Bluetooth существует на некоторых наших устройствах, для многих он остается загадкой. Вот краткое руководство по общим вопросам Bluetooth
Что такое Bluetooth? 10 общих вопросов, задаваемых и отвеченных
Что такое Bluetooth? 10 общих вопросов, задаваемых и отвеченных
Что такое Bluetooth и как он работает? Мы посмотрим на Bluetooth, почему он так полезен и как его использовать.
Прочитайте больше
Вы должны проверить.
Узнайте больше о приложениях для Android, Android Tips, Bluetooth.
Примите новый подход к производительности с этими новыми приложениями To-Do
Друзья, горячо приветствую вас в этой обзорной статье по использованию технологии Bluetooth на Android телефонах. Специально для интересующихся, можно ли обновить Bluetooth на своем Android смартфоне, и просто для желающих узнать какие-то особенности его использования и тайны настройки – добро пожаловать.
А еще мы стараемся поддерживать общение с нашими читателями – смело пишите свои комментарии с вопросами или личным опытом.
Мои скриншоты выполнены на версии Android 10, но в целом они подойдут для любого смартфона на базе этой операционной системы.
Обновление
Один из самых частых вопросов наших читателей по теме этой статьи:
Можно ли обновить версию Bluetooth на Android и как это сделать? Можно ли установить Bluetooth, и какую программу для этого скачать?
Единственный правильный ответ:
Речь идет именно об обновлении версии Bluetooth. Сам Bluetooth – это железный модуль. Если хотите обновить версию – придется поменять и сам модуль. В общем случае на телефонах это не делается, поэтому для этой задачи приобрести новый телефон.
Но зачем это обновление вообще вам нужно? Для примитивных задач все версии Bluetooth обратно совместимы. Т.е. ваше устройство с поддержкой версии 4.2 легко подключится к другому устройству с поддержкой 5.2. И для большинства задач этого достаточно.
Если же вы имели ввиду обновление не версии, а списка устройств, смотрите ниже.
По проверке текущей версии Bluetooth у нас есть хорошая статья.
Включение
Самый общий случай для всех версий Android.
Всё, Bluetooth включен. Другой быстрый вариант включить – воспользоваться шторкой на телефоне:
Изменение имени устройства
Для чего нужно менять имя? Чтобы ваш телефон можно было легко найти другим устройствам по Bluetooth (например, вы ищете свой телефон на ноутбуке) или же удобно находить в списке уже подключенных устройств (например, на машине подключено несколько Bluetooth устройств, но вы хотите брать звук только со своего телефона).
Поменять имя можно здесь же:
Настройки – Bluetooth – Имя устройства
Включение видимости
Чтобы ваш смартфон видели другие устройства, нужно включить видимость устройства по Bluetooth. Как это сделать?
- На старых версиях Android ее нужно включать отдельно (ищем все там же – Настройки – Bluetooth и через меню смотрим похожий пункт, от версии к версии названия отличались).
- На новых Android достаточно просто открыть знакомые нам Настройки – Bluetooth, а телефон автоматически станет видимым.
Поиск и обновление поиска устройств
И снова знакомая нам страничка Настройки – Bluetooth (здесь вообще делается все, как вы поняли). Здесь же можно найти все обнаруженные возле вас Bluetooth устройство с видимостью, а также нажать на вот эту кнопку обновления, чтобы повторить поиск:
Отключение устройств
- В списке подключенных устройств (Настройки – Bluetooth) ищем нужное для удаления устройство (иногда это нужно, например, чтобы повторить подключение при первом кривом сопряжении). И напротив него щелкаем вот на эту стрелочку:
Детальные настройки устройства
Для особых функций, как и в случае выше, можно детально отстроить свое устройство. Переходим в Настройки – Bluetooth, выбираем настройки своего устройства (смотрим выше), а уже тут можно творить полезные вещи:
- Можно переименовать подключенное устройство. Ну чтобы оно называлось понятно для вас: «Мой ноутбук», «Большие наушники», «Маленькие наушники» и т.д.
- Аудиоустройство – использовать для звонков. Через гарнитуру или автор.
- Мультимедийное устройство – слушать музыку через гарнитуру или авто.
- Обмен контактами – чтобы подключенное устройство видело ваши контакты. В моем случае это было полезно на авто, чтобы в звонках отображался не только номер звонящего, но и имя из списка контактов.
Сброс настроек
Еще один пункт в коллекцию полезных действий. Чтобы сбросить настройки Bluetooth на Андроиде (иногда нужно для корректной работы устройств или приложений), можно провернуть следующее:
- Настройки – Приложения – Все приложения (последний пункт зависит от вашей версии системы и оболочки, но нам нужно получить именно полный список установленных приложений).
- Ищем приложение Bluetooth (обратите внимание, что версия приложения не должна совпадать с аппаратной версией).
- Ищем все возможные способы очистки: «Очистить кэш», «Очистить данные», «Очистить все». У меня это так:
После сброса всегда рекомендуется перезагружать телефон.
Настройки в инженерном меню
Да, мы знаем, что есть отдельные настройки Bluetooth в инженерном меню. Но наш портал думает прежде всего о простых пользователях, которым явно не нужно лезть в инженерное меню. Большую часть проблем там точно не решить. Поэтому исключительно в целях безопасности нашего неопытного читателя данный пункт был сокращен. Остальным же рекомендую с точным пониманием проблемы идти на профильные форумы или хотя бы в наши комментарии, где мы сможем подсказать разумное направление для дальнейших поисков.
Если телефон не видит другие устройства по Bluetooth
Наш классический пример с беспроводной колонкой.
Передача файлов
Мы тоже уже писали по этой теме. Рекомендую посмотреть здесь:
Видео по теме
Читайте также: