Estoy usando RingtoneManager, y aparentemente en algunos teléfonos devuelve null todo el tiempo. Sé que devuelve nulo si el sonido es silencioso o no puede encontrar el tono. ¿Por qué no se devolverá null si el sonido está activado y hay un tono? El código funciona en mi Nexus s ....RingtoneManager return null ringtone
Aquí es lo que estoy utilizando:
Ringtone ringtone;
ringtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
if(ringtone == null)
{
Log.d("Debug", "ringtone is null");
}
else
{
ringtone.play();
}
He habilitado para jugar tono de llamada (funciona en mi teléfono) e incluso tienen permisos para tarjetas SD todos los permisos habilitado solo en caso de que el tono de llamada esté en la tarjeta SD. ¿Alguna idea?
Según el código fuente para RingtoneManager, el único caso en el que getRingtone devuelve null es cuando no se puede abrir el tono de llamada en el URI dado. También debería poner una línea con '" Error al abrir el tono de llamada "+ ringtoneUri' en logcat. ¿Estás viendo esas líneas en tu salida de logcat? –
No en el mío, pero algunos usuarios se quejan de que el tono de llamada no se está disparando. Antes de tener la verificación NULL, se bloqueaba debido a un puntero desreferenciado. Lo único que creo que puedo asumir es que no podría obtener un URI ... Pero no sé por qué no podría hacer eso cuando tengan un tono de llamada válido. Tal vez un bloqueo de recursos? – atomicbaum