{"id":13837760,"url":"https://github.com/roc-streaming/roc-droid","last_synced_at":"2025-07-10T19:30:37.122Z","repository":{"id":43894064,"uuid":"268253713","full_name":"roc-streaming/roc-droid","owner":"roc-streaming","description":"Roc for Android!","archived":false,"fork":false,"pushed_at":"2025-06-16T04:34:07.000Z","size":8647,"stargazers_count":113,"open_issues_count":24,"forks_count":24,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-18T15:25:42.234Z","etag":null,"topics":["android","audio","networking","real-time","streaming"],"latest_commit_sha":null,"homepage":"https://roc-streaming.org","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roc-streaming.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"roc-streaming","liberapay":"roc-streaming"}},"created_at":"2020-05-31T10:07:04.000Z","updated_at":"2025-06-07T15:14:17.000Z","dependencies_parsed_at":"2023-09-24T03:47:17.569Z","dependency_job_id":"a06813a1-178c-42a7-beb0-0cd7f0933c76","html_url":"https://github.com/roc-streaming/roc-droid","commit_stats":{"total_commits":72,"total_committers":13,"mean_commits":5.538461538461538,"dds":0.6527777777777778,"last_synced_commit":"6d84136012412eeaa2281d5ae524a8ecc4ce3276"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/roc-streaming/roc-droid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roc-streaming%2Froc-droid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roc-streaming%2Froc-droid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roc-streaming%2Froc-droid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roc-streaming%2Froc-droid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roc-streaming","download_url":"https://codeload.github.com/roc-streaming/roc-droid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roc-streaming%2Froc-droid/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260793408,"owners_count":23064035,"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","audio","networking","real-time","streaming"],"created_at":"2024-08-04T15:01:24.275Z","updated_at":"2025-07-10T19:30:37.071Z","avatar_url":"https://github.com/roc-streaming.png","language":"Kotlin","funding_links":["https://opencollective.com/roc-streaming","https://liberapay.com/roc-streaming"],"categories":["Kotlin"],"sub_categories":[],"readme":"# Roc for Android!\n\n[![Build](https://github.com/roc-streaming/roc-droid/actions/workflows/build.yaml/badge.svg)](https://github.com/roc-streaming/roc-droid/actions/workflows/build.yaml) [![GitHub release](https://img.shields.io/github/release/roc-streaming/roc-droid.svg)](https://github.com/roc-streaming/roc-droid/releases) [![Matrix chat](https://matrix.to/img/matrix-badge.svg)](https://app.element.io/#/room/#roc-streaming:matrix.org)\n\nAndroid app implementing Roc sender and receiver. **Work in progress!**\n\nFeatures:\n\n* **receive** sound from remote Roc-compatible sender and **play** to local audio device\n* **capture** sound from apps or microphone and **send** to remote Roc-compatible receiver\n\nDownload\n--------\n\n* Download APK from [latest release](https://github.com/roc-streaming/roc-droid/releases/latest)\n\n* Download from F-Droid or IzzyOnDroid:\n\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n     alt=\"Get it on F-Droid\"\n     height=\"80\"\u003e](https://f-droid.org/packages/org.rocstreaming.rocdroid/)\n[\u003cimg src=\"https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png\"\n     alt=\"Get it on F-Droid\"\n     height=\"80\"\u003e](https://apt.izzysoft.de/fdroid/index/apk/org.rocstreaming.rocdroid)\n\nScreenshot\n----------\n\n\u003cimg src=\"https://raw.githubusercontent.com/roc-streaming/roc-droid/master/screenshot.webp\" data-canonical-src=\"https://raw.githubusercontent.com/roc-streaming/roc-droid/master/screenshot.webp\" width=\"300\"/\u003e\n\nFeatures\n--------\n\nKey features of [Roc Toolkit](https://github.com/roc-streaming/roc-toolkit) streaming engine, used by Roc Droid:\n\n* real-time streaming with guaranteed latency;\n* robust work on unreliable networks like Wi-Fi, due to use of Forward Erasure Correction codes;\n* CD-quality audio;\n* multiple profiles for different CPU and latency requirements;\n* relying on open, standard protocols, like RTP and FECFRAME;\n* interoperability with both Roc and third-party software.\n\nCompatible senders and receivers include:\n\n* [cross-platform command-line tools](https://roc-streaming.org/toolkit/docs/tools/command_line_tools.html)\n* [modules for sound servers](https://roc-streaming.org/toolkit/docs/tools/sound_server_modules.html) (PulseAudio, PipeWire, macOS CoreAudio)\n* [C library](https://roc-streaming.org/toolkit/docs/api.html) and [bindings for other languages](https://roc-streaming.org/toolkit/docs/api/bindings.html)\n\n## Donations\n\nIf you would like to support the project financially, please refer to [this page](https://roc-streaming.org/toolkit/docs/about_project/sponsors.html). This project is developed by volunteers in their free time, and your donations will help to spend more time on the project and keep it growing.\n\nThank you!\n\n\u003ca href=\"https://liberapay.com/roc-streaming\"\u003e\u003cimg alt=\"Donate using Liberapay\" src=\"https://liberapay.com/assets/widgets/donate.svg\"\u003e\u003c/a\u003e\n\nBuilding\n--------\n\nThe app uses [Java bindings for Roc Toolkit](https://github.com/roc-streaming/roc-java). You don't need to install them manually; gradle will automatically download AAR from maven central, which contains both libroc and Java bindings built for all Android ABIs.\n\nThe easiest way to build the app is using Android Studio.\n\nAlternatively, you can build and deploy APK from command-line.\n\nBuild:\n\n```\n./gradlew build\n```\n\nInstall to device:\n\n```\nadb install app/build/outputs/apk/debug/roc-droid-*.apk\n```\n\nDevelopment\n-----------\n\nTo check code style use:\n\n```\n./gradlew spotlessCheck\n```\n\nTo apply code style use:\n\n```\n./gradlew spotlessApply\n```\n\nTo check consistency of version name and code:\n\n```\n./gradlew checkVersion\n```\n\nSigning\n-------\n\nKeystore with certificates was generated using this command:\n\n```\nkeytool -genkey -v -keystore roc-droid.jks -alias apk -keyalg RSA -keysize 2048 -validity 10000\n```\n\nThen it was encoded to base64:\n\n```\nbase64 roc-droid.jks\n```\n\nThen the following secrets were added to the repo:\n\n* `SIGNING_STORE_BASE64` - base64-encoded keystore (`roc-droid.jks`)\n* `SIGNING_STORE_PASSWORD` - keystore password\n* `SIGNING_KEY_ALIAS` - key alias (`apk`)\n* `SIGNING_KEY_PASSWORD` - key password (same as keystore password)\n\nGitHub actions decode `SIGNING_STORE_BASE64` into a temporary `.jks` file and set `SIGNING_*` environment variables with the name of the file and credentials.\n\nThen the following command is run:\n\n```\n./gradlew assembleRelease\n```\n\nIt reads credentials from the environment variables and signs release APK using them.\n\nRelease\n-------\n\nTo release a new version:\n\n* Create git tag\n\n   ```\n   ./tag.py --push \u003cremote\u003e \u003cversion\u003e\n   ```\n\n  e.g.\n\n   ```\n   ./tag.py --push origin 1.2.3\n   ```\n\n  Or use **tag.py** without **--push** to only create a tag locally, and then push it manually.\n\n* Wait until \"Release\" CI job completes and creates GitHub release draft.\n\n* Edit GitHub release created by CI and publish it.\n\nAuthors\n-------\n\nSee [here](https://github.com/roc-streaming/roc-droid/graphs/contributors).\n\nLicense\n-------\n\n[MPL-2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froc-streaming%2Froc-droid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froc-streaming%2Froc-droid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froc-streaming%2Froc-droid/lists"}