java - tono - Cómo abrir la lista de sonidos de notificación disponibles en Android
poner mp3 tono whatsapp 2018 (3)
Este es el método que uso para obtener una lista de sonidos de notificación disponibles en el teléfono :)
public Map<String, String> getNotifications() {
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
Map<String, String> list = new HashMap<>();
while (cursor.moveToNext()) {
String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
list.put(notificationTitle, notificationUri);
}
return list;
}
EDITAR: Esto es para el comentario sobre cómo configurar el sonido en el NotificationCompat.Builder. Este método, en cambio, obtiene el ID del tono de llamada, que es el que usa el teléfono, en lugar del TÍTULO legible por los humanos que obtuvo el otro método. Combina el uri y la identificación, y tienes la ubicación de los tonos de llamada.
public ArrayList<String> getNotificationSounds() {
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
ArrayList<String> list = new ArrayList<>();
while (cursor.moveToNext()) {
String id = cursor.getString(RingtoneManager.ID_COLUMN_INDEX);
String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
list.add(uri + "/" + id);
}
return list;
}
El código anterior devolverá una lista de cadenas como "content: // media / internal / audio / media / 27" . Luego puede pasar una de estas cadenas como Uri en .setSound () como:
.setSound(Uri.parse("content://media/internal/audio/media/27"))
Espero que haya sido lo suficientemente claro :)
Estoy creando notificaciones en mi aplicación Android y me gustaría tener una opción en mis preferencias para establecer qué sonido se utiliza para la notificación. Sé que en la aplicación de Configuración puede elegir un sonido de notificación predeterminado de una lista. ¿De dónde viene esa lista, y hay una manera para mí para mostrar la misma lista en mi aplicación?
O simplemente pegue esto en sus preferencias XML:
<RingtonePreference android:showDefault="true"
android:key="Audio" android:title="Alarm Noise"
android:ringtoneType="notification" />
Contenido completo de mi XML de muestra solo por contexto:
<?xml version="1.0" encoding="UTF-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:title="Some value"
android:key="someval"
android:summary="Please provide some value" />
<EditTextPreference android:title="Some other value"
android:key="someval2"
android:summary="Please provide some other value" />
<RingtonePreference android:showDefault="true"
android:key="Audio" android:title="Alarm Noise"
android:ringtoneType="notification" />
</PreferenceScreen>
Simplemente copie / pegue código de una de mis aplicaciones que hace lo que está buscando.
Esto se encuentra en un controlador onClick de un botón etiquetado como "establecer tono de llamada" o algo similar:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
this.startActivityForResult(intent, 5);
Y este código captura la elección hecha por el usuario:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
{
if (resultCode == Activity.RESULT_OK && requestCode == 5)
{
Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null)
{
this.chosenRingtone = uri.toString();
}
else
{
this.chosenRingtone = null;
}
}
}
Además, les aconsejo a mis usuarios que instalen la aplicación "Rings Extended" de Android Market. Entonces cada vez que este cuadro de diálogo se abra en su dispositivo, como desde mi aplicación o desde el menú de configuración del teléfono, el usuario tendrá la opción adicional de elegir cualquiera de los mp3 almacenados en su dispositivo, no solo los tonos de llamada integrados.