Android系统的铃声
Android本身提供了一些默认的铃声文件,这些文件都放在“/system/media/audio”目录中。
如果是我们自己下载的铃声文件,这些文件都放在“/sdcard/music”目录中
它们有3个共同的子目录
[ringtones来电,alarms闹钟,notifications警告或通知铃声]
系统启动时,加载铃声同时检测/system/media/audio和/sdcard/music/
设置铃声分两个步骤
1,根据相应action启动系统设置
2,从系统设置中取得用户选择的结果,调用RingtoneManager.setActualDefaultRingtoneUri来设置
下面是启动系统设置铃声activity时的action
RingtoneManager.TYPE_RINGTONE:设置来电铃声
RingtoneManager.TYPE_ALARM:设置闹钟铃声
RingtoneManager.TYPE_NOTIFICATION:设置通知铃声
示例
1 import android.app.Activity; 2 import android.content.Intent; 3 import android.media.RingtoneManager; 4 import android.net.Uri; 5 import android.os.Bundle; 6 import android.view.View; 7 8 /* 9 * 设置铃声的应用 10 * 分为两个步骤: 11 * 1,根据相应action启动系统设置 12 * 2,从系统设置中取得用户选择的结果,调用RingtoneManager.setActualDefaultRingtoneUri来设置 13 */ 14 public class Main extends Activity { 15 /** Called when the activity is first created. */ 16 @Override 17 public void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.main); 20 21 } 22 /* 23 * 启动设置来电铃声activity 24 */ 25 public void onClick_Call_Ringtone(View view) { 26 //1,指定action 为RingtoneManager.ACTION_RINGTONE_PICKER 27 Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 28 29 //2,传入数据 30 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_RINGTONE); 31 //3,设置activity启动后的标题 32 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电铃声"); 33 //4,注意用startActivityForResult启动. 34 startActivityForResult(intent, 1); 35 } 36 /* 37 * 启动设置闹钟声activity 38 */ 39 public void onClick_Alarm_Ringtone(View view) { 40 //1,指定action 为RingtoneManager.ACTION_RINGTONE_PICKER 41 Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 42 43 //2,传入数据 44 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM); 45 //3,设置activity启动后的标题 46 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹钟声"); 47 //4,注意用startActivityForResult启动. 48 startActivityForResult(intent, 2); 49 } 50 /* 51 * 启动设置通知声activity 52 */ 53 public void onClick_Notification_Ringtone(View view) { 54 //1,指定action 为RingtoneManager.ACTION_RINGTONE_PICKER 55 Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 56 57 //2,传入数据 58 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); 59 //3,设置activity启动后的标题 60 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知声"); 61 //4,注意用startActivityForResult启动. 62 startActivityForResult(intent, 3); 63 } 64 /* 65 * 系统设置界面的返回结果回调 66 */ 67 @Override 68 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 69 if (resultCode != RESULT_OK) { 70 return; 71 } 72 //从设置界面返回的用户选择结果,它是个uri, 73 Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 74 75 if (uri != null) { 76 switch (requestCode) { 77 case 1: //设置来电铃声 78 //RingtoneManager的静态方法.setActualDefaultRingtoneUri来设置 79 RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_RINGTONE, uri); 80 break; 81 case 2: //设置闹钟声 82 //RingtoneManager的静态方法.setActualDefaultRingtoneUri来设置 83 RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_ALARM, uri); 84 break; 85 case 3://设置通知声 86 //RingtoneManager的静态方法.setActualDefaultRingtoneUri来设置 87 RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_NOTIFICATION, uri); 88 break; 89 default: 90 break; 91 } 92 } 93 } 94 }