当前位置: 安卓之星 -> 安卓开发 -> Android RingtoneManager 铃声管理

Android RingtoneManager 铃声管理

作者:网络 发表于: 2017-01-01 点击: 962 次

对于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);

}

相关文章

相关文章

赶快留言冒泡

  • 评论 (0)
  • 引用通告 (0)
目前还没有任何评论.
目前还没有任何Trackbacks和Pingbacks.
吐个泡浮上去.