Sonic Switcher is a simple audio converter for Android, designed to convert various audio file formats into high-quality MP3s. Once converted, you can save the files to your device or easily share them using Android's native sharing capabilities.
- Select any audio file from your device's storage.
- Convert audio files to MP3 format.
- View the progress of the conversion in real-time.
- Save the converted MP3 to your device.
- Share the converted file with other apps.
This project is intended to follow modern Android development practices and maintains a clean, modular architecture.
-
Modular Design: The project is split into two main modules:
:app: This is the main application module, containing the user interface (UI) and all application-level logic. It is responsible for handling user interactions, permissions, and coordinating with the:convertermodule.:converter: This is a library module that contains the core audio conversion logic. It usesFFmpegKitto handle the heavy lifting of audio transcoding. This module is self-contained and has no dependencies on the:appmodule, making it reusable.
-
UI: The user interface is built entirely with Jetpack Compose, Google's modern toolkit for building native Android UI.
-
Dependency Injection: Hilt is used for dependency injection, which helps in managing dependencies and creating a more scalable and testable codebase.
-
Asynchronous Operations: Kotlin Coroutines are used to manage background threads, ensuring that long-running operations like file conversions don't block the main thread, providing a smooth user experience.
To build the project, you will need Android Studio.
- Clone the repository:
git clone https://github.com/your-username/sonic-switcher.git - Open the project in Android Studio.
- Let Gradle sync and download the required dependencies.
- Build and run the app on an Android device or emulator.
This is an open-source project, and contributions are welcome! If you'd like to contribute, please feel free to fork the repository and submit a pull request. If you find any issues or have suggestions for improvements, please open an issue.