Android
A BCC Face é um biblioteca de Android feita para ser integrada em uma aplicação Android.
A biblioteca utiliza a câmera do dispositivo para tirar uma foto da face para propósitos biométricos. Ela provê um teste simples de vivacidade ativo, requerendo que a pessoa sorria por alguns segundos e/ou olhe para a direita ou esquerda. O teste de vivacidade inclui uma opção para falar as instruções, facilitando o fluxo para os usuários. Adicionalmente, ela provê um teste de vivacidade passivo que pode ser usado para verificar se a foto foi tirada de uma pessoa real sem requerer interação do usuário.
Esse manual está atualizado para a versão 4.8.0 do BCC Face Mobile Android.
O teste de vivacidade passivo está disponível somente a partir da versão 4.4.0.
Requisitos
A BCC Face é uma biblioteca de Android e deve ser importada no projeto-alvo.
Versão mínima do Android: Android 6.0 (SDK 23), "Marshmallow".
O aparelho móvel deve possuir uma câmera.
O aplicativo nativo deve ser compilado com tecnologia Android.
Ambiente de desenvolvimento: Uma IDE Android é necessária, como o Android Studio (recomendado).
Dependências externas adicionais:
Google ML Kit, face-detection versão 16.0.2;
Lottie, versão 3.0.0;
Libyuv-android, versão 1.0.0;
Serviços externos:
Firebase, pelo Google. Uma conta é necessária, mas nenhuma cobrança será aplicada, pois a biblioteca usa apenas APIs no dispositivo.
Instalação
Adicionando a biblioteca do projeto do App
A biblioteca BCC Face é fornecida pela Griaule como um arquivo .aar.
Para adicionar a biblioteca, acesse o diretório do seu projeto, abra a pasta app e crie os diretórios libs/bccface. Em seguida, acione a dependência bccfacelib-release.aar. A estrutura de pastas deve ser semelhante a essa:

A próxima etapa é tornar esses arquivos visíveis para as dependências do gradle. Para fazer isso, adicione a seguinte linha no arquivo build.gradle (:app) no objeto de dependências:
Dentro do arquivo build.gradle (:app), adicione também as opções de compilação e defina a compatibilidade de origem e a compatibilidade de destino para usar 1.8 (Java 8):
Configurando o Google ML Kit
É recomendado seguir as instruções fornecidas na "Opção 1: adicionar o Firebase usando o Console do Firebase" da documentação do Firebase para Android: Adicionar o Firebase ao projeto para Android.
Uma conta é necessária, mas nenhuma cobrança será aplicada, pois a biblioteca usa apenas APIs no dispositivo: Veja os detalhes de precificação do Firebase.
Se a Opção 1 foi escolhida, certifique-se de gerar o arquivo google-services.json e colocá-lo no diretório android/app/.
Modifique os seguintes arquivos:
android/build.gradleandroid/app/build.gradle, adicione ao final do arquivo:
Configurando as dependências
Modifique os seguintes arquivos:
android/build.gradleandroid/app/build.gradle
Uso
Parâmetros e Construtor
Para usar a biblioteca BCC Face corretamente, certos parâmetros são necessários.
Um exemplo simples de uso de biblioteca é mostrado abaixo:
O construtor da classe BCCFaceBuilder recebe os seguintes parâmetros:
context: Context- O contexto da aplicação.delegate: BCCFaceDelegate- Interface responsável por notificar os eventos de captura, como falha ou sucesso.
A classe BCCFaceBuilder é responsável por gerenciar as configurações de uso do BCCFace. Os parâmetros a seguir são aceitos para configuração da captura biométrica e comportamento do software:
buildSmileCheck(smileProbability: Float = 0.8f)- Adiciona o teste de vivacidade por meio de verificação de sorriso e define o limiar de aceitação. Essa funcionalidade é ativada por padrão.removeSmileCheck()- Remove o teste de vivacidade por meio de sorriso.buildRotationCheck(livenessConfigList: List<HeadRotationCheck>, headRotationAngle: Float = 20f)- Define uma lista de testes de vivacidade para rotação de face e o ângulo máximo de rotação. Essa funcionalidade é ativada por padrão. As opções para rotação de face são:removeHeadRotation()- Remove o teste de vivacidade por meio de rotação de face.addPassiveLiveness()- Adiciona o teste de vivacidade passivo. Essa funcionalidade é usada para verificar se a foto capturada é de uma pessoa real sem requerer interação do usuário. Para usar essa funcionalidade, você DEVE desabilitar os testes de vivacidade ativos (removeSmileCheck()eremoveHeadRotation()) que são adicionados por padrão.buildSpeechSettings(speechSettings: SpeechSettings?)- Define os critérios para a configuração de acessibilidade (leitura das instruções) usando os seguintes parâmetros:volume- O volume do áudio entre0.0e1.0.startsMuted- Define se as instruções iniciarão silenciadas ou não (truepara silenciar).pitch- Define o timbre de voz para as instruções entre0.5(grave) e2.0(agudo).speed- Define a velocidade de leitura das instruções. Este valor deve ser positivo.
Os valores predeterminados podem ser acessados por meio da seguinte variável estática:
removeSpeech()- Remove a leitura de acessibilidade.setReviewEnable(enable: Boolean)- Define se a tela de revisão da captura biométrica será habilitada ou não.setInstructionEnable(enable: Boolean)- Define se a tela de instruções será habilitada ou não.forceLanguage(language: BCCFaceAPI.BCCLanguages?)- Força as instruções a serem exibidas em um idioma específico. Se o idioma do dispositivo não for suportado, inglês será usado. Os idiomas suportados são:removeLanguage()- Remove o idioma forçado.enableFlipCameraButton(enable: Boolean)- Ativa (true) ou desativa (false) a presença do botão de troca de câmera (frontal ou traseira). Padrão: ativado (true).setCameraInitialDirection(CameraFacingDirection.<FRONT or BACK>)- Define a direção inicial da câmera, escolher entre:CameraFacingDirection.FRONT- Câmera frontal (definição padrão).CameraFacingDirection.BACK- Câmera traseira.
Todas as configurações de direção da câmera são obtidas por meio da combinação dos métodos enableFlipCameraButton e setCameraInitialDirection. Por exemplo:
Iniciar com a câmera frontal e habilitar o botão de troca de câmera:
Iniciar com a câmera traseira e desabilitar o botão de troca de câmera:
Para referência, a lista completa de parâmetros e valores padrão é:
O teste de vivacidade ativo (usando sorriso e rotação aleatória de cabeça) é habilitado por padrão. Para usar apenas o teste de vivacidade passivo, antes de adicioná-lo, é necessário remover os métodos de vivacidade ativa do construtor:
Aqui está um trecho de código para iniciar uma captura usando apenas o teste de vivacidade passivo:
Valores de Retorno
Os resultados da última captura facial podem ser recuperados através do método faceCaptureDidFinish da interface BCCFaceDelegate:
O objeto data contém ambas as imagens capturadas durante o processo:
As propriedades retornadas são:
originalPhoto(image) - Foto original tirada pela câmera.croppedPhoto(image) - Foto cortada, que é a imagem da face recortada da foto original.passiveResult(ByteArray) - Conteúdo do arquivo de coleta para teste de vivacidade passivo. Está presente apenas se capturado com sucesso. É o retorno da coleta para teste de vivacidade passivo como JPEG ByteArray. Esses dados podem ser salvos/exportados diretamente para um arquivo ou enviados para a rede (para rede: a codificação do sistema pode ser facilmente feita, por exemplo, uma string Base64).
Caso o usuário encerre a aplicação antes de finalizar a captura biométrica, o método faceCaptureDidAbort será chamado. Você pode implementar este método para tratar este cenário.
Projeto Exemplo
Este é um exemplo de projeto funcional para captura de face utilizando o BCC Mobile Face Android:
Exemplo de chamada para API de Liveness
Esse exemplo demonstra uma chamada para API de Liveness com o resultado de Captura Passiva, o que ajuda a mitigar possíveis ataques.
Quando a captura finalizar, o resultado passivo (Data) pode ser convertido para Base64 e enviado para a API de Liveness:
Atualizado
Isto foi útil?

