{"id":23183549,"url":"https://github.com/srgssr/pillarbox-android","last_synced_at":"2025-08-18T15:31:53.274Z","repository":{"id":58151253,"uuid":"519157987","full_name":"SRGSSR/pillarbox-android","owner":"SRGSSR","description":"The modern SRG SSR Pillarbox player targeting Android platforms","archived":false,"fork":false,"pushed_at":"2024-10-29T09:44:13.000Z","size":3691,"stargazers_count":13,"open_issues_count":19,"forks_count":1,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-10-29T09:50:34.206Z","etag":null,"topics":["android-library"],"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/SRGSSR.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/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}},"created_at":"2022-07-29T09:32:07.000Z","updated_at":"2024-10-29T07:55:28.000Z","dependencies_parsed_at":"2023-12-20T13:08:30.500Z","dependency_job_id":"8b59b889-8506-4b45-ae83-9c334a3a7a0a","html_url":"https://github.com/SRGSSR/pillarbox-android","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fpillarbox-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fpillarbox-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fpillarbox-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fpillarbox-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SRGSSR","download_url":"https://codeload.github.com/SRGSSR/pillarbox-android/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230245324,"owners_count":18196134,"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"],"created_at":"2024-12-18T09:13:34.493Z","updated_at":"2025-08-18T15:31:53.240Z","avatar_url":"https://github.com/SRGSSR.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Pillarbox logo](https://github.com/SRGSSR/pillarbox-apple/blob/main/docs/README-images/logo.jpg)](https://github.com/SRGSSR/pillarbox-android)\n\n# Overview\n\n[![Last release](https://img.shields.io/github/v/release/SRGSSR/pillarbox-android?label=Release)](https://github.com/SRGSSR/pillarbox-android/releases)\n[![Android min SDK](https://img.shields.io/badge/Android-24%2B-34A853)](https://github.com/SRGSSR/pillarbox-android)\n[![Build status](https://img.shields.io/github/actions/workflow/status/SRGSSR/pillarbox-android/quality.yml?label=Build)](https://github.com/SRGSSR/pillarbox-android/actions/workflows/quality.yml)\n[![License](https://img.shields.io/github/license/SRGSSR/pillarbox-android?label=License)](https://github.com/SRGSSR/pillarbox-android/blob/main/LICENSE)\n\nPillarbox is the modern SRG SSR multimedia player ecosystem, built on top of [AndroidX Media3](https://developer.android.com/media/media3).\nPillarbox has been designed with robustness, flexibility, and efficiency in mind, with full customization of:\n- Metadata and asset URL retrieval.\n- Asset resource loading, including support for Widevine and PlayReady.\n- Analytics integration.\n- User interface layout, in either [Compose](https://developer.android.com/develop/ui/compose/layouts) or [XML `View`s](https://developer.android.com/develop/ui/views/layout/declaring-layout). Helpers are available in the `pillarbox-ui` module.\n\nIts robust player provides all essential playback features you might expect:\n- Audio and video (including 360° videos) playback.\n- Support for on-demand and live streams, with and without DVR.\n- Integration with the system playback user experience.\n- Integration with Android's `MediaSession` and Android Auto.\n- Playlist management (navigation to previous/next item, shuffle, repeat, ...).\n- Support for alternative audio tracks, audio description, subtitles, ...\n- Multiple instances support.\n- Picture-in-picture support.\n- Playback speed controls.\n\nIn addition, Pillarbox provides support for SRG SSR content by including the `pillarbox-core-business` module (see \"Getting started\" below).\n\n\u003e [!TIP]\n\u003e Pillarbox is also available on [Apple platforms](https://github.com/SRGSSR/pillarbox-apple/) and the [Web](https://github.com/SRGSSR/pillarbox-web/).\n\n## Demo\n\nYou can easily get your hands on Pillarbox by running one of the demo applications available in this project: [pillarbox-demo](../pillarbox-demo) for phone/tablet, or [pillarbox-demo-tv](../pillarbox-demo-tv) for TV.\n\nEach application allows you to:\n- Try Pillarbox with various media types and sources.\n- See how Pillarbox answers various use cases (`pillarbox-demo` only).\n- Access a wide range of SRG SSR content.\n- Search for specific SRG SSR content.\n\n## Getting started\n\n### Add the GitHub Packages repository\n\nPillarbox is deployed to [GitHub Packages](https://github.com/orgs/SRGSSR/packages?repo_name=pillarbox-android). So you need to add the following repository in your Gradle configuration:\n\n```kotlin\n// If you declare your repositories in the `settings.gradle(.kts)` file\nrepositories {\n    maven(\"https://maven.pkg.github.com/SRGSSR/pillarbox-android\") {\n        credentials {\n            username = providers.gradleProperty(\"gpr.user\").get()\n            password = providers.gradleProperty(\"gpr.key\").get()\n        }\n    }\n}\n\n// If you declare your repositories in the root `build.gradle(.kts)` file\nrepositories {\n    maven(\"https://maven.pkg.github.com/SRGSSR/pillarbox-android\") {\n        credentials {\n            username = project.findProperty(\"gpr.user\")?.toString()\n            password = project.findProperty(\"gpr.key\")?.toString()\n        }\n    }\n}\n```\n\n#### Create a Personal access token\n\n1. Go to [Settings \u003e Developer Settings \u003e Personal access tokens](https://github.com/settings/tokens).\n2. Click on `Generate new token (classic)`.\n3. Provide a note for the token, and change the expiration (if needed).\n4. Make sure that at least the `read:packages` scope is selected.\n5. Click on `Generate token`.\n6. if you are in SRG SSR, click on `Configure SSO`, then `Authorize` the token.  \n7. Copy your Personal access token.\n8. In your `~/.gradle/gradle.properties` file (create it if needed), add the following properties:\n```properties\ngpr.user=\u003cyour_GitHub_username\u003e\ngpr.key=\u003cyour_GitHub_personal_access_token\u003e\n```\n\u003e [!TIP]\n\u003e You can check the [GitHub documentation](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#using-a-published-package) for more information.\n\n\n### Add the SRG SSR Maven repository\n\nPillarbox is also deployed to the [SRG SSR Maven repository](https://nxrm.rts.ch/repository/maven-srgssr/). If you don't want to use the GitHub Packages repository, add the following to your Gradle configuration:\n\n\u003e [!NOTE]\n\u003e You only need to add either the GitHub Packages repository or the SRG SSR repository, not both.\n\n```kotlin\n// If you declare your repositories in the `settings.gradle(.kts)` file\nrepositories {\n    maven(\"https://nxrm.rts.ch/repository/maven-srgssr/\") {\n        credentials {\n            username = providers.gradleProperty(\"srg_maven_user\").get()\n            password = providers.gradleProperty(\"srg_maven_password\").get()\n        }\n    }\n}\n\n// If you declare your repositories in the root `build.gradle(.kts)` file\nrepositories {\n    maven(\"https://nxrm.rts.ch/repository/maven-srgssr/\") {\n        credentials {\n            username = project.findProperty(\"srg_maven_user\")?.toString()\n            password = project.findProperty(\"srg_maven_password\")?.toString()\n        }\n    }\n}\n```\n\nThe necessary credentials can be found in the SRG SSR Bitwarden.\n\n### Add the Pillarbox dependencies\n\nIn your module's `build.gradle`/`build.gradle.kts` file, add the following dependencies, based on your needs:\n\n```kotlin\n// Player specific features\nimplementation(\"ch.srgssr.pillarbox:pillarbox-player:\u003cpillarbox_version\u003e\")\n\n// Library to handle Cast integration\nimplementation(\"ch.srgssr.pillarbox:pillarbox-cast:\u003cpillarbox_version\u003e\")\n\n// Library to handle SRG SSR content through media URNs\nimplementation(\"ch.srgssr.pillarbox:pillarbox-core-business:\u003cpillarbox_version\u003e\")\n\n// Library to handle SRG SSR Cast receiver with SRG SSR content\nimplementation(\"ch.srgssr.pillarbox:pillarbox-core-business-cast:\u003cpillarbox_version\u003e\")\n\n// Library to display the video surface\nimplementation(\"ch.srgssr.pillarbox:pillarbox-ui:\u003cpillarbox_version\u003e\") \n```\n\nThe latest stable version is [![Last release](https://img.shields.io/github/v/release/SRGSSR/pillarbox-android?label=)](https://github.com/SRGSSR/pillarbox-android/releases/latest)\n\n### Enable Java 17\n\nIf not already enabled, you also need to turn on Java 17 support in every `build.gradle`/`build.gradle.kts` files using Pillarbox. To do so, add/update the following to/in the `android` section:\n\n```kotlin\ncompileOptions {\n    sourceCompatibility = JavaVersion.VERSION_17\n    targetCompatibility = JavaVersion.VERSION_17\n}\n\nkotlin {\n    compilerOptions {\n        jvmTarget = JvmTarget.JVM_17\n    }\n}\n```\n\n### Integrate Pillarbox\n\nTo start using Pillarbox in your project, you can check each module's documentation:\n- [`pillarbox-analytics`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-analytics/docs/README.md)\n- [`pillarbox-cast`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-cast/docs/README.md)\n- [`pillarbox-core-business`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-core-business/docs/README.md)\n- [`pillarbox-core-business-cast`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-core-business-cast/docs/README.md)\n- [`pillarbox-player`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-player/docs/README.md)\n- [`pillarbox-ui`](https://github.com/SRGSSR/pillarbox-android/blob/main/pillarbox-ui/docs/README.md)\n\n## Contributing\n\nIf you want to contribute to the project have a look at our [contributing guide](CONTRIBUTING.md).\n\n## License\n\nSee the [LICENSE](../LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrgssr%2Fpillarbox-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrgssr%2Fpillarbox-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrgssr%2Fpillarbox-android/lists"}