lunes, 17 de septiembre de 2012

Abrir diálogo con los Tonos del teléfono

Si estamos creando una aplicación, por ejemplo, que utiliza sonidos a lo mejor, nos viene bien, usar los que el sistema Android tiene por defecto. Para ello, podemos abrir un cuadro de diálogo mostrando los diferentes tonos que el usuario puede escoger.

A continuación los pasos y el código:

1.- Primero de todo creamos el Intent y luego realizamos la acción de iniciar una Activity esperando el resultado.


private final int TONE_SELECTED = 1;
*********************


Intent intent = new Intent(
RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
"Selecciona el to d'alarma /*Título del cuadro de diálogo*/");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
(Uri) null);
startActivityForResult(intent, TONE_SELECTED);


2.- En el result nos guardamos la URI (dirección) del tono para futuros usos. En este caso lo guardamos usando SharedPreferences.


public static final String PREFERENCE_TONE_URI = "toneUri";
public static final String PREFERENCE_TONE_NAME = "toneName";
public static final String PREFERENCES_NAME = "PREF_NAME";
*********************


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         switch (requestCode) {
              case TONE_SELECTED:
                      String toneUri,
                      toneName;
                      try {
                        Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                        Ringtone ringtone = RingtoneManager.getRingtone(this, uri);

                       if (uri != null) {
                          toneUri = uri.toString();
                          toneName = ringtone.getTitle(this);
                          SharedPreferences preferences = getSharedPreferences(
                          PREFERENCES_NAME, Context.MODE_WORLD_WRITEABLE);
                          SharedPreferences.Editor editor = preferences.edit();
                          editor.putString(PREFERENCE_TONE_URI, toneUri);
                          editor.putString(PREFERENCE_TONE_NAME, toneName);
                         editor.commit();
                        } 
                      } catch (Exception e) {
                         e.printStackTrace();
                         Toast.makeText(this, "No se ha seleccionado ningún tono"Toast.LENGTH_SHORT).show();
                      }
                      break;
                   default:
                      break;
           }
}


Finalmente, una imagen donde se puede apreciar el cuadro de diálogo:




It works!
Roger Sala,





2 comentarios:

  1. Muy buenos los post

    Como sería igual para dialogos de mensajes para copiar y pegar imagenes, gracias.

    ResponderEliminar
  2. Buenos Jorge,

    Muchas gracias por visitar el blog. ¿Te refieres a tener un cuadro de diálogo para poder seleccionar imágenes en el cuadro y luego copiar/pegar?

    ResponderEliminar