2012-05-05 15 views
8

Estoy tratando de reproducir un tono de llamada que se selecciona de una referencia de tono de llamada. ¿Cómo puedo jugarlo?Cómo reproducir el tono de llamada seleccionado de RingtonePreference

Aquí está mi código XML archivo

<RingtonePreference 
    android:title="Choose Alarm" 
    android:key="ringtone" 
    android:summary="this is summary" 
    ></RingtonePreference> 

Aquí es lo que estoy haciendo en Java

SharedPreferences getAlarms = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 

Cuando uso tostadas como esto

Toast.makeText(getApplicationContext(), alarms, Toast.LENGTH_LONG).show(); 

A continuación se muestra este tipo de la ruta

content://media/internal/audio/media/50 

Pero no sé cómo jugar éste.

Ayuda Por favor.

Respuesta

20
private void alarm(){ 
    SharedPreferences getAlarms = PreferenceManager. 
            getDefaultSharedPreferences(getBaseContext()); 
    String alarms = getAlarms.getString("ringtone", "default ringtone"); 
    Uri uri = Uri.parse(alarms); 
    playSound(this, uri); 

    //call mMediaPlayer.stop(); when you want the sound to stop 
} 


private MediaPlayer mMediaPlayer; 
private void playSound(Context context, Uri alert) { 
     mMediaPlayer = new MediaPlayer(); 
     try { 
      mMediaPlayer.setDataSource(context, alert); 
      final AudioManager audioManager = (AudioManager) context 
        .getSystemService(Context.AUDIO_SERVICE); 
      if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { 
       mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
       mMediaPlayer.prepare(); 
       mMediaPlayer.start(); 
      } 
     } catch (IOException e) { 
      System.out.println("OOPS"); 
     } 
    } 

Esta aquí debe ser lo que usted quiere :) espero que funcione

+0

Gracias SmartLemon. Estoy llamando al método playSound en BroadcastReceiver. Por lo tanto, me da este error cuando sobre él "El método playSound (Contexto, Uri) en el tipo Prueba no es aplicable para los argumentos (new BroadcastReceiver() {}, Uri)" – 2619

+0

reemplazar esto con .this tal vez – FabianCook

+1

El receptor de la transmisión toma el contexto y la intención como argumentos, necesita llamar a playSound() con el contexto con el que se llama al receptor de la transmisión. – Luke

1

Here es un proyecto de muestra de Commonsware para el mismo que puede descargar y comprobar su funcionamiento.

que pueda obtener el Uri de la cadena que se está consiguiendo mediante el uso,

SharedPreferences getAlarms = PreferenceManager. 
            getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 
Uri uri = Uri.parse("alarms"); 

A continuación, puede jugar el URI usando MediaPlayer.

+1

ya revisé ese proyecto pero eso no es lo que quiero. Todo lo que quiero es cómo puedo reproducir el sonido elegido. – 2619

+0

Ok, edité mi respuesta. –

+0

Ejemplo de cómo hacerlo todo está por encima de chicos :) – FabianCook

0

Puede tomar tono preferido de las preferencias y Puede reproducir fácilmente el tono de llamada usando la clase RingtoneManager

SharedPreferences getAlarms = PreferenceManager. 
           getDefaultSharedPreferences(getBaseContext()); 
String alarms = getAlarms.getString("ringtone", "default ringtone"); 
Uri uri = Uri.parse(alarms); 

Ringtone r = RingtoneManager.getRingtone(context, uri); 
r.play(); 
Cuestiones relacionadas