Вторая по частоте future-функция, которую я использовал, это абсолютный импорт
from __future__ import absolute_import
Что она делает?
Изменения, которые вносит эта инъекция описаны в PEP328
Покажу простой пример.
Допустим, есть такой пакет:
/my_package
/__init__.py
/main.py
/string.py
Смотрим код в my_package/main.py
# main.py
import string
Простой пример готов) Вопрос в том, какой модуль импортируется в данном случае? Есть два варианта:
1. модуль в моём пакете my_package.string
2. стандартный модуль string
И вот тут вступает в дело приоритет импортов. В Python2 порядок следующий: помимо иных источников, раньше ищется модуль внутри текущего пакета, а потом в стандартных библиотеках. Таким образом мы импортнём my_package.string.
Но в Python3 это поведение изменилось. Если мы указываем просто имя пакета, то ищется именно такой модуль, игнорируя имена в текущем пакете. Если мы хотим импортнуть именно подмодуль из нашего пакета то, мы должны теперь явно это указывать.
from my_package import string
или относительный импорт, но с указанием пути относительно текущего модуля main
from . import string
Еще одной неоднозначностью меньше 😎
Подробней про импорты здесь:
https://docs.python.org/3/tutorial/modules.html
#2to3#pep#basic
🤖Как проверить, какие комбинации фичей поддерживает камера смартфона
Современные смартфоны умеют снимать с HDR, 120 FPS и стабилизацией, но вот какая комбинация этих фич реально доступна — загадка. Например, стабилизация часто работает только при 1080p, а 60 FPS не всегда доступны в 4K.
С выходом Jetpack CameraX 1.5 появилось API GroupableFeature и новые параметры для SessionConfig, которые позволяют из кода проверить, какие функции камера может использовать одновременно.
// Пример проверки неподдерживаемых комбинаций
val unsupportedFeatures =
mutableSetOf<GroupableFeature>()
val appFeatureOptions =
setOf(HDR_HLG10, FPS_60, PREVIEW_STABILIZATION)
appFeatureOptions
.filterNot { it in currentFeatures }
.filter { featureOption ->
cameraInfo.isFeatureGroupSupported(
SessionConfig(
useCases = useCases,
requiredFeatureGroup =
currentFeatures + featureOption
)
)
}
.forEach { unsupportedFeatures.add(it) }
Так можно заранее отсеять неподдерживаемые сочетания — например, когда HDR и стабилизация не работают вместе при 60 FPS 🎥
Подробнее в статье (EN)
#android#camerax#Jetpack#androidjetpack
🚀Как снять видео с FPS 120, 240 и выше c Jetpack CameraX
В Jetpack CameraX 1.5 появилась фича high-speed capture - позволяет делать съемку с высокой частотой кадров. Также это может использоваться для съёмки slow-motion видео.
Не все устройства смогут снимать видео с высокой частотой кадров, а если и смогут, то это это будет разрешение FullHD или ниже. CameraX проверяет информацию на основе CamcorderProfile, который провалидирован с помощью Android Compatibility Test Suite (CTS) для каждого устройства.
Если вам интересно, то в статье найдете подробную инструкцию по реализации в коде.
#android#jetpack#камера#camerax
🤖Рассказали про возможности для работы со съемкой видео с помощью CameraX и редактированием видео через Jetpack Media3. Уже вполне можно накладывать эффекты и править видео
#android#jetpack#media3#camerax
Руководство(EN,6м) от команды CameraX по созданию эффекта как на видео, когда весь ваш UI на Compose. Используется определение лиц в кадре и наложение масок
🔗Ссылка без VPN
#android#jetpack#camerax#камера#compose
🤖Вышла CameraX 1.6.0 с крутыми улучшениями
Вышел стабильный релиз CameraX 1.6.0. Цикл разработки был долгим, зато список изменений получился весомым.
👉Переход на CameraPipe — CameraX теперь работает на том же стеке, что и приложение камеры Pixel. Все оптимизации и новые computational photography фичи отныне приходят в CameraX автоматически.
👉Media3 Muxer по умолчанию — видеозапись через VideoCapture теперь использует Media3 Muxer. Если приложение упадёт во время записи, файл не повредится. Плюс более эффективный процессинг в целом.
👉Feature Group обновился — GroupableFeatures пополнился константами VIDEO_STABILIZATION и UHD_RECORDING. Теперь их можно комбинировать с другими фичами в одном SessionConfig, туда же вписываются CameraEffect и ImageAnalysis.
👉SessionConfig стал стабильным API — вышел из experimental вместе с HighSpeedVideoSessionConfig. Появился isSessionConfigSupported для проверки совместимости конкретной комбинации фич до биндинга к lifecycle. Также появился ExtensionSessionConfig для работы с CameraX Extensions.
Также исправили баг на Android 17. Версия 1.5.2 падает.
🔗 Источник - developer.android.com
🐱Примеры на Github
#Android#AndroidDev#CameraX#Jetpack#Камера
🔥Jetpack CameraX теперь разрабатывается вместе с командой камеры Pixel
Вышла первая альфа-версия Jetpack CameraX 1.6.0
Главное изменение — переход на унифицированный высокопроизводительный стек камеры, тот самый, что используется в приложении камеры Pixel. Этот стек известен как CameraPipe — и теперь CameraX и Pixel Camera развиваются совместно.
Новый стек принесёт:
👉 более быструю и стабильную инициализацию камеры,
👉 консистентную обработку фреймов,
👉 и улучшенную совместимость между устройствами.
Повод задуматься для миграции на CameraX для тех, кто не решался это сделать
#android#jetpack#androidjetpack#camerax#camera