2012-05-05 13 views
8

Próbuję odtworzyć dzwonek wybierany z RingtonePreference. Jak mogę to zagrać?Jak odtwarzać dzwonek wybrany z RingtonePreference

Oto mój xml Kod plik

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

Oto co robię w java

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

Gdy używam tosty jak ten

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

Wtedy to pokazuje ten rodzaj ścieżki

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

Ale nie wiem, jak zagrać w tę.

Proszę o pomoc.

Odpowiedz

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

To tutaj powinien być, co chcesz :) Mam nadzieję, że to działa

+0

Dzięki SmartLemon. Nazywam metodę playSound w BroadcastReceiver. Tak więc daje mi ten błąd, gdy najecham na niego "Metoda playSound (Context, Uri) w teście typu nie ma zastosowania dla argumentów (nowy BroadcastReceiver() {}, Uri)" – 2619

+0

zamień to na .This może – FabianCook

+1

Odbiornik rozgłoszeniowy przyjmuje kontekst i intencję jako argumenty, musisz wywołać metodę playSound() z kontekstem, z którym wywoływany jest odbiornik. – Luke

1

Here to przykładowy projekt z Commonsware, który można pobrać i sprawdzić jego działanie.

można uzyskać Uri od String, czy kupowana za pomocą,

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

Następnie można odtworzyć przy użyciu MediaPlayer URI.

+1

już sprawdziłem ten projekt, ale to nie jest to, czego chcę. Wszystko, czego chcę, to jak grać w wybrane dźwięki. – 2619

+0

Ok Ja zredagowałem moją odpowiedź. –

+0

Przykład tego, jak to wszystko jest powyżej, chłopaki :) – FabianCook

0

Można wziąć preferowany dzwonek z preferencjami i można łatwo odtworzyć dzwonek za pomocą klasy 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(); 
Powiązane problemy