Работа с COM портом в Android приложениях
Все доброго времени суток!
Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило
по двум причинам:
- во первых оно не сработало для меня.
- девайс у меня все-таки старенький
Итак, после длительного поиска в интернете, я наткнулся на очень интересное решение android-serialport-api. Данное решение представляет собой Java обертку в которой через JNI в которой осуществляются вызовы к USB устройству.
Разработчики библиотеки предлагают 4 различных варианта подключения Android устройства к COM порту через USB.
Так как я имел в своем распоряжении планшет с USB host портом, и у меня под рукой имеется USB to RS232 преобразователь, то я пошел по варианту номер 2.
Преимущества и недостатки такого решения заключаются в
Преимущества
- USB — RS232 преобразователь можно легко найти на ближайшем радио рынке
- никаких извращений с моим дорогим моему сердцу планшетом
- возможная высокая скорость передачи информации
Недостатки
- потребуется USB хост коннектор
- возможно, что девайс придется рутануть
Тут я опишу подход в использовании этой библиотеки.
Для корректной работы serialPortFinder необходимо чтобы переходник USB-RS232 был подключен, определен в /dev.
Вот таким нехитрым способом можно осуществлять общение с очень большим количеством железа через COM порт,
Источник
Откуда взялся android.hardware.camera2.full?
Я пытаюсь реализовать приложение камеры. и проверка примеров. Некоторые примеры содержат следующую функцию манифеста: uses-feature android:name=»android.hardware.camera2.full . Я проверил официальные документы и примеры Google, и ни один из них не упомянул существующую эту функцию. (или я скучаю по некоторым).
Каков источник этой функции и в чем разница между android.hardware.camera ?
Редактировать: Что меня смущает, так это примеры googlesamples :
Они используют новый Camera2 API и старый манифест features . Я не знаю, как оба сходятся.
4 ответа
* A given camera device may provide support at one of two levels: limited or * full. If a device only supports the limited level, then Camera2 exposes a * feature set that is roughly equivalent to the older * <@link android.hardware.Camera Camera>API, although with a cleaner and more * efficient interface. Devices that implement the full level of support * provide substantially improved capabilities over the older camera * API. Applications that target the limited level devices will run unchanged on * the full-level devices; if your application requires a full-level device for * proper operation, declare the «android.hardware.camera2.full» feature in your * manifest.
Я надеюсь, что это проясняет природу функции, которую вы упомянули.
Что касается API camera2 — это были представленные в Android 5 (уровень API 21) как попытка создать более чистый API для взаимодействия с камерой в отличие от старого camera API.
Флаги функций и имена API камер на самом деле не связаны, даже если они выглядят одинаково.
Функция «android.hardware.camera» (PackageManager.FEATURE_CAMERA) означает, что устройство имеет камеру, обращенную назад. Это все; любое приложение, которое хочет избежать установки на устройстве без обратной камеры, должно указать это.
Он не связан с классом Java android.hardware.Camera .
Функция «android.hardware.camera.level.full» (PackageManager .FEATURE_CAMERA_LEVEL_FULL) говорит, что по крайней мере одна камера на устройстве поддерживает ПОЛНЫЙ аппаратный уровень при использовании через пакет API android.hardware.camera2 .
Таким образом, устройство с обратной камерой всегда выводит список «android.hardware.camera». Если у него хорошая камера, он также отобразит список «android.hardware.camera.level.full».
Поскольку примеры приложений для camera2 предназначены для работы с камерой любого качества, для них требуется только наличие устройства с камерой, а не то, что оно имеет какой-либо конкретный уровень возможностей.
Я видел, как некоторые разработчики пытаются использовать такую функцию, как «android.hardware.camera2»; в Android SDK такой функции нет, поэтому попытка потребовать ее означает, что ваше приложение не может быть установлено ни на одном устройстве. API-интерфейс camera2 всегда доступен, начиная с Android 5.0 (Lollipop); вопрос только в том, какой аппаратный уровень поддерживает каждое устройство камеры (LEGACY, LIMITED, FULL или LEVEL_3).
Android представил API-интерфейс Camera2 начиная с Android API 21, этот новый API-интерфейс Camera делает его более удобным и простым в изменении параметров. Предыдущая версия была более ограниченной в своих возможностях.
Android Camera2 имеет 4 уровня реализации, которые зависят от производителя:
- Наследие: это просто преобразование между Camera2 и Camera. Просто используется для совместимости. Просто некоторые вещи из Camera2 работают правильно.
- Limited: имеет реализацию Camera2, но не все доступные методы. (Не все производители используют одни и те же методы, поэтому не все будут работать на каждом устройстве)
- Полный: Все методы Camera2 реализованы. Обычно производители реализуют это на своих флагманских устройствах.
- Уровень 3: дополнительно поддерживает обработку YUV и захват изображений RAW. (ЛУЧШИЙ СЛУЧАЙ)
Если мы просто перейдем к абстрактному классу в Android-студии, мы получим больше ясности, он предоставляет следующую информацию
Класс CameraDevice представляет собой представление одной камеры, подключенной к устройству * Android, что позволяет осуществлять точный контроль захвата изображения и * последующей обработки с высокой частотой кадров.
Ваше приложение должно декларировать разрешение * <@link android.Manifest.permission # CAMERA Camera>в своем манифесте * для доступа к устройствам камеры.
Данное устройство камеры может обеспечивать поддержку на одном из двух уровней: ограниченный или * полный. Если устройство поддерживает только ограниченный уровень, то Camera2 предоставляет * набор функций, который примерно эквивалентен старшему * <@link android.hardware.Camera Camera>API, хотя с более чистым и более * эффективный интерфейс. Устройства, которые реализуют полный уровень поддержки * обеспечить значительно улучшенные возможности по сравнению со старой камерой * API. Приложения, предназначенные для устройств ограниченного уровня, будут работать без изменений * устройства полного уровня; , если вашему приложению требуется полноуровневое устройство для * правильная работа, объявите функцию «android.hardware.camera.level.full» в вашем * манифест.
Так что нет необходимости, или я не верю ничему, что говорит camera2 и так же, как было указано другими.
Источник
Что делать, если появляется ошибка com.android?
Ошибка com.android — как исправить? Система Андроид примечательна своей простотой, функциональностью и устанавливается на преимущественное количество мобильных устройств. К сожалению, в ней бывают определённые сбои и недоработки, которые иногда проявляют себя сообщением о том, что произошла ошибка в том или ином процессе.
В большинстве случаев сбои в работе проявляются в случае неправильных настроек системы или вредоносных файлов
Давайте узнаем, что делать, если на вашем телефоне или другом устройстве постоянно появляются такие ошибки, как vending, android phone, чем они отличаются между собой и как их устранить.
Ошибка com.android.phone
Ошибка com.android.phone происходит из-за неполадок в той части обеспечения, которая отвечает за звонки на вашем телефоне. Исправить её можно следующим образом:
- Иногда ошибка com.android.phone появляется из-за проблем в меню даты и времени. Поэтому откройте настройки своего телефона, выберите меню Дата и время и в появившемся окне снимите галочку напротив строки об установке их через сеть. После этого выполните перезапуск своего гаджета и измените данные времени и числа, если они неверны.
- Если это не помогло, стоит обратиться непосредственно к приложению Phone. Для этого зайдите в настройки, выберите список приложений и в нём найдите телефон. В появившемся меню сначала нажмите на «Стереть данные», затем выполните очистку кэша утилиты. Отправьте гаджет на перезагрузку, чтобы проверить, помогло ли это устранить неполадку com.android.phone.
- В случае, если второй способ оказался неэффективным, следует попросту скачать из магазина Play Market альтернативное приложение для совершения звонков. Установите у себя такую программу, которая заменит Phone, после этого проблема должна исчезнуть.
Если вам не помог ни один из вышеприведённых способов по устранению com.android.phone, остаётся только выполнить возврат к заводским установкам, но при этом вы потеряете все приложения, которые сейчас есть на телефоне. Клавиша сброса и возврата к первоначальным установкам находится в том же меню настроек, вкладка «Восстановление и сброс».
Единственный способ сохранить данные — выполнить бэкап системы. Есть много способов выполнения этой процедуры, мы рассмотрим самый простой — при помощи приложения Titanium Backup. Итак, скачайте и установите её на своём устройстве, затем выполните такие действия:
- Запустите программу и предоставьте ей root-права.
- Нажмите на кнопку в правом верхнем углу экрана с изображением листа и галочки.
- В появившемся окне выберите необходимый пункт для сохранения данных — «Сделать р. к. всего пользовательского ПО и системных данных», после чего произойдёт выполнение процесса бэкапа.
Так вы сможете не только вернуть своё оборудование к заводским установкам, но и затем восстановить все данные, которые присутствовали в системе ранее.
Другие ошибки
Ошибка com.android vending
Есть и другие похожие неполадки, которые возникают в системе, например, com.android.vending ошибка. Чаще всего сообщение о ней начинается не со слов «произошла ошибка», а с фразы «Неожиданная остановка процесса…». Чтобы удалить её, нужно обладать полномочиями администратора или root-правами. Получить их не так трудно — в магазине Play Market есть большое количество программ для этой цели.
Ошибку мы устраним через ROOT Manager, приложение, которое нужно предварительно установить на свой телефон. Далее мы делаем следующее:
- Предварительно скачиваем в сети нужный файл com.android.vending.apk.
- Открываем программу и предоставляем ей права суперпользователя.
- Находим папку data/data/com.android.vending и полностью её удаляем.
- Заходим по адресу data/dalvik-cache, в этой папке делаем поиск по слову vending, удаляем найденный файл.
- Затем находим загруженный заранее правильный файл com.android.vending.apk, нажимаем в верхнем углу на кнопку R/W и перемещаем его по адресу system/app.
- После нажимаем на файл и удерживаем его несколько секунд, чтобы перед нами появилось контекстное меню. Выбираем «Разрешения».
- В появившемся окне ставим галочки напротив строки «Владелец» в колонках чтения и записи, в строке «Группа» и «Другое» — только вариант чтения.
Вот и всё! Сохраняем изменения, закрываем ROOT Manager, перезагружаем телефон, после чего ошибка со словом vending или phone больше не должна появляться.
Ошибка com.android systemui
Ошибка com.android systemui может являться системной, как и vending или phone, и устраняется тем же способом, что и первая рассмотренная нами неполадка. Но зачастую появление сообщения с такой ошибкой означает, что в гаджете завёлся вирус, который приносит немало проблем пользователю.
Как он проявляет себя? Чаще всего маскируясь под системный файл, троян запускает на телефоне скачивание сторонних приложений, а при использовании программ на экране появляется много навязчивой рекламы.
Как узнать, что представляет собой эта ошибка со словом com? Найдите на своём устройстве com.android.systemui и просмотрите его свойства, а именно — когда он был создан. Если он установлен параллельно с другими системными файлами, то, скорее всего, произошла ошибка в работе вашего гаджета. Если он появился недавно, это значит, что он представляет собой вирус.
Итак, как удалить троян? Руководствуйтесь следующими указаниями:
- Наверняка он появился в то же время, когда вы устанавливали какую-то программу на своё устройство. Выясните, что это было за приложение, поищите его в списке в меню настроек.
- Откройте меню утилиты, из-за которой вирус проник в систему, выберите пункты очистки данных, кэша, а затем полностью удалите программу.
- Далее, получите root-права на устройстве, что делается при помощи приложений Root Uninstaller, ES Проводник и других, которые вы найдёте в магазине.
- Зайдите в имеющийся у вас файловый менеджер или скачайте его — лучшим выбором будет ES Проводник, где вы можете ещё и получить права администратора, пройдите по пути Root/System/App.
- Найдите в списке com.android.systemui, удалите его. Если он затаился под иным именем, то обнаружить его можно по дате создания — вспомните, когда вирус проник на гаджет, и проверьте список на наличие стороннего файла.
- Если программа не может выполнить удаление файла, воспользуйтесь приложением «Удалить 2», которое должно справиться с этой задачей.
На этом всё! Как видите, сначала мы удалили источник, через который произошло заражение, но затем ещё и нашли саму вредоносную программу, которая прячется в системе. В будущем будьте внимательнее к данным, которые вы скачиваете из Интернета.
Источник