An Android application that allows users to listen to live Twitch streams as audio-only, perfect for multitasking or saving bandwidth. Supports both authenticated users (with followed channels) and guest browsing.
- 🎵 Audio-only streaming - Listen to Twitch streams without video
- 👤 Dual-mode support - Use with or without Twitch login
- 📱 Modern UI - Material Design 3 with dark/light theme support
- 🚗 Android Auto - Full Android Auto compatibility for in-car listening
- 🔄 Infinite scroll - Seamless pagination across all lists
- 🔍 Search - Find live channels (authenticated users)
- 🎮 Browse categories - Explore streams by game/category
- Follow live channels you're subscribed to
- Access your followed streamers
- Search for specific channels
- Full Twitch OAuth integration
- Browse top categories/games
- View live channels by category
- Explore top live streams
- No login required
- HLS Direct Streaming - Direct connection to Twitch servers
- Proxy Servers - Alternative streaming via proxy (EU/Asia regions)
- Automatic fallback - Switches to proxy if HLS fails
- Audio-only optimization - Extracts audio stream for lower bandwidth
- Mini player with now playing controls
- Pull-to-refresh on all lists
- Live viewer counts and uptime display
- Streamer profile images
- Stream thumbnails
- Material Design card-based layout
If you installed this app via APK / debug build, Android Auto may hide it unless you enable Android Auto Developer Mode and Unknown sources.
Play Store builds do not require this (not published at the moment).
- Open Android Auto on your phone
- Scroll down → tap Version 10 times
- Open Developer settings (⋮ menu)
- Enable Unknown sources
- Reconnect your phone to the car
- Open Android Auto on your phone
- Scroll to the bottom of the settings page
- Tap Version 10 times
- You should see: “Developer mode enabled”
Screenshot annotation:
- Box around Version
- Tap indicator (10x)
- Tap the ⋮ menu (top-right)
- Select Developer settings
- In Developer settings, enable:
- ✅ Unknown sources
- Connect your phone (USB or Wireless Android Auto)
- Open Android Auto
- You should see Streamer Audio under media apps 🎵
-
App not visible?
- Force stop Android Auto
- Reboot phone
- Reconnect USB / restart head unit
-
Plays on phone but not on car?
- Check media permissions
- Check Android Auto media settings
The app follows Clean Architecture principles with MVVM pattern:
├── data/
│ ├── api/ # Retrofit API services
│ ├── datasource/dto/ # Data Transfer Objects
│ ├── repository/ # Repository implementations
│ └── util/ # Utilities and constants
├── domain/
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Business logic use cases
├── presentation/
│ ├── ui/ # Activities and UI components
│ ├── adapter/ # RecyclerView adapters
│ ├── viewmodel/ # ViewModels
│ └── di/ # Dependency injection modules
└── service/ # Media playback services
- Language: Kotlin
- Min SDK: 24 (Android 7.0)
- Architecture: MVVM + Clean Architecture
- DI: Hilt/Dagger
- Media3 - Modern media playback (ExoPlayer)
- Retrofit - REST API client
- OkHttp - HTTP client
- Glide - Image loading
- Coroutines & Flow - Asynchronous programming
- Material Components - UI design
- SwipeRefreshLayout - Pull-to-refresh
- EncryptedSharedPreferences - Secure token storage
- Twitch Helix API - Stream data for authenticated users
- Twitch GraphQL API - HLS token generation
- Custom Backend API - Unauthenticated browsing endpoints
- Android Studio (Hedgehog or newer recommended)
- JDK 11 or higher
- Android SDK 24+
- Twitch Developer Application (for OAuth)
git clone https://github.com/satpal123/StreamerAudio.git
cd StreamerAudio- Create a Twitch Developer account at dev.twitch.tv
- Register a new application
- Set redirect URI to
http://localhost - Copy your Client ID
In app/src/main/java/com/player/streameraudio/data/util/Constants.kt, update:
const val TWITCH_CLIENT_ID = "your_client_id_here"The app uses a custom backend for unauthenticated browsing. The backend is already configured at:
https://streameraudio-twitch-backend.netlify.app/.netlify/functions/
If you want to host your own backend, you'll need these endpoints:
GET /categories- Returns top games/categories with paginationGET /channels?game_id=X- Returns live channels for a gameGET /top-streams- Returns top live streamsGET /profile-image?login=X- Returns user profile data
# Open in Android Studio and sync Gradle
# Or use command line:
./gradlew assembleDebug
# Install on connected device:
./gradlew installDebug- With Login: Click "Login with Twitch" to access followed channels
- Without Login: Click "Browse Without Login" to explore as guest
- Following - Your followed live channels (authenticated only)
- Categories - Browse streams by game/category
- Live - Top live streams across Twitch
- Search - Find specific channels (authenticated only)
Access settings via the toolbar menu (⚙️):
- Stream Source: Choose between HLS Direct or Proxy
- Proxy Server: Select region (EU/EU2/EU3/AS)
- Logout: Clear authentication and return to guest mode
- Tap any stream to open the full player
- Use the mini player bar (bottom) to control playback from any screen
- View live uptime and viewer count
- Android Auto: Full browse and playback support in compatible vehicles
HLS Direct (Default for authenticated users):
- Connects directly to Twitch's servers
- Requires Twitch Client-ID
- May fail if GraphQL API restrictions change
Proxy Mode (Default for guest users):
- Routes through third-party proxy servers
- More reliable long-term
- Choose closest server for best performance
- EU - Europe (Primary)
- EU2 - Europe (Secondary)
- EU3 - Europe (Tertiary)
- AS - Asia
- OAuth tokens encrypted using
EncryptedSharedPreferences - No plaintext credential storage
- Secure HTTPS connections only
- WebView data cleared after logout
- Access tokens validated on app launch
Future enhancements planned:
- Favorites/bookmarks for guest users
- Playback history
- Sleep timer
- Chromecast support
- Equalizer integration
- HLS mode may occasionally fail due to Twitch API changes (use Proxy mode as fallback)
- Android Auto search not implemented yet
- Some thumbnails may take time to load on slow connections
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Kotlin coding conventions
- Maintain Clean Architecture pattern
- Add unit tests for new features
- Update README if adding new functionality
- Test on multiple Android versions
This project is licensed under the MIT License - see the LICENSE file for details.
This app is not affiliated with, endorsed by, or sponsored by Twitch Interactive, Inc. All Twitch-related trademarks and logos are property of Twitch Interactive, Inc.
The app is intended for personal use and should respect Twitch's Terms of Service.
- Twitch API - Stream data and authentication
- Media3/ExoPlayer - Audio playback engine
- Luminous Proxy - Proxy server infrastructure
- Twitch community for testing and feedback
- Lines of Code: ~5000+
- Languages: Kotlin, XML
- Activities: 4
- ViewModels: 5
- Use Cases: 12
- API Services: 4
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed description
- Include Android version, device model, and steps to reproduce
The goal is to create the best audio-only Twitch experience on Android, with features rivaling dedicated podcast apps while maintaining the live, interactive nature of Twitch streams.
If you enjoy Streamer Audio and want to support its development:
Your support helps with maintenance, hosting, and new features ❤️
Made with ❤️ for the Twitch community
⭐ Star this repo if you find it useful!









