对于android系统中铃声的播放,Ringtone提供了播放铃声、提示音的快速方法,通常和RingtoneManager配合使用。RingtoneManager在系统中维护着一个铃声数据库。
          RingtoneManager管理来电铃声(TYPE_RINGTONE)、提示音(TYPE_NOTIFICATION)、闹钟铃声(TYPE_ALARM)等,在本质上,Ringtone是对MediaPlayer的再封装。
          Ringtone的常用方法包括:
                getTitle()	    //获取铃声名
                isPlaying()    //判断是否正在播放
                play()    //开始播放
                stop()    //停止播放
            RingtoneManager的常用方法包括:
                getRingtone()    //获取铃声
                setActualDefaultRingtoneUri()    //为某一铃声类型设置默认铃声
                getDefaultUri()    //获取某一铃声类型的默认铃声
          下面是利用RingtoneManager和Ringtone来播放铃声的实现过程。
          代码:Ringtone对铃声的播放
          import android.media.AudioManager;
              import android.media.Ringtone;
              import android.media.RingtoneManager;
              ……
              private RingtonePickerActivity mActivity;
              private RingtoneManager mRingtoneManager;
              private AudioManager mAudioManager;
              ……
              mActivity=getActivity();
              mRingtoneManager=new RingtoneManager(mActivity);			//创建铃声管理器
              mAudioManager=(AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
													//备份铃声设置
              mOriginalVolume=mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
              mDefaultUri=RingtoneManager.getActualDefaultRingtoneUri(mContext,
              RingtoneManager.TYPE_RINGTONE); 				//获取默认铃声
              int maxVolume=mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
              mAudioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume/2,
              AudioManager.FLAG_ALLOW_RINGER_MODES);
              mRingtoneManager.setType(RingtoneManager.TYPE_ALARM);	//设置铃声类型
              Ringtone r=mRingtoneManager.getRingtone(0);				//获得铃声句柄
              ringtone.play();										//播放铃声
          在Ringtone中,对DRM提供了默认的支持, 利用setStreamType()方法可以设置流类型,利用isPlaying()方法可以判断流的播放状态。
          如果希望获得铃声列表,可以通过Action为ACTION_RINGTONE_PICKER的Intent进行,
实现过程如下:
          代码:获取铃声列表
          private void doPickRingtone() 
              {
      Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
      //允许设置默认铃声
      intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
      / 仅显示TYPE_RINGTONE类型
      intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
      // 不显示静音
      intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
      Uri ringtoneUri;
      if (mCustomRingtone != null) {
      ringtoneUri = Uri.parse(mCustomRingtone);
      } else {
      ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
      }
      intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
      startActivityForResult(intent, RINGTONE_PICKED);
      }