A photo slideshow and screen saver app for Android phones and tablets, built with Material 3 Expressive to feel at home alongside Google's own Pixel apps. No backend, no analytics — the only sign-in is an optional Google Photos connection.
- Flexible photo sources — pick individual photos with the Android Photo Picker, whole folders or albums through the Storage Access Framework (works with Google Drive, Dropbox, OneDrive, and any other documents provider), or Google Photos through the Google Photos Picker API.
- Slideshows — full screen, with crossfade or Ken Burns pan & zoom, configurable slide duration, shuffle, optional file-name captions, and an adjustable dim overlay.
- Clock & date overlay — optional, with adjustable position and opacity.
- Background music — bundled royalty-free tracks or any audio file on your device, with adjustable volume. Pauses automatically for calls and other apps.
- Android screen saver — start a slideshow yourself, or enable Photo Slideshow as your Screen Saver (Daydream) to start it automatically while charging, docked, or both.
- Material 3 Expressive design — light, dark, and system themes, dynamic color (Material You), 16+ curated color themes, adjustable contrast, and Pure Black / Absolute Black modes.
- Languages — English, Spanish, French, Hindi, and Portuguese.
- Light on battery — photo changes and music pause when the slideshow isn't on screen, and Ken Burns switches to a crossfade while Battery Saver is on.
Download the APK from the latest release and install it on your device.
Requires Android 8.0 (API 26) or newer.
Photo Slideshow has no backend, no analytics, and no crash-reporting SDKs. Local photo access is limited to exactly what you choose through the Photo Picker or the Storage Access Framework, so no broad storage permission is needed.
Google Photos is entirely opt-in and only shares the photos you select in each picker session. The only network traffic is directly between your device and Google's own sign-in and Photos Picker services, and only your preferences are included in Android backups. See the in-app Privacy statement (Settings → About) for the full breakdown.
- Android Studio (Narwhal or newer)
- JDK 17+ (bundled with Android Studio)
- An Android device or emulator running Android 8.0 (API 26) or newer
git clone https://github.com/wwwescape/photo-slideshow.git
cd photo-slideshow
./gradlew installDebugOr open the project in Android Studio and run the app configuration.
Google Photos needs a Google Cloud OAuth client before it works — see the setup steps and scope
in app/src/main/java/com/wwwescape/photoslideshow/data/googlephotos/GooglePhotosOAuthConfig.kt.
./gradlew lint testDebugUnitTestBump versionCode and versionName in app/build.gradle.kts, commit, then:
git tag v0.1.0
git push origin v0.1.0The tag push builds a signed release APK and AAB and attaches them to a new GitHub Release (see
.github/workflows/release.yml). It needs the KEYSTORE_BASE64, KEYSTORE_PASSWORD,
KEY_ALIAS, and KEY_PASSWORD repository secrets, which are kept locally in the gitignored
keystore.properties.
app/ Kotlin, Jetpack Compose (Material 3), single module
data/ Settings (DataStore), photo sources, and the Google Photos OAuth/Picker client
slideshow/ Slideshow engine (photo order, auto-advance), shared by the app and the screen saver
dream/ DreamService that runs the slideshow as a screen saver
ui/ Compose screens, navigation, and theme
design/ Source logo and Play Store icon assets
assets/ README assets
GPL-3.0 — see LICENSE.
If you find Photo Slideshow useful, consider buying me a coffee: