A feature-rich, modern Android music player built with cutting-edge technologies and following industry best practices. This project demonstrates advanced Android development skills including Clean Architecture, MVVM pattern, Jetpack Compose, and audio visualization.
- High-quality audio playback with MediaSession integration
- Smart playlist management with reorderable tracks
- Intuitive media controls: Play, pause, skip, shuffle, repeat
- Background playback with notification controls
- Audio focus management for seamless user experience
- 100% Jetpack Compose - Latest declarative UI toolkit
- Material Design 3 components and theming
- Responsive layouts optimized for different screen sizes
- Smooth animations and transitions
- Dark/Light theme support
- Real-time waveform visualization using custom native libraries
- Audio amplitude analysis with FFmpeg integration
- Interactive audio timeline for precise navigation
- Clean Architecture with clear separation of concerns
- MVVM pattern with ViewModels and StateFlow
- Dependency Injection using Dagger Hilt
- Repository pattern for data management
- Use cases for business logic encapsulation
- Kotlin - 100% Kotlin codebase
- Jetpack Compose - Modern declarative UI
- Material Design 3 - Latest design system
- Coroutines & Flow - Asynchronous programming
- Clean Architecture - Scalable and maintainable code structure
- MVVM Pattern - Clear separation between UI and business logic
- Repository Pattern - Centralized data access
- Dependency Injection - Dagger Hilt for IoC
- MediaPlayer - Core audio playback functionality
- MediaSession - Media controls integration
- FFmpeg - Advanced audio processing (via custom C++ library)
- Audio visualization - Custom waveform rendering
- Android API 23+ - Wide device compatibility
- Gradle - Modern build system
- ProGuard - Code optimization and obfuscation
๐ฆ vibra
โโโ ๐ฏ core/
โ โโโ domain/ # Business logic & entities
โ โโโ infrastructure/ # Data sources & repositories
โโโ ๐จ screens/ # Compose UI screens
โโโ ๐งฉ components/ # Reusable UI components
โโโ ๐ฑ activities/ # Android activities
โโโ ๐ view_models/ # MVVM ViewModels
โโโ ๐ di/ # Dependency injection modules
- Domain Layer: Contains business entities, use cases, and repository interfaces
- Data Layer: Implements repositories, data sources, and handles data mapping
- Presentation Layer: UI components, ViewModels, and Android-specific code
- Lazy loading of music library for improved startup time
- Efficient memory management with proper lifecycle handling
- Background processing for audio analysis and metadata extraction
- Optimized list rendering with Compose's LazyColumn
- Custom C++ native library for high-performance audio analysis
- FFmpeg integration for advanced audio format support
- Real-time waveform generation and visualization
- Audio amplitude detection for dynamic UI elements
- Seamless background playback with proper service implementation
- System integration with media notification controls
- Responsive design adapting to different screen orientations
- Accessibility support following Android guidelines
- Automated testing with comprehensive unit and integration tests
- Test coverage reporting with JaCoCo and Codecov integration
- Continuous Integration using GitHub Actions for automated builds
- Code quality analysis with static analysis tools
- Automated APK generation for releases
- Dependency vulnerability scanning
This project maintains high code quality with comprehensive testing:
- Unit Tests: Core business logic and utilities
- Integration Tests: Service and repository layer testing
- Instrumented Tests: Android-specific component testing
- Test Coverage: Automated coverage reporting with badges
- Quality Gates: Automated checks for code quality and coverage thresholds
# Run all tests with coverage
./scripts/run_tests.sh
# Run unit tests only
./gradlew testDebugUnitTest
# Run instrumented tests
./gradlew connectedAndroidTest
# Generate coverage report
./gradlew jacocoTestReport-
Clone the repository
git clone https://github.com/felnanuke2/vibra_app.git
-
Open in Android Studio
- Import the project in Android Studio Arctic Fox or later
- Sync Gradle dependencies
-
Build and Run
- Connect an Android device or start an emulator
- Run the app (Minimum SDK: API 23)
READ_EXTERNAL_STORAGE- Access music files on deviceREAD_MEDIA_AUDIO- Android 13+ audio file accessINTERNET- For potential online featuresPOST_NOTIFICATIONS- Media playback notifications
Our CI pipeline ensures code quality and reliability:
- ๐ Automated Testing: Unit tests run on every push and PR
- ๐ Test Coverage: JaCoCo generates detailed coverage reports
- ๐ Code Quality: Lint checks and static analysis
- ๐ฑ Build Verification: Debug and release APK generation
- ๐ Security Scanning: Dependency vulnerability checks
Current test coverage metrics:
- Overall Coverage: Maintained above 40%
- New Code Coverage: Target of 60% for new changes
- Coverage Reports: Available in PR comments
- Trending: Coverage trend tracking over time
// Example test structure
@Test
fun `playNext should call nextTrack when canPlayNext is true`() {
// Given
every { canPlayNext.value } returns true
// When
trackPlayerServices.playNext()
// Then
verify { queueManager.nextTrack() }
}# Run unit tests
./gradlew testDebugUnitTest
# Generate coverage report
./gradlew jacocoTestReport
# View coverage report
open mymusicapp/build/reports/jacoco/jacocoTestReport/html/index.htmlThis project demonstrates:
- โ Modern Android Development - Latest tools and practices
- โ Clean Code Principles - SOLID principles and clean architecture
- โ Performance Optimization - Efficient audio processing and UI rendering
- โ User-Centered Design - Intuitive and accessible interface
- โ Production-Ready Code - Proper error handling and edge cases
- โ Cross-Platform Skills - Native Android with C++ integration
- ๐ Online streaming integration
- ๐ต Lyrics display and synchronization
- ๐ Advanced audio effects and equalizer
- โ๏ธ Cloud sync for playlists and preferences
- ๐ค Machine learning for music recommendations
This project is part of a professional portfolio showcasing Android development expertise.
The app also features basic music playback controls such as play, pause, skip forward, and skip backward. Additionally, there is a shuffle and repeat button that allows users to toggle between these modes.
The repository contains the source code for the app, including the UI layout files, the code for handling music playback, and the logic for fetching and displaying the list of available songs.





