Añadir el SDK
Método A: Maven (recomendado)
En los repositorios delbuild.gradle / settings.gradle del proyecto:
build.gradle del módulo:
gradle/libs.versions.toml):
Método B: AAR local
Descarga el SDK desde Descargas, copiafacebetter.aar a libs/ y luego:
Permisos
AndroidManifest.xml:
Solicita
CAMERA en runtime en API 23+.
Imports
Logging
El logging está desactivado por defecto. Actívalo antes denew BeautyEffectEngine(...).
Crear el motor
Credenciales: Suscripción. Detalles de autenticación: Autenticación y licencia. SilicenseToken no está vacío, se usa (token de licencia / JSON {token} / .lic sin conexión). En caso contrario appId + appKey llaman a /facebetter/v2/auth.
null; lanza si config no es válido. Observa EngineEventCode.INITIALIZATION_COMPLETE / INITIALIZATION_FAILED en los callbacks para el init asíncrono.
Belleza
Intensidad[0.0, 1.0]. 0 desactiva el efecto. Comprueba ErrorCode.SUCCESS (0).
Remodelado
Rango[-1.0, 1.0]. 0 desactiva.
FACE_THIN … BROW_THICKNESS) y las direcciones positiva / negativa: Enumeraciones de parámetros.
Remodelado corporal
Rango[0.0, 1.0]. 0 desactiva. Registra resource_body.fbd con addResourcePack primero (no está en el AAR). Consulta Enumeraciones de parámetros y Paquetes de recursos opcionales.
Maquillaje
Configura primero la intensidad y luego el estilo y/o el color.Fondo virtual y croma
Desenfoque (0 borra), imagen estática, o máscara de croma + relleno.
clearChromaKey() restaura la segmentación de retrato y no quita el relleno actual de desenfoque/imagen.
Filtros y stickers
Carga un.fbd desde una ruta de archivo o assets. No hay paso de registro.
resource_3d.fbd (no está en el AAR). Consulta Paquetes de recursos opcionales. Regístralo desde los assets de tu app y luego aplica un sticker 3D .fbd:
processImage.
Callbacks y estadísticas
Procesar fotogramas
ConfiguraImageFrame.type a FrameType.IMAGE (estático) o FrameType.VIDEO (cámara / directo). processImage recibe solo el fotograma: no hay un argumento de modo extra.
Bitmap:
getData() / accesores planares, o convierte:
Pipeline de cámara
Típico Camera2YUV_420_888 → motor → visualización:
Textura externa (OpenGL ES)
Usa esto cuando ya renderizas con OpenGL ES y quieres evitar idas y vueltas por CPU.GL_TEXTURE_2D:
- Textura de entrada:
GL_TEXTURE_2D, normalmente RGBA;stridesuele serwidth * 4 - Crea el motor de forma diferida en el primer callback GL para que el contexto esté actual
- La textura de salida la posee el SDK; no hagas
glDeleteTextures. Libera elImageFrame - Si se pierde el contexto GL,
release()el motor y créalo de nuevo en el nuevo contexto - Usa
FrameType.VIDEOpara pipelines GL en directo - Para TRTC / Agora / LiveKit y SDK similares: Integración con terceros

