J'essaie de trouver un moyen de définir une nouvelle sonnerie par défaut à partir de mon activité Android.
J'ai déjà téléchargé la sonnerie dans un bytearray.
Quelqu'un a un indice?
J'essaie de trouver un moyen de définir une nouvelle sonnerie par défaut à partir de mon activité Android.
J'ai déjà téléchargé la sonnerie dans un bytearray.
Quelqu'un a un indice?
Enfin, j'ai réussi à définir la sonnerie par défaut à celui que j'ai téléchargé. Le code de téléchargement n'est pas inclus ci-dessous, seulement ce qui était nécessaire pour la définir comme sonnerie par défaut.
File k = new File(path, "mysong.mp3"); // path is a file to /sdcard/media/ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title");
values.put(MediaStore.MediaColumns.SIZE, 215454);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
values.put(MediaStore.Audio.Media.DURATION, 230);
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);
//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
myActivity,
RingtoneManager.TYPE_RINGTONE,
newUri
);
De toute façon, je ne comprends totalement ce que ce code est en train de faire.
La Sonnerie manager a besoin d'un uri du fichier à définir comme sonnerie. Mais cette uri ne peut pas être directement sur la carte sd comme "/sdcard/media/sonneries/ma chanson.mp3". Cela ne fonctionne pas!
Ce que vous avez besoin est un fichier externe uri du fichier qui pourrait être quelque chose comme "/externe/audio/media/46"
Le 46 est l'id de la colonne dans la MediaStore base de données, donc c'est pourquoi vous avez besoin d'ajouter la carte sd le fichier dans la base de données en premier.
De toute façon, comment ne mediastore maintenir son id? Ce nombre peut être très élevé, comme vous le faites cette opération plusieurs fois.
Dois-je supprimer cette ligne de mon auto? Le problème, c'est que certaines fois je n'ai pas encore commander la suppression du fichier, car il peut être supprimé directement à partir de la carte sd avec un filebrowser.
Je n'ai toujours pas trouvé la solution. J'essaie avec ce code, mais ça ne marche pas. Mais il joue le fichier.
Uri ringtoneUri = Uri.parse("/sdcard/media/audio/ringtones/myringtone.mp3");
rm.setActualDefaultRingtoneUri(main, rm.TYPE_RINGTONE, ringtoneUri);
Ringtone rt = rm.getRingtone(main,ringtoneUri);
rt.play();
Ce code commence seulement à jouer la sonnerie, donc rt.play () fonctionne. Mais setActualDefaultRingtoneUri () ne le fait pas. Aucune exception ou avertissement dans le DDM.
http://developer.android.com/reference/android/provider/Settings.System.html#RINGTONE peut vous donner des indices.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.