RingtoneSmartKit — Effortless Android Ringtone Management with Kotlin
Tired of fragmented and inconsistent ringtone management in your Android apps? RingtoneSmartKit is the modern, extensible Kotlin library I built to simplify setting and managing system ringtones, alarms, notifications, and custom contact tones with ease.
We built this because Android's native ringtone handling is often
fragmented and complex. We wanted a library that just works—no fuss,
no boilerplate, no Context juggling.
What Makes it Special?
- Effortless Control: Easily set ringtones for calls, alarms, and notifications.
- Contact-Specific Tones: Assign unique tones to contacts with zero hassle.
- Flexible Audio Sources: Handle any audio source, whether from your app's assets or content URIs.
- Context-Free API: Use it anywhere in your app without needing to pass a Context or Activity.
- Clean Architecture: Built on robust principles for future-proof extensibility.
See How Simple It Is
Setting a system ringtone or customizing one for a specific contact is straightforward:
Set a System Ringtone
RingtoneHelper.setSystemRingtone(
source = RingtoneSource.FromAssets("ringtones/my_ringtone.mp3"),
target = SystemTarget.Call // or Notification, Alarm
).onSuccess {
println("✅ System ringtone set successfully")
}.onFailure { error ->
println("❌ Error setting system ringtone: ${error.message}")
}.launch()
Set a Ringtone for a Specific Contact
RingtoneHelper.setContactRingtone(
source = RingtoneSource.FromStorage(Uri.parse("content://media/internal/audio/media/10")),
target = ContactTarget.ByPhone("+1234567890")
).onSuccess { contact ->
println("✅ Ringtone set for contact: ${contact.displayName}")
}.onFailure { error ->
println("❌ Error setting contact ringtone: ${error.message}")
}.launch()
Enjoy!
Happy coding!