{"id":22737114,"url":"https://github.com/kibotu/heart-rate-ometer","last_synced_at":"2025-06-15T17:35:58.976Z","repository":{"id":89773016,"uuid":"116729835","full_name":"kibotu/Heart-Rate-Ometer","owner":"kibotu","description":"Measures human heart rate using camera and flash light.","archived":false,"fork":false,"pushed_at":"2019-10-04T07:32:34.000Z","size":206,"stargazers_count":105,"open_issues_count":6,"forks_count":36,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-14T04:37:39.841Z","etag":null,"topics":["android-library","camera","hacktoberfest","rxandroid","sensor"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kibotu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"custom":"https://paypal.me/janrabe/5"}},"created_at":"2018-01-08T21:25:40.000Z","updated_at":"2025-03-25T10:44:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e4dc3e5-db45-445d-ac75-10b5500c2790","html_url":"https://github.com/kibotu/Heart-Rate-Ometer","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/kibotu/Heart-Rate-Ometer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kibotu%2FHeart-Rate-Ometer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kibotu%2FHeart-Rate-Ometer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kibotu%2FHeart-Rate-Ometer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kibotu%2FHeart-Rate-Ometer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kibotu","download_url":"https://codeload.github.com/kibotu/Heart-Rate-Ometer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kibotu%2FHeart-Rate-Ometer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260022984,"owners_count":22947276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-library","camera","hacktoberfest","rxandroid","sensor"],"created_at":"2024-12-10T22:09:46.440Z","updated_at":"2025-06-15T17:35:58.879Z","avatar_url":"https://github.com/kibotu.png","language":"Kotlin","funding_links":["https://paypal.me/janrabe/5","https://www.paypal.me/janrabe/5"],"categories":[],"sub_categories":[],"readme":"[![Donation](https://img.shields.io/badge/buy%20me%20a%20coffee-brightgreen.svg)](https://www.paypal.me/janrabe/5) [![About Jan Rabe](https://img.shields.io/badge/about-me-green.svg)](https://about.me/janrabe) \n# Heart-Rate-Ometer [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Heart--Rate--Ometer-green.svg?style=flat)](https://android-arsenal.com/details/1/6681) [![](https://jitpack.io/v/kibotu/Heart-Rate-Ometer.svg)](https://jitpack.io/#kibotu/Heart-Rate-Ometer) [![](https://jitpack.io/v/kibotu/Heart-Rate-Ometer/month.svg)](https://jitpack.io/#kibotu/Heart-Rate-Ometer) [![Javadoc](https://img.shields.io/badge/javadoc-SNAPSHOT-green.svg)](https://jitpack.io/com/github/kibotu/Heart-Rate-Ometer/master-SNAPSHOT/javadoc/index.html) [![Build Status](https://travis-ci.org/kibotu/Heart-Rate-Ometer.svg?branch=master)](https://travis-ci.org/kibotu/Heart-Rate-Ometer) [![API](https://img.shields.io/badge/API-15%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=15)  [![Gradle Version](https://img.shields.io/badge/gradle-4.5.1-green.svg)](https://docs.gradle.org/current/release-notes) [![Retrolambda](https://img.shields.io/badge/kotlin-1.2.21-green.svg)](https://kotlinlang.org/) [![Licence](https://img.shields.io/badge/licence-Apache%202-blue.svg)](https://raw.githubusercontent.com/kibotu/Heart-Rate-Ometer/master/LICENSE)\n\n## Introduction\n\nMeasures human heart rate using camera and flash light.\n\n![Screenshot](https://raw.githubusercontent.com/kibotu/Heart-Rate-Ometer/master/screenshot.png) ![Screenshot](https://raw.githubusercontent.com/kibotu/Heart-Rate-Ometer/master/hand_on_phone.png) \n\n## How-it-works\n\n[https://github.com/phishman3579/android-heart-rate-monitor/wiki/How-it-works.](https://github.com/phishman3579/android-heart-rate-monitor/wiki/How-it-works.)\n\n## How to install\n\n```groovy\nrepositories {\n    maven {\n        url \"https://jitpack.io\"\n    }\n}\n\ndependencies {\n    implementation 'com.github.kibotu:Heart-Rate-Ometer:-SNAPSHOT'\n}\n ```\n \n## How to use\n\n0 [Request camera permission](https://github.com/kibotu/Heart-Rate-Ometer/blob/master/app/src/main/kotlin/net/kibotu/heartrateometer/MainActivity.kt#L24-L27)\n\n```xml\nManifest.permission.CAMERA\n```\n\n1 [Add surfaceView to your layout](https://github.com/kibotu/Heart-Rate-Ometer/blob/master/app/src/main/res/layout/activity_main.xml#L18-L22) which is required for the camera preview \n\n```xml\n\u003cSurfaceView\n    android:id=\"@+id/preview\"\n    android:layout_width=\"1dp\"\n    android:layout_height=\"1dp\"\n    android:visibility=\"visible\" /\u003e\n```\n\n2 [Subscribe to the beats per minute stream](https://github.com/kibotu/Heart-Rate-Ometer/blob/master/app/src/main/kotlin/net/kibotu/heartrateometer/MainActivity.kt#L29-L30)\n\n```kotlin\nHeartRateOmeter()\n    .bpmUpdates(context, preview)\n    .subscribe(\n            { bpm: Int -\u003e label.text = \"$bpm bpm\" },\n            Throwable::printStackTrace)\n```\n\n## How to build\n\n```bash\ngraldew clean build\n``` \n\n### CI \n    \n```bash   \ngradlew clean assembleRelease test javadoc\n```\n\n#### Build Requirements\n\n- JDK8\n- Android Build Tools 27.0.2\n- Android SDK 27\n\n### Notes\n\nFollow me on Twitter: [@wolkenschauer](https://twitter.com/wolkenschauer)\n\nLet me know what you think: [jan.rabe@kibotu.net](mailto:jan.rabe@kibotu.net)\n\nContributions welcome!\n\n## Contributors\n\n- [Jan Rabe](jan.rabe@kibotu.net) ported as Kotlin Rx Library: https://github.com/phishman3579/android-heart-rate-monitor written by\n- [Justin Wetherell](https://github.com/phishman3579)\n\n###License\n\u003cpre\u003e\nCopyright 2018 Jan Rabe\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\u003c/pre\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkibotu%2Fheart-rate-ometer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkibotu%2Fheart-rate-ometer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkibotu%2Fheart-rate-ometer/lists"}