{"id":18961691,"url":"https://github.com/yoonit-labs/android-yoonit-facefy","last_synced_at":"2026-02-17T08:37:30.355Z","repository":{"id":44450504,"uuid":"333837580","full_name":"Yoonit-Labs/android-yoonit-facefy","owner":"Yoonit-Labs","description":"The face detection's module for Android with a lot of awesome features","archived":false,"fork":false,"pushed_at":"2021-10-29T23:24:11.000Z","size":15719,"stargazers_count":38,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-19T16:24:15.290Z","etag":null,"topics":["android-facefy","android-lib-face","computer-vision","face-analysis","face-detection","face-movement","face-undertanding","hacktoberfest","head-movement","jitpack-face-detection","mlkit-android","undertanding-face-android","yoonit-android-facefy"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yoonit-Labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-28T17:43:31.000Z","updated_at":"2024-01-07T00:30:11.000Z","dependencies_parsed_at":"2022-08-30T02:30:24.331Z","dependency_job_id":null,"html_url":"https://github.com/Yoonit-Labs/android-yoonit-facefy","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Yoonit-Labs/android-yoonit-facefy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yoonit-Labs%2Fandroid-yoonit-facefy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yoonit-Labs%2Fandroid-yoonit-facefy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yoonit-Labs%2Fandroid-yoonit-facefy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yoonit-Labs%2Fandroid-yoonit-facefy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yoonit-Labs","download_url":"https://codeload.github.com/Yoonit-Labs/android-yoonit-facefy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yoonit-Labs%2Fandroid-yoonit-facefy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29537892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T08:11:05.436Z","status":"ssl_error","status_checked_at":"2026-02-17T08:09:38.860Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-facefy","android-lib-face","computer-vision","face-analysis","face-detection","face-movement","face-undertanding","hacktoberfest","head-movement","jitpack-face-detection","mlkit-android","undertanding-face-android","yoonit-android-facefy"],"created_at":"2024-11-08T14:14:02.571Z","updated_at":"2026-02-17T08:37:30.268Z","avatar_url":"https://github.com/Yoonit-Labs.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAndroid Yoonit Facefy\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/v/tag/Yoonit-Labs/android-yoonit-facefy?color=lightgrey\u0026label=version\u0026style=for-the-badge\"/\u003e\n\t\u003cimg src=\"https://img.shields.io/github/license/Yoonit-Labs/android-yoonit-facefy?color=lightgrey\u0026style=for-the-badge\"/\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003ctable\u003e\n\t\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\u003ctd align=\"left\" valign=\"middle\"\u003e\n\t\t\t\t\t\u003cp\u003e◻ \u003ca href=\"https://developers.google.com/ml-kit\"\u003eGoogle MLKit\u003c/a\u003e integration\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ \u003ca href=\"https://pytorch.org/mobile/home\"\u003ePyTorch\u003c/a\u003e integration\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ Computer vision pipeline\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ Face detection\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ Face contours\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ Face expressions\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003e◻ Face movement\u003c/p\u003e\n\t\t\t\t\u003c/td\u003e\n\t\t\t\t\u003ctd align=\"center\" valign=\"middle\"\u003e\n\t\t\t\t\t\u003cimg src=\"https://raw.githubusercontent.com/Yoonit-Labs/android-yoonit-facefy/main/facefy.gif\" width=\"300\" /\u003e\n\t\t\t\t\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\u003ctbody\u003e\n\t\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003ch3\u003eSponsors\u003c/h3\u003e\n\t\u003ctable\u003e\n\t\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\u003ctd\u003e\n\t\t\t\t\t\u003cb\u003ePlatinum\u003c/b\u003e\n\t\t\t\t\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\u003ctd align=\"center\" valign=\"middle\"\u003e\n\t\t\t\t\t\u003ca href=\"https://cyberlabs.ai\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Yoonit-Labs/android-yoonit-facefy/development/sponsor_cyberlabs.png\" width=\"300\" /\u003e\u003c/a\u003e\n\t\t\t\t\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\u003c/tbody\u003e\n\t\u003c/table\u003e\n\t\u003ch5\u003e\u003ca href=\"mailto:about@yoonit.dev\"\u003eBecome a sponsor!\u003c/a\u003e\u003c/h5\u003e\n\u003c/div\u003e\n\n## Table of Contents\n\n* [Installation](#installation)\n* [Usage](#usage)\n* [API](#api)\n  * [Methods](#methods)\n  * [FaceDetected](#facedetected)\n    * [Head Movements](#head-movements)\n* [To contribute and make it better](#to-contribute-and-make-it-better)\n\n## Installation\n  \nAdd the JitPack repository to your root `build.gradle` at the end of repositories  \n\n```groovy  \nallprojects {\n\trepositories {  \n\t... \n\tmaven { url 'https://jitpack.io' }\n\t} \n}  \n```  \n\nAdd the dependency  \n\n```groovy  \ndependencies {\n\timplementation 'com.github.Yoonit-Labs:android-yoonit-facefy:master-SNAPSHOT'\n}\n```  \n\n## Usage\n\nThis is a basic usage to the `FacefyYoonit`.\nFeel free to use the demo.\n\n```kotlin\nimport ai.cyberlabs.yoonit.facefy.Facefy\n\n...\n\n    fun example(inputBitmap: Bitmap) {\n        Facefy()\n            .detect(\n                inputBitmap,\n                { faceDetected -\u003e\n                    val boundingBox: Rect = faceDetected.boundingBox\n                    val contours: MutableList\u003cPointF\u003e = faceDetected.contours\n                    val headEulerAngleX: Float = faceDetected.headEulerAngleX\n                    val headEulerAngleY: Float = faceDetected.headEulerAngleY\n                    val headEulerAngleZ: Float = faceDetected.headEulerAngleZ\n                    val leftEyeOpenProbability: Float? = faceDetected.leftEyeOpenProbability\n                    val rightEyeOpenProbability: Float? = faceDetected.rightEyeOpenProbability\n                    val smilingProbability: Float? = faceDetected.smilingProbability\n                },\n                { errorMessage -\u003e\n                    val mesage: String = errorMessage\n                },\n                {\n                    // Process completed.\n                }       \n            )\n    }\n```\n\n## API\n\n### Methods\n\n| Function | Parameters                                                                          | Return Type | Description                                                                                          |\n| -        | -                                                                                   | -           | -                                                                                                    |\n| detect   | `inputBitmap: Bitmap, onSuccess: (FaceDetected) -\u003e Unit, onError: (String) -\u003e Unit` | void        | Detect a face from bitmap and return the result in the [`FaceDetected`](#facedetected) as a closure. |\n\n### FaceDetected\n\n| Attribute               | Type                | Description                                                                                                               |\n| -                       | -                   | -                                                                                                                         |\n| leftEyeOpenProbability  | Float?              | The left eye open probability.                                                                                            |\n| rightEyeOpenProbability | Float?              | The right eye open probability.                                                                                           |\n| smilingProbability      | Float?              | The smiling probability.                                                                                                  |\n| headEulerAngleX         | Float               | The angle that points the rotation of the face about the horizontal axis of the image. [HeadMovements](#head-movements)   |\n| headEulerAngleY         | Float               | The angle that points the \"left-right\" head direction. See [HeadMovements](#head-movements)                               |\n| headEulerAngleZ         | Float               | The angle that points the rotation of the face about the axis pointing out of the image. [HeadMovements](#head-movements) |\n| contours                | Mutablelist\u003cPointF\u003e | List of Points that represents the shape of the recognized face.                                                          |\n| boundingBox             | Rect                | The face bounding box.                                                                                                    |\n\n#### Head Movements\n\nHere we explaining the above gif and how reached the \"results\". Each \"movement\" (vertical, horizontal and tilt) is a state, based in the angle in degrees that indicate head direction;\n\n| Head Direction | Attribute         |  _v_ \u003c -36°           | -36° \u003c _v_ \u003c -12° | -12° \u003c _v_ \u003c 12° | 12° \u003c _v_ \u003c 36° |  36° \u003c _v_    | \n| -              | -                 | -                     | -                 | -                | -               | -             |\n| Vertical       | `headEulerAngleX` | Super Down            | Down              | Frontal          | Up              | Super Up      |            \n| Horizontal     | `headEulerAngleY` | Super Left            | Left              | Frontal          | Right           | Super Right   |\n| Tilt           | `headEulerAngleZ` | Super Right           | Right             | Frontal          | Left            | Super Left    |\n\n## To contribute and make it better\n\nClone the repo, change what you want and send PR.\nFor commit messages we use \u003ca href=\"https://www.conventionalcommits.org/\"\u003eConventional Commits\u003c/a\u003e.\n\nContributions are always welcome!\n\n\u003ca href=\"https://github.com/Yoonit-Labs/android-yoonit-facefy/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Yoonit-Labs/android-yoonit-facefy\" /\u003e\n\u003c/a\u003e\n\n---\n\nCode with ❤ by the [**Yoonit**](https://yoonit.dev/) Team\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoonit-labs%2Fandroid-yoonit-facefy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyoonit-labs%2Fandroid-yoonit-facefy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoonit-labs%2Fandroid-yoonit-facefy/lists"}