2012-05-05 33 views
8

Tôi đang cố gắng phát một nhạc chuông được chọn từ RingtonePreference. Làm thế nào tôi có thể chơi nó?Cách phát nhạc chuông được chọn từ RingtonePreference

Đây là mã tập tin xml của tôi

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

Đây là những gì tôi đang làm trong java

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

Khi tôi sử dụng bánh mì nướng như thế này

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

Sau đó nó cho thấy loại này của đường dẫn

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

Nhưng tôi không biết cách chơi trò chơi này.

Trợ giúp Vui lòng.

Trả lời

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

này ở đây nên được những gì bạn muốn :) Tôi hy vọng nó hoạt động

+0

Cảm ơn SmartLemon. Tôi đang gọi phương thức playSound trong BroadcastReceiver. Vì vậy, nó mang lại cho tôi lỗi này khi tôi di chuột qua nó "Phương thức playSound (Context, Uri) trong loại Test không áp dụng cho các đối số (BroadcastReceiver() {}, Uri)" – 2619

+0

thay thế nó bằng .this có lẽ – FabianCook

+1

Máy thu phát có ngữ cảnh và ý định làm đối số, bạn cần gọi playSound() với ngữ cảnh mà bộ thu phát được gọi. – Luke

1

Here là một dự án mẫu từ Commonsware cho cùng bạn có thể tải xuống và kiểm tra hoạt động của nó.

Bạn có thể lấy Uri từ String rằng bạn đang nhận được bằng cách sử dụng,

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

Sau đó, bạn có thể chơi các uri sử dụng MediaPlayer.

+1

Tôi đã kiểm tra dự án đó nhưng đó không phải là những gì tôi muốn. Tất cả những gì tôi muốn là làm thế nào tôi có thể chơi âm thanh được chọn. – 2619

+0

Ok Tôi đã chỉnh sửa câu trả lời của mình. –

+0

Ví dụ về cách làm tất cả là trên guys :) – FabianCook

0

Bạn có thể lấy nhạc chuông ưa thích từ sở thích và Bạn có thể dễ dàng chơi nhạc chuông bằng RingtoneManager lớp

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(); 
Các vấn đề liên quan