Можно ли использовать китайский аналог Camera Connection Kit с устройством, на котором не сделан джейлбрейк?
Да, можно! Китайский Camera Connection Kit работает аналогично оригинальному.
Фотографии, которые iPad переносит с внешних носителей через Camera Connection Kit, сохраняются без потери качества?
Да, качество фотографий не меняется!
Как можно изменить язык при печати на клавиатуре, подключенной к iPad через Camera Connection Kit?
Комбинацией Win (Пуск) + Space (Пробел)
Что делать, если система выдала сообщение «Подключенное устройство USB потребляет слишком много энергии»?
Это значит, что устройство, которое Вы хотите подключить к вашему iPad, потребляет больше 20 миллиампер. С выходом прошивки 4.2.1 выходная подача электричества на разъем питания была уменьшена с 100 миллиампер до 20, что пагубно сказалось на функциональности самого адаптера (Резко уменьшилось количество подключаемых к iPad устройств). Поэтому, если вы увидели это сообщение при подключении какого-нибудь устройства через CCK к iPad, то iPad не считает с него информацию и устройство работать не будет!
Как подключить внешний жесткий диск к iPad через Camera Connection Kit?
Внешний жесткий диск можно подключить только к устройству с джейлбрейком! Для этого необходимо скачать и установить из Cydia 3 приложения:SBSettings, iFile и USB Mount SBSettings Toggle. Далее подключите ваш HDD как показано на рисунке снизу и на самом iPad активируйте окно SBSettings (Свайп по статус бару влево). В окне программы нажимайте на переключатель Usb до тех пор, пока он не станет постоянно включенным. После этого можно открывать iFile и просматривать файлы на вашем HDD!
Нужно ли форматировать внешний носитель для подключения к iPad и, если да, то в какой формат?
Желательно перед первым подключением отформатировать Ваш внешний носитель в формат FAT/FAT32 (ограничение на размер файла 4ГБ) или HFS+.
Можно ли смотреть фильмы с внешнего носителя на iPad через Camera Connection Kit без джейлбрейка?
Какие устройства можно подключить к iPad через Camera Connection Kit?
Купил беспроводную клавиатуру с адаптером. Возможно ли ее подключить к iPad через Camera Connection Kit?
Да, возможно! Просто вставьте адаптер от клавиатуры в CCK и подключите к iPad, клавиатура заработает. iOS может написать, что «Данное устройство не поддерживается iPad», но клавиатура все равно будет работать! (Это относится и к usb клавиатурам!)
Какие возможности у Camera Connection Kit, если его использовать с устройством, на котором сделан/не сделан джейлбрейк?
Есть ли разница между оригинальным и китайским Camera Connection Kit?
По функциональности китайский адаптер может превосходить оригинальный (Например, из-за наличия доп.портов и внешнего питания), но оригинальный Camera Connection Kit считается более надежным и не «отваливается», как некоторые китайские аналоги (Это относится не ко всем адаптерам!).
Как можно перенести фильм из медиатеки устройства в сторонний плеер на устройстве без джейлбрейка?
Как можно смотреть фильм с носителя без переноса его во внутреннюю память iPad?
Это возможно только на устройстве с джейлбрейком! Для этого с помощью iFile откройте папку, которая расположена на носителе и в которой находится папка с фильмом, нажмите Изменить, выделите нужную папку и нажмите кнопку в правом нижнем углу. Затем в выпавшем списке выберите Копировать/Ярлык и перейдите в папку с документами плеера (Обычно /var/mobile/Applications/Название приложения/Documents). Теперь нажмите в свободную область списка файлов и держите до тех пор, пока не появится выбор действий, в нем выберите Ссылка. После этого в плеере откройте нужную вам папку и воспроизводите фильм!
CameraX+ML Kit для распознавания номера карты в действии
Привет, меня зовут Виталий Беляев, я Android-разработчик в red_mad_robot. В этой статье я расскажу про опыт интеграции CameraX с ML Kit на замену библиотеки card.io, и что в итоге из этого получилось.
В приложении над которым я работаю, есть экран добавления банковской карты. Там можно заполнить всю информацию руками, а можно нажать «Сканировать», и с помощью камеры телефона распознать номер карты. Для этого у нас используется библиотека card.io.
Почему мы решили заменить card.io?
мы хотели заменить third-party library, которая уже находится в архиве, на что-то более актуальное от крупных компаний;
card.io использует подход с созданием отдельной activity, а мы стараемся придерживаться single-activity подхода;
мало возможностей кастомизации UI в card.io ;
интересно было попробовать CameraX и ML Kit ;
card.io тянет много нативных библиотек. Если вы не используете App Bundle, то выпиливание card.io уменьшит ваш APK на 12 MB в размере.
Что такое ML Kit?
Всё это делается с помощью обученных моделей и может происходить как локально(on-device), так и удаленно на сервере(on-cloud).
Используя on-device Text Recognition мы получаем более высокую скорость работы, независимость от наличия интернета и отсутствие платы за использование, по сравнению с on-cloud решением.
В качестве входа, Text Recognition принимает изображение, которое он обрабатывает и затем выдаёт результат в виде текста, который он распознал. Чтобы обеспечить Text Recognition входными данными, нам нужно получить эти изображения(фреймы) с камеры устройства.
Получаем фреймы с камеры для анализа
Google сделал CameraX — библиотеку для работы с камерой, часть Jetpack, которая инкапсулирует в себе работу с Camera1 и Camera2 API и предоставляет удобный lifecycle-aware интерфейс для работы с камерой.
В CameraX есть так называемые use cases, их всего три:
Далее мы всё это привязываем к lifecycle и запускаем.
Вот таким образом мы получили картинку, которую можно передавать в ML Kit на распознавание.
GMS ML Kit
У Google раньше была библиотека ML Kit for Firebase, где были собраны все ML-related вещи: те, что работают on-device (сканирование штрихкодов например) и те, что работают on-cloud (Image Labeling например).
Потом они вынесли все те части, которые можно использовать on-device, в отдельный артефакт и назвали его ML Kit.
Все части, которые используют on-cloud обработку, поместили в библиотеку Firebase ML.
В манифест внутри application tag нужно добавить:
Это нужно, чтобы модели для ML Kit скачались при установке вашего приложения. Если этого не сделать, то они загрузятся при первом использовании распознавания.
Далее всё достаточно просто, делаем всё по документации и получаем результат распознавания:
Для наших тестовых целей, пока что подойдёт просто работать со списком строк, поэтому мы используем RecognizedLine — это просто:
HMS ML Kit
Так как наше приложение распространяется также в Huawei App Gallery, нам нужно использовать ML Kit от Huawei.
В общем и целом, в HMS все составляющие имеют похожий на GMS интерфейс, ML Kit в этом плане не исключение.
Но Huawei не делали никакой разбивки ML библиотек по признаку on-device и on-cloud, поэтому, с этим SDK можно запустить как on-device распознавание, так и on-cloud.
Подключаем HMS ML Kit Text Recognition SDK согласно документации:
И аналогично с GMS ML Kit добавляем в манифест:
Руководствуясь документацией обрабатываем фрейм с камеры и получаем результат:
Результаты тестов распознавания
Я был удивлён результатами — оказалось, что распознавание работает не так хорошо и стабильно, как я думал.
При дневном естественном освещении у меня получилось распознать номер карты длинной в 16 цифр на своей VISA, но на это ушло около минуты разного кручения, отдаления и приближения карты. При этом одна из цифр была неверной.
При искусственном освещении, а также при тусклом освещении со включеной вспышкой, мне вообще не удалось получить что-то вменяемое, похожее на номер карты.
В то же время, сard.io даже в очень тёмном помещении со включенной вспышкой рапознаёт номер карты в среднем за 1-2 секунды.
Попытка использовать on-cloud распознавание
Раз on-device распознавание выдаёт неприемлемые результаты, то появилась идея попробовать on-cloud распознавание.
Сразу нужно понимать, что это будет платно, как в случае с GMS, так и в случае с HMS.
Нужно подключить agconnect плагин:
Также нужно скачать agconnect-services.json и положить его в app-папку вашего проекта.
Создаём MLTextAnalyzer согласно документации:
Далее обработка фрейма очень похожа на on-device:
Так как on-cloud Text Recognition платный (хоть и с бесплатным лимитом), я решил, что лучше перестрахуюсь и буду делать фото, то есть использовать ImageCapture use case вместо ImageAnalysis для on-cloud распознавания.
Результаты распознавания в этом случае неудовлетворительные: из трёх фото в отличном качестве (я их сохранял в память приложения и посмотрел после съемки) с ествественным дневным освещением, ни на одном номер карты не распознался корректно.
При этом, стоит ометить, что с платным on-cloud распознаванием не получится использовать тот же подход, который мы использовали с on-device распознаванием— то есть, передавать фреймы камеры с максимально доступной нам скоростью и пытаться на каждом из них распознать номер карты.
На каждом дейвайсе будет по-разному: на Pixel 3 XL это в среднем 5 fps, на Huawei Y8p — это 2 fps, но главное, что в среднем в секунду этих фреймов будет больше 1, и они будут передаваться на распознавание сразу, как пользователь откроет экран, даже если он ещё не навёл камеру на карту.
Получается весьма значительное количество запросов, поэтому придётся отдать немалую сумму денег.
Последний шанс
Но есть 3 проблемы:
У GMS ML Kit такого нет и соответственно, работать это будет только для приложений в Huawei App Gallery, а мы хотим, чтобы работало для всех.
Не очень понятна цена для этой фичи: для on-device написано Free in the trial period, а для on-cloudN/A.