Fantástico ver como es el código de personalización de la camara 👍
Introducción a HMS Core
Pasos para el desarrollo de aplicaciones con Huawei
Debugging en la nube con Huawei
¿Qué es HMS Core?
Creación del proyecto en Android Studio
Creación de la aplicación en App Gallery Connect
Configuración de firma SHA-256
Configuración de APIs
Configuración de Android Studio y Gradle
Probando la sincronización de la aplicación
Autenticación con HMS Account Kit
Diseñando nuestra pantalla de login
Agregando los métodos de autenticación
Verificando la autenticación
Agregando el método de logout
Construyendo nuestra cámara de selfies con HMS ML Kit
Machine Learning con Huawei
Agregando los permisos para acceder a la cámara
Diseñando la pantalla personalizada de la cámara
Creando la capa de gráficos de la cámara
Creando el layout para nuestro rostro
Creando el layout del lente de la cámara
Creando nuestra actividad de cámara
Agregando nuestra cámara personalizada a la actividad
Agregando los métodos de verificación de rostro
Agregando la detección de rostro y sonrisa individual
Agregando la detección de rostro y sonrisa grupal
Tomar nuestra imagen y agregar un método de re-toma de foto
Guardar la foto en nuestra galeria
Aplicando notificaciones push con HMS Push kit
Crear el servicio de push notifications
Agregar el servicio de HMS Push kit
Verificar la conectividad de las notificaciones en App Gallery Connect
Conclusiones y consejos
Tips y solución de inconvenientes frecuentes
¿Qué más tiene Huawei?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Juan Camilo Sandoval
Aportes 3
Preguntas 1
Fantástico ver como es el código de personalización de la camara 👍
BaseGraphic
package com.sandoval.hselfiecamera.overlay
import android.graphics.Canvas
import com.huawei.hms.mlsdk.common.LensEngine
abstract class BaseGraphic(private val graphicOverlay: GraphicOverlay) {
abstract fun draw(canvas: Canvas?)
fun scaleX(x: Float): Float {
return x * graphicOverlay.widtScaleValue
}
fun scaleY(y: Float): Float {
return y * graphicOverlay.heightScaleValue
}
fun translateX(x: Float): Float {
return if (graphicOverlay.cameraFacing == LensEngine.FRONT_LENS) {
graphicOverlay.width - scaleX(x)
} else {
scaleX(x)
}
}
fun translateY(y: Float): Float {
return scaleY(y)
}
}
GraphicOverlay
package com.sandoval.hselfiecamera.overlay
import android.content.Context
import android.graphics.Canvas
import android.util.AttributeSet
import android.view.View
import com.sandoval.hselfiecamera.camera.CameraConfiguration
class GraphicOverlay(
context: Context,
atts: AttributeSet?
) : View(context, atts) {
private val lock = Any()
private var previewWidth = 0
private var previewHeight = 0
var widtScaleValue = 1.0f
private set
var heightScaleValue = 1.0f
private set
var cameraFacing = CameraConfiguration.CAMERA_FACING_FRONT
private set
private val graphics: MutableList<BaseGraphic> = ArrayList()
fun addGraphic(graphic: BaseGraphic) {
synchronized(lock) { graphics.add(graphic) }
}
fun clear() {
synchronized(lock) { graphics.clear() }
this.postInvalidate()
}
fun setCameraInfo(width: Int, height: Int, facing: Int) {
synchronized(lock) {
previewWidth = width
previewHeight = height
cameraFacing = facing
}
this.postInvalidate()
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
synchronized(lock) {
if (previewWidth != 0 && previewHeight != 0) {
widtScaleValue =
width.toFloat() / previewWidth.toFloat()
heightScaleValue =
height.toFloat() / previewHeight.toFloat()
}
for (graphic in graphics) {
graphic.draw(canvas)
}
}
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?