Просто добавьте все свои мелодии в какую-то папку (папка должна быть создана первой)
InputStream in = getResources().openRawResource(R.raw.ringtone1);
FileOutputStream out = new FileOutputStream("/mnt/sdcard/media/ringtones/ringtone1.mp3");
byte[] buff = new byte[1024];
int read = 0;
try {
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
} finally {
in.close();
out.close();
}
Не забудьте добавить разрешение
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Если вы хотите выбрать только уведомленияиз Ringtone Picker вы должны скопировать ваш сырой mp3-файл в папку messages .Это соглашение об именах.Затем, когда вы настроите Ringtone Picker следующим образом
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_NOTIFICATION);
Вы увидите свой файл, только если он находится в папке с именем уведомлений .
ОБНОВЛЕНО:
Забыл упомянуть, что вы должны отсканировать свою SD-карту после добавления некоторых новых мелодий / уведомлений.Вот так например:
mContext.sendBroadcast (
new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory()))
);