android常用工具类之铃声、音量的设置

/**
 * 
 * @author lll
 * @version 1.0 Create on 2013-12-11 上午10:06:09
 * @Description: 音量,铃声操作工具类 (注意权限)
 */
public class RingtoneUtils {
	private static RingtoneUtils utils = null;

	private synchronized RingtoneUtils getInstances() {
		if (utils == null) {
			utils = new RingtoneUtils();
		}
		return utils;
	}

	/**
	 * 
	 * @description: 获取系统各个类型的音量
	 * @param audioManager
	 *            :铃声操作管理类
	 * @param type
	 *            :铃声类型,常见的铃声类型有 AudioManager.STREAM_ALARM; AudioManager.STREAM_DTMF; AudioManager.STREAM_MUSIC; AudioManager.STREAM_NOTIFICATION; AudioManager.STREAM_RING;
	 *            AudioManager.STREAM_VOICE_CALL; AudioManager.STREAM_SYSTEM;
	 * @return
	 */
	public int[] getVolume(AudioManager audioManager, int type) {
		int[] VolumeValues = new int[2];
		// type类型的最大铃声
		VolumeValues[0] = audioManager.getStreamMaxVolume(type);
		// type类型的现在铃声
		VolumeValues[1] = audioManager.getStreamVolume(type);
		return VolumeValues;
	}

	/**
	 * 
	 * @description:设置type类型的音量
	 * @param audioManager
	 * @param type
	 *            :需要设置音量的声音类型
	 * @param volumeValue
	 *            :设置的值
	 * @param flags
	 *            :设置声音时是否显示播放条或者播放声音AudioManager.FLAG_PLAY_SOUND,播放音乐; AudioManager.FLAG_SHOW_UI;显示声音进度条
	 */
	public void setVolume(AudioManager audioManager, int type, int volumeValue, int flags) {
		int maxValue = audioManager.getStreamMaxVolume(type);
		if (volumeValue > maxValue) {
			volumeValue = maxValue;
		}
		audioManager.setStreamVolume(type, volumeValue, flags);
	}

	/**
	 * 
	 * @description: 获取type类型的铃声(最好在异步线程里面操作)
	 * @param ctx
	 * @param type
	 *            RingtoneManager.TYPE_RINGTONE;//响铃铃声,主要是电话; RingtoneManager.TYPE_ALARM;//警告铃声,主要是闹钟 ;RingtoneManager.TYPE_NOTIFICATION;//通知铃声,主要是短信
	 * @return
	 */
	public String getRingtoneName(Context ctx, int type) {
		// 获取type类型铃声的URL
		Uri ringtoneUrl = RingtoneManager.getActualDefaultRingtoneUri(ctx, type);
		// 获取type类型的铃声对象Ringtone
		Ringtone tone = RingtoneManager.getRingtone(ctx, ringtoneUrl);
		String name = null;
		if (tone != null) {
			name = tone.getTitle(ctx);
		}
		return name;
	}

	/**
	 * 
	 * @description: 打开铃声列表的界面
	 * @param type
	 *            :打开的类型RingtoneManager.TYPE_RINGTONE;//响铃铃声,主要是电话; RingtoneManager.TYPE_ALARM;//警告铃声,主要是闹钟 ;RingtoneManager.TYPE_NOTIFICATION;//通知铃声,主要是短信
	 * @param title
	 *            :列表界面的title
	 */
	public void openSettingRingtone(Activity activity, int type, String title) {
		Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
		intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, type);
		intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, title);
		activity.startActivityForResult(intent, type);
	}

	/**
	 * 
	 * @description: 在铃声列表界面选择铃声过后设置铃声的逻辑即onActivityResult()方法里面的逻辑(最好在异步线程里面操作)
	 * @param ctx
	 * @param type
	 * @param result_Data
	 *            :铃声列表界面返回的数据
	 * @return 设置成功或者失败
	 */
	public boolean settingRingtone(Context ctx, int type, Intent result_Data) {
		// 获取铃声列表界面返回的铃声URI
		Uri resultUri = result_Data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
		if (resultUri != null) {
			RingtoneManager.setActualDefaultRingtoneUri(ctx, type, resultUri);
			return true;
		} else {
			return false;
		}
	}

}

你可能感兴趣的:(android基础之常用工具类)