As a recent switcher from the Apple iPhone to an HTC Thunderbolt, there have been a few things that I have been sorting out with the usage of my new phone. I will be detailing some more of my adventures later, however one of the important things to me was how to retain the custom ringtones that I had created using GarageBand.
On the Mac custom ringtones are stored by default in the Ringtones directory within your iTunes Music directory.
The m4r files are really just AAC files with a custom extension that tells iTunes and iOS that it is a ringtone. They are not DRM formatted files or special Apple files, just ordinary AAC files. All you need to do to make them playable on Android is to change the file extension to either m4a or aac.
This is a real bonus since Android 2.2.1 will play AAC files with no problem (see http://developer.android.com/guide/appendix/media-formats.html)
Once I found this piece of information out, the only hurdle was to get the ringtones into a location that was used on my phone. Ideally I would be able to save them to the SD Card to save on the internal storage space and to eliminate the chance of a new software update (or a custom ROM installation) to wipe them out.
It turns out that in Android there is a whole host of pre-defined locations for various data types. As defined on the Android Developer Network:
Music/ – Media scanner classifies all media found here as user music.
Podcasts/ – Media scanner classifies all media found here as a podcast.
Ringtones/ – Media scanner classifies all media found here as a ringtone.
Alarms/ – Media scanner classifies all media found here as an alarm sound.
Notifications/ – Media scanner classifies all media found here as a notification sound.
Pictures/ – All photos (excluding those taken with the camera).
Movies/ – All movies (excluding those taken with the camcorder).
Download/ – Miscellaneous downloads.
With regards to the storage internal to the system, then, this would make the location for the ringtones be as follows:
/system/media/audio/ringtones/
The external storage location for ringtones would be:
/mnt/sdcard/media/audio/ringtones/
Once I had the filetype and location it was simple enough to mount the SD Card of my Thunderbolt and create the appropriate directory structure then copy the re-named file over.
Then open the ringtones settings pane on the Thunderbolt and voila the new ringtones are available.