Find more at:
NewsSound
A modern news consumption application that transforms traditional articles into engaging multimedia experiences.
Technical Overview
NewsSound is a Kotlin Multiplatform Project that combines traditional article reading with modern multimedia experiences, including text-to-speech, video integration, and story-like presentation.
Architecture & Design Patterns
-
Kotlin Multiplatform Project (KMP) - Sharing code between Android and iOS platforms
-
Repository Pattern - Abstracting data sources (e.g.,
ForYouRepository
) -
Dependency Injection - Custom DI implementation with provider functions and singletons
-
Factory Pattern - Creating different types of UI components based on content type
-
Strategy Pattern - Multiple TTS service implementations with fallback mechanism
-
Observer Pattern - For UI updates and data flow
-
Adapter Pattern - Converting data models for different UI representations
-
Builder Pattern - For constructing complex objects like API requests
Programming Languages & Frameworks
-
Kotlin - Primary language for Android and shared code
-
Gradle KTS - Build configuration with Kotlin DSL
-
Coroutines - Asynchronous programming
-
Ktor - Networking library for API calls
-
Kotlinx Serialization - JSON parsing
Key Features
Story Viewer Experience
The app transforms traditional articles into engaging story experiences similar to popular social media platforms.
Advanced Text-to-Speech Integration
Multiple TTS services (Zalo, Viettel, Knet) with fallback mechanism ensure reliable audio narration.
Article Preview with Dynamic Timing
Intelligent calculation of reading time based on content length.
Content Parsing and Extraction
Sophisticated parsing to extract meaningful content from web sources using JSoup and custom extractors.
Adaptive UI for Different Content Types
UI adapts based on content type, providing optimal viewing experiences for various news formats.
Android Development
-
Jetpack Components - Navigation, ViewModel, LiveData
-
Fragment-based UI - Modular UI components
-
ViewBinding - Type-safe view access
-
RecyclerView with custom adapters and view holders
-
ExoPlayer - Media playback for audio and video content
-
Custom Views - Specialized UI components
Multimedia Processing
-
Text-to-Speech Integration - Multiple service providers
-
Audio Processing - Converting text to audio files
-
Video Playback - Handling different video formats
-
Image Processing - Dynamic image loading and caching with Glide
Networking & Data
-
RESTful API Integration - Multiple service endpoints
-
HTTP Client Configuration - Custom headers, timeouts, and error handling
-
Content Parsing - HTML parsing with JSoup
-
Form Data Handling - For API requests
-
Byte Array Processing - For audio data
Performance Optimization
-
Lazy Loading - Deferred initialization of expensive resources
-
View Recycling - Efficient UI rendering with RecyclerView
-
Firebase Performance Monitoring - Real-time performance tracking
-
Gradle Optimization - Parallel builds, daemon, and caching
Error Handling & Logging
-
Exception Handling - Try-catch blocks with appropriate fallbacks
-
Logging - Custom logging implementation
-
Firebase Crashlytics - Crash reporting
Testing
-
Unit Testing - With JUnit
-
Multiplatform Testing - Shared test code
Security
-
API Key Management - Secure handling of service credentials
-
HTTPS Communication - Secure network requests
CI/CD
-
Firebase App Distribution - Beta testing distribution
-
Google Play Services Integration - For production deployment
Other Technical Skills
-
Multi-threading - Background processing with executors
-
Content Extraction - Intelligent parsing of web content
-
Natural Language Processing - Text summarization
-
Geolocation - Weather data based on user location
-
Push Notifications - Firebase Cloud Messaging
Building the Project
Prerequisites
-
Android Studio Arctic Fox or newer
-
Kotlin 1.6.21 or newer
-
JDK 11
Setup
-
Clone the repository
-
Open the project in Android Studio
-
Sync Gradle files
-
Build the project
Running
-
Select the
demo
orlive
build variant -
Run on an emulator or physical device
License
[License details]