2012-05-05 13 views
8

Sto provando a riprodurre una suoneria selezionata da un RingtonePreference. Come posso giocare?Come riprodurre la suoneria selezionata da RingtonePreference

Ecco il mio codice file xml

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

Ecco quello che sto facendo in java

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

Quando uso brindisi come questo

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

Poi si vede questo tipo del percorso

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

Ma non so come giocare a questo.

Aiuto per favore.

risposta

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"); 
     } 
    } 

Questo qui dovrebbe essere quello che vuoi :) Spero che funzioni

+0

Grazie SmartLemon. Sto chiamando il metodo playSound in BroadcastReceiver. Quindi mi dà questo errore quando passo il mouse su di esso "Il metodo playSound (Context, Uri) nel tipo Test non è applicabile per gli argomenti (nuovo BroadcastReceiver() {}, Uri)" – 2619

+0

sostituirlo con .questo forse – FabianCook

+1

Il destinatario della trasmissione prende contesto e intenti come argomenti, è necessario chiamare playSound() con il contesto con cui viene chiamato il destinatario della trasmissione. – Luke

1

Here è un progetto di esempio da Commonsware per lo stesso che è possibile scaricare e controllare il suo funzionamento.

È possibile ottenere le Uri dalla stringa che hai trovato utilizzando,

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

allora si può giocare l'URI utilizzando MediaPlayer.

+1

ho già controllato quel progetto ma non è quello che voglio. Tutto quello che voglio è come posso suonare il suono scelto. – 2619

+0

Ok ho modificato la mia risposta. –

+0

Esempio di come fare tutto è sopra ragazzi :) – FabianCook

0

Si può prendere suoneria preferita dalle preferenze e Si può facilmente riprodurre la suoneria utilizzando la classe 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(); 
Problemi correlati