@jchaviano
hasta ahora llegue un poco mas lejos.
miren:::
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import java.io.File;
import android.provider.MediaStore;
import android.content.ContentValues;
import android.media.RingtoneManager;
import android.util.Log;
import android.os.Environment;
import org.qtproject.qt5.android.bindings.QtActivity;
public class Tonos {
public static void init_tones(QtActivity activity)
{
Uri path = null;
String fileName = "/media/audio/ringtones/eltono.mp3";
// no logro hacer este metodo
//sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
//Uri.parse("file://" + Environment.getExternalStorageDirectory() + filename)));
File file = new File(Environment.getExternalStorageDirectory(), fileName);
if (file.exists()) {
Log.i("Ringtone", "File already exists");
path = getMediaUri(file, activity);
if (path != null) {
path = Uri.fromFile(file);
RingtoneManager.setActualDefaultRingtoneUri(activity,
RingtoneManager.TYPE_NOTIFICATION, path);
}
}
}
public static Uri getMediaUri(File outFile, QtActivity activity) {
// To set any tone as ringtone on sd-card, it should have appropriate content values.
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, outFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE,getNameMusic(outFile.getName()));
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");
//if(type == TYPE_NOTIFICATION_CHOICE) {
// values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
//values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
//}
// if(type == TYPE_RINGTONE_CHOICE) {
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
//}
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
//Delete if present and insert it into the media database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(outFile.getAbsolutePath());
activity.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + outFile.getAbsolutePath() + "\"", null);
Uri newUri = activity.getContentResolver().insert(uri, values);
return newUri;
}
public static String getNameMusic(String name){
return name.substring(0,name.length()-4);
}
}