2012-05-05 9 views
8

Ich versuche einen Klingelton zu spielen, der aus einer RingtonePreference ausgewählt wurde. Wie kann ich es spielen?So wird der Klingelton wiedergegeben, der von RingtonePreference ausgewählt wurde

Hier ist meine XML-Datei Code

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

Hier ist, was ich

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

Wenn ich Toast wie diese

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

Dann ist es diese Art in Java tue zeigt von Pfad

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

Aber ich weiß nicht, wie man das hier spielt.

Hilfe bitte.

Antwort

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

hier Dies sollte sein, was Sie wollen :) Ich hoffe, es

+0

Danke SmartLemon. Ich rufe playSound-Methode in BroadcastReceiver auf. Also gibt es mir diesen Fehler wenn ich den Mauszeiger darüber bewege "Die Methode playSound (Context, Uri) im Typ Test ist nicht anwendbar für die Argumente (new BroadcastReceiver() {}, Uri)" – 2619

+0

Ersetze dies durch .this vielleicht – FabianCook

+1

Der Broadcast-Empfänger nimmt Kontext und Absicht als Argumente, Sie müssen playSound() mit dem Kontext aufrufen, mit dem der Broadcast-Empfänger aufgerufen wird. – Luke

1

Here ist ein Beispielprojekt von Commonsware für das gleiche können Sie herunterladen und überprüfen, ob es funktioniert.

Sie können die Uri aus dem String erhalten, die Sie mit bekommen werden,

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

Dann können Sie die uri mit MediaPlayer spielen.

+1

Ich spiele schon prüfte das Projekt, aber das ist nicht was ich will. Alles was ich will, ist wie ich den gewählten Sound spielen kann. – 2619

+0

Ok, ich habe meine Antwort bearbeitet. –

+0

Beispiel für alles ist über Jungs :) – FabianCook

0

arbeitet Sie bevorzugt Klingelton aus Vorlieben nehmen und Sie können ganz einfach den Klingelton mit RingtoneManager Klasse

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(); 
Verwandte Themen