Android Obtenir des sonneries système


Exemple

Cet exemple montre comment récupérer l'URI des sonneries système ( RingtoneManager.TYPE_RINGTONE ):

private List<Uri> loadLocalRingtonesUris() {
        List<Uri> alarms = new ArrayList<>();
        try {
            RingtoneManager ringtoneMgr = new RingtoneManager(getActivity());
            ringtoneMgr.setType(RingtoneManager.TYPE_RINGTONE);

            Cursor alarmsCursor = ringtoneMgr.getCursor();
            int alarmsCount = alarmsCursor.getCount();
            if (alarmsCount == 0 && !alarmsCursor.moveToFirst()) {
                alarmsCursor.close();
                return null;
            }

            while (!alarmsCursor.isAfterLast() && alarmsCursor.moveToNext()) {
                int currentPosition = alarmsCursor.getPosition();
                alarms.add(ringtoneMgr.getRingtoneUri(currentPosition));
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return alarms;
    }

La liste dépend des types de sonneries demandés. Les possibilités sont les suivantes:

  • RingtoneManager.TYPE_RINGTONE
  • RingtoneManager.TYPE_NOTIFICATION
  • RingtoneManager.TYPE_ALARM
  • RingtoneManager.TYPE_ALL = TYPE_RINGTONE | TYPE_NOTIFICATION | TYPE_ALARM


Pour obtenir les sonneries comme android.media.Ringtone chaque Uri doit être résolu par le RingtoneManager :

android.media.Ringtone osRingtone = RingtoneManager.getRingtone(context, uri);

Pour jouer le son, utilisez la méthode:

public void setDataSource(Context context, Uri uri)

depuis android.media.MediaPlayer . MediaPlayer doit être initialisé et préparé conformément au diagramme d'état