Работа с 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», которое должно справиться с этой задачей.
На этом всё! Как видите, сначала мы удалили источник, через который произошло заражение, но затем ещё и нашли саму вредоносную программу, которая прячется в системе. В будущем будьте внимательнее к данным, которые вы скачиваете из Интернета.
Источник