{"id":18756802,"url":"https://github.com/kike-canaries/canairio_android","last_synced_at":"2025-10-06T21:56:25.022Z","repository":{"id":43022168,"uuid":"135760454","full_name":"kike-canaries/canairio_android","owner":"kike-canaries","description":"Android app of CanAirIO project. This is configuration manager, geo-location tagging and front end of CanAirIO firmware via Bluetooth LE.","archived":false,"fork":false,"pushed_at":"2025-08-08T21:02:24.000Z","size":5737,"stargazers_count":16,"open_issues_count":20,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-08-08T22:15:28.619Z","etag":null,"topics":["air-quality","android","ble","bluetooth-low-energy","esp32","firmware"],"latest_commit_sha":null,"homepage":"https://canair.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kike-canaries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-01T20:27:27.000Z","updated_at":"2025-02-28T19:50:42.000Z","dependencies_parsed_at":"2023-09-21T20:05:17.287Z","dependency_job_id":"997483ee-79cb-4d0c-953c-b0649b585cc7","html_url":"https://github.com/kike-canaries/canairio_android","commit_stats":{"total_commits":696,"total_committers":5,"mean_commits":139.2,"dds":"0.028735632183908066","last_synced_commit":"3d18f1f182c4a7fb19677cc366c0559fa15a3955"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/kike-canaries/canairio_android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kike-canaries%2Fcanairio_android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kike-canaries%2Fcanairio_android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kike-canaries%2Fcanairio_android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kike-canaries%2Fcanairio_android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kike-canaries","download_url":"https://codeload.github.com/kike-canaries/canairio_android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kike-canaries%2Fcanairio_android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278686633,"owners_count":26028325,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["air-quality","android","ble","bluetooth-low-energy","esp32","firmware"],"created_at":"2024-11-07T17:38:07.980Z","updated_at":"2025-10-06T21:56:24.992Z","avatar_url":"https://github.com/kike-canaries.png","language":"Java","funding_links":["https://liberapay.com/CanAirIO","https://github.com/sponsors/hpsaturn","https://www.buymeacoffee.com/hpsaturn","https://github.com/sponsors/hpsaturn?frequency=one-time"],"categories":[],"sub_categories":[],"readme":"\n[![Actions Status](https://github.com/kike-canaries/canairio_android/workflows/Android%20CI/badge.svg)](https://github.com/kike-canaries/android-hpma115s0/actions) ![ViewCount](https://views.whatilearened.today/views/github/kike-canaries/canairio_android.svg) [![Liberapay Status](http://img.shields.io/liberapay/receives/CanAirIO.svg?logo=liberapay)](https://liberapay.com/CanAirIO) [![Telegram Group](https://img.shields.io/endpoint?color=neon\u0026style=flat-square\u0026url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fcanairio)](https://t.me/canairio) \n\n[![CanAirIO Building Guides](images/main.jpg)](https://canair.io/docs/)\n\n# CanAirIO Air quality Reporter\n\n[CanAirIO](https://canair.io) is a citizen science initiative for air quality tracking, visualization and dissemination by using PM2.5 particulate material sensors paired with your smartphone via bluetooth.\n\nThis code is for [CanAir.IO](https://canair.io) Android app that using a [DIY device](https://github.com/kike-canaries/canairio_firmware#canairio-firmware) that handle a pollution sensor (Honeywell, Sensirion, Plantower, Panasonic) or others air quality sensors.\n\n\u003ctable\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\n\t\t\tDon't forget to star ⭐ this repository\n\t\t\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n\n\n# Installation\n\n\u003ca href=\"https://play.google.com/store/apps/details?id=hpsaturn.pollutionreporter\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kike-canaries/android-hpma115s0/master/assets/googleplay/gplayicon.png\" align=\"right\" width=\"128\" \u003e\u003c/a\u003e\n\nYou can install it from the [release section](https://github.com/kike-canaries/canairio_android/releases) downloading the last signed apk or installing from [GooglePlay](https://play.google.com/store/apps/details?id=hpsaturn.pollutionreporter)  \n\n\n# CanAirIO Device\n\nFor test and use the CanAirIO app, is recommended have a CanAirIO device, you can have one with any ESP32 board without any sensor or any wire solder if you want, because CanAirIO has out of the box PAX Counter detector feature, for counts the people around you. For that you only need load our firmware via a easy web tool:\n\n[![video_2021-11-13_23-36-10](https://user-images.githubusercontent.com/423856/141661066-0fafcaa9-98b4-419b-b1e7-4371f3cb99b8.gif)](https://canair.io/installer.html)\n\n# Usage\n\nFor now you need any Android device with Bluetooth 4 or above. You can download the CanAirIO app from [GooglePlay](https://play.google.com/store/apps/details?id=hpsaturn.pollutionreporter), keep in mind that it is in continuos development then please any feedback, report errors, or any thing please let us know it via our [contact form](http://canair.io/#three) or on our [Telegram chat](https://t.me/canairio)\n\nYou have **two configuration options or modes** of your CanAirIO device from the app:\n\n## Mobile Station Mode\n\nThis mode allows you to record tracks on your device or publish it to the cloud (share), please follow the next steps:\n\n- [X] Turn on your Bluetooth\n- [X] Allow location and storage permissions\n- [X] Scan your device and paring it (connect)\n- [X] Record a mobile track on your device\n- [X] Share\n\n### Tips\n\n- If you aren't recording, you able to exit of your app and the Bluetooth will be over, you don't need unpair the device.\n- If you are recording a track, you can put the app in background and using other apps. But not forget stop the recording because it can drain your battery\n- In some Android versions, your need the background permission too. \n\n\n![CanAirIO App](/images/collage_app_mobile_general.jpg)\n(Connection to CanAirIO device, record a air quality track and share)\n\n\n#### Mobile Map\n\nWe are developing a new mobile map, you can see the current tracks that the people share here:  \n\n\u003ca href=\"https://mobile.canair.io\" target=\"_blank\"\u003e\u003cimg src=\"images/canairio_mobile_map.jpg\" height=\"300\" align=\"center\" \u003e\u003c/a\u003e\n\n---\n\n## Fixed Station Mode\n\n\u003ca href=\"https://user-images.githubusercontent.com/423856/127383369-e57628a8-2a0b-44de-a29a-b8343a62f731.jpg\" target=\"_blank\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/423856/127383369-e57628a8-2a0b-44de-a29a-b8343a62f731.jpg\" height=\"300\" align=\"center\" \u003e\u003c/a\u003e\n\n\u003ca href=\"https://user-images.githubusercontent.com/423856/141691438-214808d5-d367-4a75-ad49-a1e7978b4269.gif\" target=\"_blank\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/423856/141691438-214808d5-d367-4a75-ad49-a1e7978b4269.gif\" height=\"340\" align=\"right\" \u003e\u003c/a\u003e\n\nAlso, you can connect your CanAirIO device to the WiFi and leave this like a fixed station. In this mode you only need the Android app only for setup the initial settings, after that the device could be publish data without the phone using the WiFi. For this please download the [CanAirIO app](https://bit.ly/3HjDJqP) and setup the WiFi:\n\n### WiFi Setup\n\n  - Open the app and enter on settings section\n  - Choose the **Wifi Name** and set the **Password** (if it has) \n  - Save the credentials with the switch.\n  - Wait for `connected` status in the summary switch  \n\n\u003ca href=\"https://user-images.githubusercontent.com/423856/141445500-ab6d7c6e-4a19-43fc-967e-c33ae60a073d.gif\" target=\"_blank\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/423856/141445500-ab6d7c6e-4a19-43fc-967e-c33ae60a073d.gif\" height=\"250\" align=\"center\" \u003e\u003c/a\u003e\n\n### Publication\n\nAfter WiFi is ready, please follow the next steps for publish your fixed station:\n\n  - save Geohash location (turn on the switch for save, it will go to off after some seconds)\n  - enable the publication switch\n  - wait for some minutes, the device should be show data icon some times\n  - your station should be in our [Global Map](canair.io/stations) with the special ID showed in the last item of settings \n\n### CanAirIO fixed station (fast setup guide)\n\n[![CanAirIO CO2 easy Setup](images/anaire_youtube_preview.jpg)](https://youtu.be/29wfMPZXvps) \n\n# CanAirIO Documentation\n\nWe have a [documentation portal](https://canair.io/docs/app_usage.html#overview) with full information about the device and the app usage.\n\n[![CanAirIO docs](images/canairio_docs_preview.jpg)](https://canair.io/docs/app_usage.html#overview)\n \n# Supporting the project\n\nIf you want to contribute to the code or documentation, consider posting a bug report, feature request or a pull request.\n\nWhen creating a pull request, we recommend that you do the following:\n\n- Clone the repository\n- Create a new branch for your fix or feature. For example, git checkout -b fix/my-fix or git checkout -b feat/my-feature.\n- [Build and test your apk](#building-from-source-code), and run to any clang formatter if it is a code, for example using the `vscode` formatter. We are using Google style. More info [here](https://clang.llvm.org/docs/ClangFormatStyleOptions.html)\n- Document the PR description or code will be great\n- Target your pull request to be merged with `devel` branch\n\nAlso you can consider make a donation, be a patron or buy a device:  \n\n\u003ca href=\"https://raw.githubusercontent.com/kike-canaries/canairio_firmware/master/images/ethereum_donation_address.png\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/kike-canaries/canairio_firmware/master/images/ethereum_donation_address.png\" align=\"right\" width=\"180\" \u003e\u003c/a\u003e\n\n- Via **Ethereum**:\n- 0x1779cD3b85b6D8Cf1A5886B2CF5C53a0E072C108\n- Be a patron: [Github Sponsors](https://github.com/sponsors/hpsaturn), [LiberaPay](https://liberapay.com/CanAirIO)\n- **Buy a device**: [CanAirIO Bike in Tindie](https://www.tindie.com/products/hpsaturn/canairio-bike/)\n- Inviting us **a coffee**: [buymeacoffee](https://www.buymeacoffee.com/hpsaturn), [Sponsors](https://github.com/sponsors/hpsaturn?frequency=one-time) \n\n**NOTE:**  Supporting our Citizen Science Initiative many people be able to fight for air quality rights in many countries with this kind of problems. More info in [CanAir.IO](https://canair.io)\n\nFor our supporters, patrons or donors, we will send the files for our coming version:\n\n## CanAirIO CO2 and CanAirIO Mini box\n\n![CanAirIO CO2 and Mini](https://canair.io/docs/images/canairio_bike_co2_mini.jpg)\n\n## TODO\n\n- [X] BLE scanning and connecting \n- [X] Receive data via BLE notification\n- [X] Basic chart for PM 2.5 data\n- [X] BLE persist connection on background service\n- [X] List recorded tracks fragment\n- [X] Firebase connection for publish reports\n- [X] Open Street map fragment\n- [x] Export data to json on external storage (SD)\n- [x] Osmdroid routes (for line or dinamic points)\n- [ ] Add other air quality APIs to map (AQICN ie)\n- [ ] Flutter migration for have to iOS app\n- [ ] Osmdroid clusters (for static points)\n\n---\n\n# Building from source code\n\n## Dependencies\n\n- Android SDK\n- CMake\n- Android Studio (optional)\n\n## Requirements\n\nPlease first clone the project with all submodules:\n\n```bash\ngit clone --recursive https://github.com/kike-canaries/canairio_android.git\n```\n\n### Firebase\n\nThis application uses a Firebase Database instance to store mobile air quality reports, \n\nFor local development, you will need to create a database in the [Firebase Console](https://console.firebase.google.com/) using `hpsaturn.pollutionreporter` as the application identifier and retrieve a `google-services.json` file. See instructions [here](https://support.google.com/firebase/answer/7015592?hl=en).\n\nAfter that copy this file into the project:\n\n```bash\ncd canairio_android \u0026\u0026 cp ~/google-services.json app/\n```\n\n### Aqicn API key (optional)\n\nPlease put your Aqicn API key in `app/src/main/res/values/api_aqicn.xml` or create a fake file like with:\n\n``` xml\n\u003cresources\u003e\n    \u003cstring name=\"api_aqicn_key\"\u003e7cbbbb864b9c0755b8xxxxyyy\u003c/string\u003e\n\u003c/resources\u003e\n```\n\n## Compiling\n\n```bash\n./gradlew assembleDebug\n```\n\n## App apk installation \n\n```bash\n./gradlew installDebug\n```\n\n# Credits\n\n\u003cdiv\u003eIcons made by \u003ca href=\"https://www.flaticon.com/authors/prosymbols\" title=\"Prosymbols\"\u003eProsymbols\u003c/a\u003e from \u003ca href=\"https://www.flaticon.com/\" title=\"Flaticon\"\u003ewww.flaticon.com\u003c/a\u003e is licensed by \u003ca href=\"http://creativecommons.org/licenses/by/3.0/\" title=\"Creative Commons BY 3.0\" target=\"_blank\"\u003eCC 3.0 BY\u003c/a\u003e\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkike-canaries%2Fcanairio_android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkike-canaries%2Fcanairio_android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkike-canaries%2Fcanairio_android/lists"}