{"id":13608675,"url":"https://github.com/bmcreations/scrcast","last_synced_at":"2026-03-06T01:19:18.637Z","repository":{"id":41160805,"uuid":"263672878","full_name":"bmcreations/scrcast","owner":"bmcreations","description":"Drop-in Android Screen Recording Library","archived":false,"fork":false,"pushed_at":"2023-06-26T02:36:29.000Z","size":1680,"stargazers_count":212,"open_issues_count":12,"forks_count":26,"subscribers_count":5,"default_branch":"trunk","last_synced_at":"2024-11-07T14:41:54.693Z","etag":null,"topics":["android","android-library","androidx","coroutines","kotlin","mediarecorder","recording","screencapture","screencast"],"latest_commit_sha":null,"homepage":"https://bmcreations.github.io/scrcast/","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/bmcreations.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-05-13T15:41:39.000Z","updated_at":"2024-06-25T09:31:42.000Z","dependencies_parsed_at":"2024-01-16T23:30:52.651Z","dependency_job_id":"3ab134f9-b507-4bd8-aa75-b3f9178ef617","html_url":"https://github.com/bmcreations/scrcast","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmcreations%2Fscrcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmcreations%2Fscrcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmcreations%2Fscrcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmcreations%2Fscrcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmcreations","download_url":"https://codeload.github.com/bmcreations/scrcast/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248605273,"owners_count":21132139,"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","android-library","androidx","coroutines","kotlin","mediarecorder","recording","screencapture","screencast"],"created_at":"2024-08-01T19:01:29.123Z","updated_at":"2026-03-06T01:19:18.604Z","avatar_url":"https://github.com/bmcreations.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"![scrcast](readme-header.png)\n\n![Android CI](https://github.com/bmcreations/scrcast/workflows/Android%20CI/badge.svg)\n![Latest Release](https://img.shields.io/github/v/release/bmcreations/scrcast)\n\nA fully, featured replacement for screen recording needs backed by Kotlin with the power of Coroutines and Android Jetpack. scrcast is:\n\n* \u003cb\u003eEasy to use\u003c/b\u003e: scrcast's API leverages Kotlin languages features for simplicity, ease of use, and little-to-no boilerplate. Simply configure and `record()`\n* \u003cb\u003eModern\u003c/b\u003e: scrcast is Kotlin-first and uses modern libraries including Coroutines and Android Jetpack.\n\n## Download\n\nscrcast is available on `mavenCentral()`.\n\n`implementation (\"dev.bmcreations:scrcast:$version\")`\n\n## Quick Start\n\nscrcast provides a variety of configuration options for capturing, storing, and providing user interactions with your screen recordings.\n\n### Configuring\n\n```kotlin\nval recorder = ScrCast.use(activity)\nrecorder.apply {\n    // configure options via DSL\n    options {\n        video {\n            maxLengthSecs = 360\n        }\n        storage {\n            directoryName = \"scrcast-sample\"\n        }\n        notification {\n            title = \"Super cool library\"\n            description = \"shh session in progress\"\n            icon = resources.getDrawable(R.drawable.ic_camcorder, null).toBitmap()\n            channel {\n                id = \"1337\"\n                name = \"Recording Service\"\n            }\n            showStop = true\n            showPause = true\n            showTimer = true\n        }\n        moveTaskToBack = false\n        startDelayMs = 5_000\n    }\n}\n```\n\nYou can find [full configuration details and documentation here](https://bmcreations.github.io/scrcast/).\n\n### State\n\ninteraction with `MediaRecorder`is abstracted in a easy to use and manage interface, via explict state-changing accessors.\n\n#### Start\n\n```kotlin\nrecorder.record()\n```\n\n#### Stop\n\n```kotlin\nrecorder.stopRecording()\n```\n\n#### Pause\n\n```kotlin\nrecorder.pause()\n```\n\n#### Resume\n\n```kotlin\nrecorder.resume()\n```\n\n### Callbacks\n\nState changes are emitted via `RecordingCallbacks` as a single interface or via a discrete lambda `onRecordingStateChange`\n\nCompleted recording output file is also emittable in `RecordingCallbacks` via\n\n ```kotlin\n fun onRecordingFinished(file: File)\n ```\n\n## Requirements\n\n* AndroidX\n* `minSdkVersion` 23+\n* `compileSdkVersion` 28+\n* Java 8+\n\nGradle (`.gradle`)\n\n```kotlin\nandroid {\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n}\n\ntasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {\n    kotlinOptions {\n        jvmTarget = \"1.8\"\n    }\n}\n```\n\nGradle Kotlin DSL (`.gradle.kts`)\n\n```kotlin\nandroid {\n    compileOptions {\n        sourceCompatibility = JavaVersion.VERSION_1_8\n        targetCompatibility = JavaVersion.VERSION_1_8\n    }\n}\n\ntasks.withType\u003cKotlinCompile\u003e {\n    kotlinOptions {\n        jvmTarget = \"1.8\"\n    }\n}\n```\n\n## License\n\n```text\nCopyright 2020 bmcreations\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   https://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```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmcreations%2Fscrcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmcreations%2Fscrcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmcreations%2Fscrcast/lists"}