W buttonie mam taki kod:
File file = new File(Environment.getExternalStorageDirectory(), "/audio/testowa");
if (!file.exists())
{
file.mkdirs();
}
String path = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/audio/testowa";
File f = new File(path + "/", "nr1" + ".mp3");
Uri mUri = Uri.parse("android.resource://"
+ getApplicationContext().getPackageName() + "/raw/" + "nr1");
ContentResolver mCr = getApplicationContext().getContentResolver();
AssetFileDescriptor soundFile;
try
{
soundFile = mCr.openAssetFileDescriptor(mUri, "r");
} catch (FileNotFoundException e)
{
soundFile = null;
}
try
{
byte[] readData = new byte[1024];
FileInputStream fis = soundFile.createInputStream();
FileOutputStream fos = new FileOutputStream(f);
int i = fis.read(readData);
while (i != -1)
{
fos.write(readData, 0, i);
i = fis.read(readData);
}
fos.close();
} catch (IOException io)
{
}
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, f.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "nr1");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, f.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(f
.getAbsolutePath());
Uri newUri = mCr.insert(uri, values);
try
{
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),
RingtoneManager.TYPE_RINGTONE, newUri);
Settings.System.putString(mCr, Settings.System.RINGTONE,
newUri.toString());
} catch (Throwable t)
{
}
Po uruchomieniu emulatora i kliknięciu w Button, by wywołać ten kod, nie dzieje się to co chcę. Program zapisuje wybrany plik mp3 w zupełnie innej ścieżce, jakiejś wygenerowanej z cyferkami wieloma (coś w stylu /225423525/<unknown>/), nie wiem dlaczego. A skoro pod złą ścieżkę wrzuca plik, to tym samym nie ustawia dźwięku jako dzwonek.
Bardzo proszę kogoś by zerknął w kod i wskazał błąd, który odpowiada za zapisanie dźwięku w ścieżce zupełnie dziwnej, zamiast tej podanej w kodzie.