Sonic Switcher is a simple audio converter for Android, designed to convert various audio file formats into uncompressed WAV files. 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 WAV format.
- View the progress of the conversion in real-time.
- Save the converted WAV 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 uses native media APIs to 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.