Android hardware camera front

Работа с камерой в Android

Работа с камерой на телефоне всегда представляла для меня интерес. Как же это все устроено… И вот мне в руки попал телефон с Android’ом. Я не преминул возможностью попробовать разобраться в этом. Вот что получилось в итоге.

Рассмотрим небольшую программу, которая позволяет делать снимки.

Все операции проводятся с помощью класса Camera.
Необходимо завести переменную

и инициализировать ее

После завершения работы с камерой необходимо сделать

в противном случае камера останется заблокированной и недоступной для других приложений.

Для обычных приложений типа фотокамеры инициализацию лучше всего производить в onResume, а освобождение в onPause.

Обязательным условием при работе с камерой является создание окна предпросмотра (preview). Это окно должно являться объектом класса Surfaceи для отображения на экране подходит SurfaceView.
Объявим

Чтобы задать preview, необходимо вызвать метод setPreviewDisplay, параметром которого является объект класса SurfaceHolder.

Чтобы включить отображение preview, вызываем

Если этого не сделать, то камера не сможет делать снимки.

Собственно для того, чтобы сделать снимок, необходимо вызвать метод

С помощью параметров (кстати, любой из них может быть null) задаются обработчики разных событий:

  • shutter — вызывается в момент получения изображения с матрицы
  • raw — программе передаются для обработки raw данные (если поддерживается аппаратно)
  • postview — программе передаются полностью обработанные данные (если поддерживается аппаратно)
  • jpg — программе передается изображение в виде jpg. Здесь можно организовать запись изображения на карту памяти.

Вызов takePicture можно поместить непосредственно в обработчик onClick кнопки — в этом случае фотографирование произойдет сразу после нажатия на нее, но можно и воспользоваться предварительной автофокусировкой.
В этом случае задается обработчик Camera.AutoFocusCallback, в котором необходимо реализовать метод

Тогда после вызова в обработчике нажатия на кнопку camera.autoFocus(), однократно будет вызван обработчик, в котором мы уже и примем решение об удачной фокусировке и необходимости сделать снимок.

Для работы с SurfaceHolder можно задать SurfaceHolder.Callback
surfaceHolder.addCallback();

В этом случае необходимо реализовать методы

C помощью них приложению будет сообщаться о том, что Surface успешно создано, если оно изменено или то, что оно удалено.

Размер нашего preview можно менять в процессе выполнения программы:

Для приложения камеры удобнее всего сразу задать расположение экрана как
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
В противном случае нам придется, например, в surfaceCreated проверять расположение экрана и поворачивать preview с помощью, например, camera.setDisplayOrientation(0) .
Это не очень удобно, потому что поворот экрана занимает какое-то время. В этот момент происходит вызов onPause и onResume, пересоздается Surface.

Также имеется возможность объявить обработчик Camera.PreviewCallback, с помощью которого путем реализации метода

можно получать и обрабатывать каждый кадр, отображаемый в preview.

И последний важный момент. Чаще всего получается так, что отношение сторон SurfaceView отличается от отношения сторон в preview камеры. Поэтому для того, чтобы избежать искажений изображения на экране, необходимо подкорректировать размер отображаемого окна предпросмотра.

Чуть не забыл. В манифест необходимо добавить permission

MainScreen.java

main.xml

AndroidManifest.xml

Программа отлаживалась и тестировалась на телефоне LG Optimus One P500.

При написании использовались следующие источники информации:

Источник

Как открыть «переднюю камеру» на платформе Android?

В более общем плане, если устройство имеет более одной встроенной камеры, есть ли способ инициализировать один из них в частности?

Я не нашел его в справочной документации Android:

  • https://developer.android.com/reference/android/hardware/Camera.html
  • https://developer.android.com/reference/android/hardware/camera2/package-summary.html
  • https://developer.android.com/reference/android/hardware/camera2/CameraManager.html

Samsung SHW-M100S имеет две камеры. Если нет ссылки на использование двух камер, любая идея, как Samsung сделал …?

Добавьте в файл AndroidManifest.xml следующие разрешения:

Примечание. Эта функция доступна в Gingerbread (2.3) и Up Android Version.

Начиная с Android 2.1, Android поддерживает только одну камеру в SDK. Вполне вероятно, что это будет добавлено в будущую версию Android.

Все методы более старых ответов устарели Google (предположительно из-за таких неприятностей), поскольку API 21 вам необходимо использовать API Camera 2:

Этот класс устарел на уровне API 21. Мы рекомендуем использовать новый API android.hardware.camera2 для новых приложений.

В новом API у вас почти полная власть над камерой устройства Android и документации, в которой

А затем использовать полученный CameraId для открытия камеры:

99% лобовых камер имеют а задняя камера в соответствии с этим:

В несъемных камерах используются целые числа, начинающиеся с 0 для их идентификаторов, в то время как съемные камеры имеют уникальный идентификатор для каждого отдельного устройства, даже если они являются одной и той же моделью.

Однако это означает, что если ситуация с устройством редка, как только 1-фронтальная таблетка, вам нужно подсчитать, сколько встроенных камер у вас есть, и поместите порядок камеры по ее значению («0»). Итак, CAMERA_FACING_FRONT == 1 CAMERA_FACING_BACK == 0, что означает, что задняя камера важнее фронтальной.

Я не знаю о едином методе идентификации лобовой камеры на всех устройствах Android. Проще говоря, ОС Android внутри устройства не может действительно узнать, какая камера именно там по некоторым причинам: может быть, единственный идентификатор жесткого диска камеры – это целое число, представляющее его важность, или, может быть, на некоторых устройствах, какая бы сторона вас ни поворачивала … » назад».

Для более старого API (это не рекомендуется, потому что он не будет работать на современных телефонах, более новая версия Android и передача – боль в заднице). Просто используйте тот же Целочисленный CameraID (1), чтобы открыть фронтальную камеру, как в этом ответе :

Если вы доверяете OpenCV для части камеры:

Для лобовой камеры используйте следующее:

Для API 21 (5.0) и более поздних версий вы можете использовать API CameraManager API

С выпуском Android 2.3 (Gingerbread) теперь вы можете использовать класс android.hardware.Camera для получения количества камер, информации о конкретной камере и получения ссылки на конкретную Camera . Ознакомьтесь с новыми API-интерфейсами Camera здесь .

/ * Это не правильно, это решение для более старых устройств, работающих под управлением Android 4.0 или старше. Это может использоваться для целей тестирования, но не рекомендуется для основной разработки. Это решение можно рассматривать только как временное решение. Но это решение помогло многим, поэтому я не собираюсь удалять этот ответ * /

Читайте также:  Android java app server

Источник

Русские Блоги

Разработка Android ROM: подробное объяснение атрибутов XML GMS

Как мы все знаем, в магазине Google Play есть механизм фильтрации, основанный на функциях, используемых apk. Этот механизм контролирует количество apks, отображаемых на различных аппаратных устройствах. В разработке коробки отсутствуют многие аппаратные функции, такие как камера, датчик ускорения, компас, гироскоп и т. Д. Если вы не добавите соответствующие атрибуты в gms, многие apks в магазине воспроизведения не будут отображаться. Принимая во внимание эти аппаратные атрибуты, этот блог сделал несколько вводных. Я очень благодарен великому богу.

Аппаратная функция

Обратите внимание на то, что приложение использует или нуждается в определенной аппаратной функции, пожалуйста, объявите соответствующее значение в атрибуте android: name (начиная с «android.hardware»). Пожалуйста, используйте отдельный элемент каждый раз, когда вы объявляете аппаратную функцию.

Функция аудиооборудования

android.hardware.audio.low_latency
Приложение использует аудиоконвейер устройства с малой задержкой, что может уменьшить задержку и задержку при обработке ввода или вывода звука.

android.hardware.audio.output
Приложение использует аудиоустройство устройства, аудиоразъем для наушников, возможность потоковой передачи Bluetooth или аналогичный механизм для передачи звука.

android.hardware.audio.pro
Приложение использует высококачественные звуковые функции и возможности устройства.

android.hardware.microphone
Приложение использует микрофон устройства для записи звука.

Аппаратная функция Bluetooth

android.hardware.bluetooth
Приложение использует функцию Bluetooth устройства, как правило, для связи с другими устройствами с поддержкой Bluetooth.

android.hardware.bluetooth_le
Приложение использует функцию Bluetooth устройства с низким энергопотреблением.

Аппаратная функция камеры

android.hardware.camera
Приложение использует заднюю камеру устройства. Устройства с фронтальной камерой не будут указывать эту функцию, поэтому, если ваше приложение может взаимодействовать с камерами в любой ориентации, используйте вместо нее функцию android.hardware.camera.any.

android.hardware.camera.any
Приложение использует одну из камер устройства или внешнюю камеру, подключенную к устройству пользователем. Если ваше приложение не требует, чтобы камера была установлена ​​сзади, используйте это значение вместо android.hardware.camera.

android.hardware.camera.autofocus
Приложение использует функцию автофокуса, поддерживаемую камерой устройства.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.camera, если только родительская функция не использует android: required = ”false” при объявлении.

android.hardware.camera.capability.manual_post_processing
Приложение использует функцию MANUAL_POST_PROCESSING, поддерживаемую камерой устройства.
Ваше приложение может использовать эту функцию для замены функции автоматического баланса белого камеры. Используйте android.colorCorrection.transform, android.colorCorrection.gains и android.colorCorrection.mode в TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor
Приложение использует функцию MANUAL_SENSOR, поддерживаемую камерой устройства.
Эта функция неявно поддерживает автоматическую блокировку экспозиции (android.control.aeLock), которая позволяет фиксировать время экспозиции и чувствительность камеры на определенном значении.

android.hardware.camera.capability.raw
Приложение использует функцию RAW, поддерживаемую камерой устройства.
Эта функция подразумевает, что устройство может сохранять файлы DNG (исходные), а камера устройства предоставляет связанные с DNG метаданные, необходимые вашему приложению для непосредственной обработки этих исходных изображений.

android.hardware.camera.external
Приложение взаимодействует с внешней камерой, которую пользователь подключает к устройству. Однако эта функция не гарантирует, что внешняя камера может использоваться вашим приложением.

android.hardware.camera.flash
Приложение использует функцию вспышки, поддерживаемую камерой устройства.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.camera, если только родительская функция не использует android: required = ”false” при объявлении.

android.hardware.camera.front
Приложение использует переднюю камеру устройства.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.camera, если только родительская функция не использует android: required = ”false” при объявлении.

android.hardware.camera.level.full
В приложении используется поддержка ПОЛНОГО уровня захвата изображения, обеспечиваемая по крайней мере одной камерой устройства. Камеры с ПОЛНОЙ поддержкой могут обеспечивать быстрый захват, покадровое управление и ручное управление постобработкой.

Аппаратные особенности пользовательского интерфейса устройства

android.hardware.type.automotive
Приложение предназначено для отображения пользовательского интерфейса на нескольких экранах в автомобиле. Пользователь взаимодействует с приложением, используя аппаратные кнопки, сенсорное управление, контроллеры вращения и интерфейсы, похожие на мышь. Экран автомобиля обычно появляется на центральной консоли или приборной панели автомобиля. Эти экраны обычно ограничены по размеру и разрешению.
Примечание. Помните, поскольку пользователи используют этот тип пользовательского интерфейса приложения во время вождения, приложение должно стараться не отвлекать водителя.

android.hardware.type.television
(Устарело; используйте вместо него android.software.leanback.)
Приложение предназначено для отображения пользовательского интерфейса на телевизоре. Эта функция определяет «телевизор» как типичный опыт просмотра телевизора в гостиной: он отображается на большом экране, пользователь сидит на расстоянии, а основная форма ввода представляет собой что-то вроде клавиш со стрелками и обычно не использует мышь, указатель или коснитесь устройства.

android.hardware.type.watch
Приложение предназначено для отображения пользовательского интерфейса на часах. Часы носятся на теле (например, на запястье). Пользователь взаимодействует с устройством на близком расстоянии.

Аппаратная функция отпечатка пальца

android.hardware.fingerprint
Приложение использует биометрическое оборудование устройства для считывания отпечатков пальцев.

Обработка аппаратной функции

android.hardware.gamepad
Приложение фиксирует ввод игрового контроллера от самого устройства или подключенного к нему геймпада.

Инфракрасная аппаратная функция

android.hardware.consumerir
Приложения используют инфракрасный порт (ИК) устройства, как правило, для связи с другими потребительскими ИК-устройствами.

Аппаратные функции позиционирования

android.hardware.location
Приложение использует одну или несколько функций устройства для определения местоположения, например местоположения по GPS, местоположения в сети или местоположения базовой станции.

android.hardware.location.gps
Приложение использует точные координаты местоположения, полученные от приемника глобальной системы позиционирования (GPS) на устройстве.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.location, если родительская функция не использует атрибут android: required = ”false” при ее объявлении.

android.hardware.location.network
Приложение использует приблизительные координаты местоположения, полученные из сетевой системы геолокации, поддерживаемой на устройстве.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.location, если родительская функция не использует атрибут android: required = ”false” при ее объявлении.

Аппаратные особенности NFC

android.hardware.nfc
Приложение использует функцию беспроводной связи ближнего радиуса действия (NFC) устройства.
android.hardware.nfc.hce
(устарело.)
Для эмуляции приложение использует карту NFC, размещенную на устройстве.
Аппаратная функция OpenGL ES
android.hardware.opengles.aep
Приложение использует пакет расширения OpenGL ES для Android, установленный на устройстве.

Аппаратная функция датчика

android.hardware.sensor.accelerometer
Приложение использует информацию о движении, считываемую с акселерометра устройства, для определения текущего направления устройства. Например, приложение может использовать показания акселерометра, чтобы определить, когда следует переключаться между книжной и альбомной ориентацией.

Читайте также:  Эндоскоп для андроид что это такое

android.hardware.sensor.ambient_temperature
Приложение использует внешний датчик температуры (окружающей среды) устройства. Например, погодное приложение может сообщать температуру в помещении или на улице.

android.hardware.sensor.barometer
Приложение использует барометр устройства. Например, погодное приложение может сообщать о давлении воздуха.

android.hardware.sensor.compass
Приложение использует магнитометр (компас) устройства. Например, приложение навигации может указывать направление, в котором в данный момент смотрит пользователь.

android.hardware.sensor.gyroscope
Приложение использует гироскоп устройства для определения поворота и наклона, тем самым формируя шестиосевую систему направления. Используя этот датчик, приложение может более плавно определять, нужно ли ему переключаться между вертикальным и горизонтальным направлениями.

android.hardware.sensor.hifi_sensors
Приложение использует датчик Hi-Fi устройства. Например, игровое приложение может обнаруживать высокоточные движения пользователя.

android.hardware.sensor.heartrate
Приложение использует пульсометр устройства. Например, фитнес-приложение может сообщать о тенденции пульса пользователя с течением времени.

android.hardware.sensor.heartrate.ecg
Приложение использует датчик сердечного ритма для эхокардиограммы (ЭКГ) устройства. Например, фитнес-приложение может сообщать более подробную информацию о частоте пульса пользователя.

android.hardware.sensor.light
Приложение использует датчик освещенности устройства. Например, приложение может отображать одну из двух различных цветовых схем в зависимости от условий окружающего освещения.

android.hardware.sensor.proximity
Приложение использует датчик приближения устройства. Например, приложение для телефона может выключить экран устройства, когда обнаружит, что устройство, удерживаемое пользователем, находится близко к телу.

android.hardware.sensor.relative_humidity
Приложение использует датчик относительной влажности устройства. Например, погодное приложение может использовать влажность для вычисления и сообщения текущей точки росы.

android.hardware.sensor.stepcounter
Приложение использует шагомер устройства. Например, фитнес-приложение может сообщать, сколько шагов нужно сделать пользователю, чтобы достичь ежедневной цели.

android.hardware.sensor.stepdetector
Приложение использует кардиостимулятор устройства. Например, фитнес-приложение может использовать интервал между шагами, чтобы сделать вывод о типе упражнения, которое выполняет пользователь.

Аппаратная функция экрана

android.hardware.screen.landscape
android.hardware.screen.portrait
Приложению требуется, чтобы устройство использовало книжную или альбомную ориентацию. Если ваше приложение поддерживает оба направления, вам не нужно объявлять ни одну из функций.
Например, если вашему приложению требуется портретная ориентация, вы должны объявить следующие функции, чтобы только устройства, поддерживающие портретную ориентацию (всегда или пользователем), могли запускать ваше приложение:

По умолчанию предполагается, что ни одно направление не требуется, поэтому ваше приложение может быть установлено на устройстве, которое поддерживает одно или оба направления. Однако, если какое-либо из действий вашего приложения использует атрибут android: screenOrientation для запроса запуска в определенном направлении, это объявление означает, что ваше приложение требует этого направления. Например, если вы используете «landscape», «reverseLandscape» или «sensorLandscape» для объявления android: screenOrientation, ваше приложение будет установлено только на устройствах, поддерживающих альбомную ориентацию.
Лучше всего использовать этот элемент для объявления требований для этого направления. Если вы используете android: screenOrientation для объявления определенного направления для Activity, но фактического требования нет, вы можете отключить это требование, используя элемент и добавив android: required = ”false” для объявления направления.
Для обеспечения обратной совместимости любое устройство под управлением Android 3.1 (уровень API 12) или более ранней версии поддерживает как альбомную, так и портретную ориентацию.

Аппаратные особенности телефона

android.hardware.telephony
Приложение использует функцию телефона устройства, например беспроводной телефон, который предоставляет услуги передачи данных.

android.hardware.telephony.cdma
В приложении используется беспроводная телефонная система множественного доступа с кодовым разделением каналов (CDMA).
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.telephony, если только родительская функция не использует android: required = ”false” при объявлении.

android.hardware.telephony.gsm
Приложение использует беспроводную телефонную систему Глобальной системы мобильной связи (GSM).
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.telephony, если только родительская функция не использует android: required = ”false” при объявлении.

Аппаратная функция сенсорного экрана

android.hardware.faketouch
Приложение использует базовые события сенсорного взаимодействия, например касание и перетаскивание.
Когда объявлен как обязательный, эта функция означает, что приложение совместимо только с смоделированными сенсорными экранами (интерфейс «поддельное касание») или устройствами с настоящими сенсорными экранами.
Устройства с поддельным сенсорным интерфейсом предоставляют пользователям систему пользовательского ввода, которая имитирует часть функции сенсорного экрана. Например, мышь или пульт дистанционного управления могут управлять экранным курсором. Если вашему приложению требуется базовое взаимодействие «наведи и щелкни» (другими словами, оно не работает должным образом только с контроллером клавиш со стрелками), вы должны объявить эту функцию. Поскольку это самый низкий уровень сенсорного взаимодействия, вы также можете использовать приложения, объявляющие эту функцию, на устройствах, которые предоставляют более сложные сенсорные интерфейсы.
Примечание. По умолчанию для приложения требуется android.hardware.touchscreen. Если вы хотите, чтобы ваше приложение использовалось устройствами с поддельным сенсорным интерфейсом, вы должны явно заявить, что сенсорный экран не требуется, следующим образом:

android.hardware.faketouch.multitouch.distinct
Приложение распознает следы двух или более «пальцев» на поддельном сенсорном интерфейсе. Это расширенный набор функции android.hardware.faketouch. Если эта функция объявлена ​​как требуемая, это означает, что приложение совместимо только с устройствами, которые имитируют сенсорное управление двумя или более пальцами или фактически имеют сенсорный экран.
отличается от дифференциального мультисенсорного ввода, определенного в android.hardware.touchscreen.multitouch.distinct. Устройства ввода, поддерживающие дифференциальное мультисенсорное управление через поддельный сенсорный интерфейс, не поддерживают все два пальца жесты, потому что ввод будет преобразован в движение курсора на экране. Другими словами, жест одним пальцем на таких устройствах перемещает курсор, движение двумя пальцами запускает событие касания одним пальцем, а другие жесты двумя пальцами запускают соответствующее событие касания двумя пальцами.
Устройства, которые оснащены сенсорной панелью с двумя пальцами для перемещения курсора, могут поддерживать эту функцию.

android.hardware.faketouch.multitouch.jazzhand
Приложение распознает следы пяти или более «пальцев» на поддельном сенсорном интерфейсе. Это расширенный набор функции android.hardware.faketouch. Если эта функция объявлена ​​как требуемая, это означает, что приложение совместимо только с устройствами, которые имитируют сенсорное отслеживание пяти или более пальцев или фактически имеют сенсорный экран.
отличается от дифференцированного мультитач, определяемого android.hardware.touchscreen.multitouch.jazzhand. Устройства ввода, поддерживающие мультисенсорное управление одной рукой через поддельный сенсорный интерфейс, не поддерживают все пять -пальцевые жесты, потому что ввод преобразуется в движение курсора на экране. Другими словами, жесты с одним пальцем на таких устройствах перемещают курсор, жесты с несколькими пальцами запускают события касания одним пальцем, а другие жесты с несколькими пальцами запускают соответствующие события касания несколькими пальцами.
Устройства с сенсорной панелью с пятью пальцами для перемещения курсора могут поддерживать эту функцию.

Читайте также:  Android auto навигация по bluetooth

android.hardware.touchscreen
Приложение использует функцию сенсорного экрана устройства для реализации жестов, которые более интерактивны, чем базовые сенсорные события, например, скольжение по экрану. Это расширенный набор функции android.hardware.faketouch.
По умолчанию вашему приложению требуется эта функция. Следовательно, ваше приложение недоступно для устройств, которые по умолчанию предоставляют только аналоговый сенсорный интерфейс («поддельное касание»). Если вы хотите, чтобы ваше приложение было доступно для устройств с поддельным сенсорным интерфейсом (или даже для устройств, которые предоставляют только контроллеры клавиш со стрелками), вы должны явно объявить, добавив android: required = ”false” при объявлении android.hardware.touchscreen No touch требуется экран. Если ваше приложение использует (но не нуждается) настоящий интерфейс сенсорного экрана, вам следует добавить это утверждение.
Если вашему приложению требуется сенсорный интерфейс (для выполнения более сложных сенсорных жестов, таких как скользящие экраны), вам не нужно объявлять какие-либо функции сенсорного интерфейса, поскольку они требуются по умолчанию. Однако лучше явно указать все функции, используемые вашим приложением.
Если вам нужны более сложные сенсорные взаимодействия (например, жесты несколькими пальцами), вы должны объявить, что ваше приложение использует расширенные функции сенсорного экрана.

android.hardware.touchscreen.multitouch
В приложении используется базовая двухточечная функция мультитач устройства (например, функция сжатия и закрытия жестов), но приложению не требуется отслеживать сенсорную дорожку независимо . Это расширенный набор функции android.hardware.touchscreen.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.touchscreen, если только родительская функция не использует android: required = ”false” при ее объявлении.

android.hardware.touchscreen.multitouch.distinct
Приложение использует расширенную функцию мультитач устройства для независимого отслеживания траектории двух или более точек. Эта функция является расширенной версией функции android.hardware.touchscreen.multitouch.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.touchscreen.multitouch, если только родительская функция не использует android: required = ”false” при объявлении.

android.hardware.touchscreen.multitouch.jazzhand
Приложение использует расширенную функцию мультитач устройства для независимого отслеживания пяти или более точек. Эта функция является расширенной версией функции android.hardware.touchscreen.multitouch.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.hardware.touchscreen.multitouch, если только родительская функция не использует android: required = ”false” при объявлении.

Аппаратная функция USB

android.hardware.usb.accessory
Приложение работает как устройство USB и подключено к хосту USB.

android.hardware.usb.host
Приложение использует USB-аксессуар, подключенный к устройству. Устройство действует как USB-хост.

Аппаратные особенности Wi-Fi

android.hardware.wifi
Приложение использует на устройстве функцию сети 802.11 (Wi-Fi).

android.hardware.wifi.direct
Приложение использует на устройстве функцию сети Wi-Fi Direct.

Программная функция

Чтобы указать, что приложение использует или требует определенной программной функции, объявите соответствующее значение в атрибуте android: name (начиная с «android.software»). Пожалуйста, используйте отдельный элемент каждый раз, когда вы объявляете функцию программного обеспечения.

Функция коммуникационного программного обеспечения

android.software.sip
Приложение использует службы Session Initiation Protocol (SIP). Используя SIP, приложения могут поддерживать операции интернет-телефонии, такие как видеоконференцсвязь и обмен мгновенными сообщениями.

android.software.sip.voip
Приложение использует услуги передачи голоса по протоколу Интернет (VoIP) на основе SIP. Используя VoIP, приложения могут поддерживать операции с Интернет-телефоном в реальном времени, такие как двусторонняя видеоконференцсвязь.
Используя эту функцию, приложение подразумевает, что оно также использует функцию android.software.sip, если родительская функция не использует android: required = ”false” при объявлении.

android.software.webview
Приложение отображает контент из Интернета.

Пользовательская функция программного обеспечения ввода

android.software.input_methods
Приложение использует новый метод ввода, который определен разработчиком в InputMethodService.
Функция программного обеспечения для управления устройствами

android.software.backup
Приложение добавляет логику для обработки операций резервного копирования и восстановления.

android.software.device_admin
Приложение использует администратора устройства для обеспечения соблюдения технических характеристик устройства.

android.software.managed_users
Приложение поддерживает дополнительных пользователей и файлы конфигурации хостинга.

android.software.securely_removes_users
Приложение может безвозвратно удалять пользователей и связанные с ними данные.

android.software.verified_boot
Приложение добавляет логику для обработки результатов функции запуска проверки устройства, которая может определять, изменилась ли конфигурация устройства во время операции перезапуска.

Функция медиа-программного обеспечения

android.software.midi
Приложение использует протокол цифрового интерфейса музыкальных инструментов (MIDI) для подключения к музыкальным инструментам или вывода звуков.

android.software.print
Приложение для добавления команд в документ, отображаемый на печатающем устройстве.

android.software.leanback
Приложение представляет собой пользовательский интерфейс, разработанный специально для просмотра на большом экране (например, на телевизоре).

android.software.live_tv
Приложение для просмотра телешоу в прямом эфире.

Функция программного обеспечения интерфейса экрана

android.software.app_widgets
Приложение использует или предоставляет виджеты приложений и должно быть установлено только на устройстве с домашним экраном или подобным местом, где пользователь может встроить виджет приложения.

android.software.home_screen
Приложение действует как альтернатива главному экрану устройства.

android.software.live_wallpaper
Приложение использует или предоставляет обои с анимацией.

Подразумеваемые функциональные требования

Некоторые константы аппаратных и программных функций предоставляются приложениям после выпуска соответствующего API. Например, функция android.hardware.bluetooth была добавлена ​​в Android 2.2 (уровень API 8), но API Bluetooth, на который она ссылается, был добавлен в Android 2.0 (уровень API 5). Поэтому у некоторых приложений есть возможность использовать API, прежде чем они смогут использовать систему, чтобы заявить, что им нужен API.
Чтобы предотвратить непреднамеренное предоставление этих приложений, Google Play примет определенные разрешения, связанные с оборудованием, и по умолчанию потребует базовых аппаратных функций. Например, приложение, использующее Bluetooth, должно запрашивать разрешение BLUETOOTH в элементе — для более старых приложений Google Play предполагает, что объявление разрешения означает, что приложению нужна базовая функция android.hardware.bluetooth, и фильтры устанавливаются в соответствии с этой функцией. Требования к функциям, вытекающие из разрешений, перечисленных в таблице 2, эквивалентны функциям, объявленным в элементе.
Обратите внимание, что объявления (включая любые объявленные атрибуты android: required) всегда имеют приоритет над функциями, подразумеваемыми разрешениями в таблице 2. Для любого из вышеперечисленных разрешений вы можете использовать атрибут android: required = ”false” в элементе, чтобы явно объявить скрытую функцию, чтобы отключить фильтрацию на основе скрытой функции. Например, если вы хотите отключить любую фильтрацию на основе разрешений КАМЕРЫ, вам необходимо добавить следующий оператор в файл манифеста:

Таблица 2. Разрешения устройства, которые подразумевают использование оборудования устройства.

Источник

Оцените статью