/**
*
* @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常用工具类之铃声、音量的设置
最新推荐文章于 2021-05-26 01:44:24 发布