RingtoneManager-获得系统当前的铃声
我们直接看代码
bt1 = (Button) findViewById(R.id.bt1);
bt2 = (Button) findViewById(R.id.bt2);
bt3 = (Button) findViewById(R.id.bt3);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//获得手机提示音
if (mNotificationUri_notify == null) {
mNotificationUri_notify = RingtoneManager
.getActualDefaultRingtoneUri(MainActivity.this,
RingtoneManager.TYPE_NOTIFICATION);
}
if (mNotificationUri_notify != null && mRingtone_notify == null) {
String string = mNotificationUri_notify.toString();
tv.setText(string);
mRingtone_notify = RingtoneManager.getRingtone(
getApplicationContext(), mNotificationUri_notify); } if (mRingtone_notify != null) {
if (mRingtone_notify.isPlaying()) {
mRingtone_notify.stop();
} else {
mRingtone_notify
.setStreamType(AudioManager.STREAM_NOTIFICATION);
mRingtone_notify.play();
}
}
}
});
bt1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
//获得手机来电铃声
if (mNotificationUri_telephone == null) {
mNotificationUri_telephone = RingtoneManager
.getActualDefaultRingtoneUri(MainActivity.this,
RingtoneManager.TYPE_RINGTONE);
} if (mNotificationUri_telephone != null
&& mRingtone_telephone == null) {
mRingtone_telephone = RingtoneManager
.getRingtone(getApplicationContext(),
mNotificationUri_telephone);
} if (mRingtone_telephone != null) {
if (mRingtone_telephone.isPlaying()) {
mRingtone_telephone.stop();
} else {
mRingtone_telephone
.setStreamType(AudioManager.STREAM_RING);
mRingtone_telephone.play();
}
} }
});
bt3.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
if (mNotificationUri_alarm == null) {
//获得手机闹钟铃声
mNotificationUri_alarm = RingtoneManager
.getActualDefaultRingtoneUri(MainActivity.this,
RingtoneManager.TYPE_ALARM);
}
if (mNotificationUri_alarm != null && mRingtone_alarm == null) {
mRingtone_alarm = RingtoneManager.getRingtone(
getApplicationContext(), mNotificationUri_alarm);
} if (mRingtone_alarm != null) {
if (mRingtone_alarm.isPlaying()) {
mRingtone_alarm.stop();
} else {
mRingtone_alarm
.setStreamType(AudioManager.STREAM_ALARM);
mRingtone_alarm.play();
}
} } });
上面的代码就是获得手机三个铃声的代码。
其实,获得手机铃声的操作也很简单。
它主要就涉及两个类
1.RingtoneManager-铃声管理类
2.Ringtone-铃声操作类
基本上就是三个步骤
1.获得Uri
获得Uri的方法,需要传入一个参数 RingtoneManager.TYPE_NOTIFICATION(STREAM_NOTIFICATION..)就是
这个参数决定了我们获得的是何种提示音
2.获得Ringtone
获得它的方法需要把第一步得到的Uri传进来,就可以得到相应的铃声了
3.操作铃声
直接只用play() stop()控制铃声的停止跟播放。
上面有一个方法
mRingtone_alarm.setStreamType(AudioManager.STREAM_ALARM);
说是设置音频流的,这个音频流到底是什么东西,也不懂,就看到有人说
Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类 的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合 (Mixer),然后输送到AudioHardware中进行播放。AudioTrack和AudioFlinger的通信机制通 常,AudioTrack和AudioFlinger并不在同一个进程中,它们通过android中的binder机制建立联系。
自己查了下资料,感觉应该就是控制什么音频解析的吧
RingtoneManager-获得系统当前的铃声的更多相关文章
- Android之开启手机系统自带铃声
/** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...
- iOS 播放系统自带铃声
播放声音代码例子 https://github.com/baitongtong/git-.git 给一个国外网址,苹果系统铃声以及自定义铃声免登陆免费下载:http://www.zedge.net/r ...
- ios系统铃声调用方法
首先,这里我要说明这里并非真正调用系统内部自带的铃声,由于苹果是不同意开发人员调用的,没有给开发人员接口.假设调用了就无法上线的! 那为什么AppStore里面还有那么多app显示的效果是调用系统的铃 ...
- Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
OS: Android 8.1 需求分析 1.禁止系统来电铃声,提供接口给客户自己播放铃声 2.禁止系统拉起来去电页面(InCallActivity),消息通知客户拉起自己的来去电页面 3.禁止来电消 ...
- iOS播放铃声及震动,适用于扫描、新消息等
iOS播放铃声或者设置震动实现: 铃声: SystemSoundID soundID = 1007; AudioServicesPlaySystemSound(soundID); ...
- Android系统默认设置
修改Settings源码,可修改系统设置项,Settings数据被存放于com.android.providers.settings/databases/settings.db中,如果想修改系统启动后 ...
- iPhone系统常用文件夹位置
1. [/Applications] 常用软件的安装目录 2. [/private /var/ mobile/Media /iphone video Recorder] iphone v ...
- [转]android系统各种音量的获取与设置
获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamV ...
- android系统各种音量的获取与设置
获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法: publicvoidsetStream ...
随机推荐
- WHU 1538 Stones II 动态规划
赛后写的,动态规划,学长和题解,提供了两种状态设计的思路,都写了下……结果在写第二种的时候,不小心把下标的起点写错了,导致WA了无数发…… 无奈啊……每次都是这种错误…… 题意: 大概就是有n块石头, ...
- apache kafka监控系列-KafkaOffsetMonitor
apache kafka中国社区QQ群:162272557 概览 近期kafka server消息服务上线了,基于jmx指标參数也写到zabbix中了.但总认为缺少点什么东西.可视化可操作的界面. z ...
- caioj1441:第k小的数Ⅰ
[传送门:caioj1441] 简要题意: 给出一个n个数的序列,m个询问,每个询问输入l,r,k,输出第l个数到第r个数第k小的数 题解: 首先想到线段树,但是做不到询问区间的第几小,只能做到最大或 ...
- Firefox访问https的网站,一直提示不安全
http://mozilla.com.cn/thread-374897-1-1.html 要激活此功能步骤如下: 在地址栏键入"about:config" 点击“我了解此风险” 在 ...
- php中局部变量和全局变量
php中局部变量和全局变量 代码1:函数内部使用函数外部变量错误方法 <?php $name = 'fish'; function animal() { echo $name; } animal ...
- 129.C++面试一百题(1-51)
- 暑假集训-WHUST 2015 Summer Contest #0.2
ID Origin Title 10 / 55 Problem A Gym 100625A Administrative Difficulties 4 / 6 Problem B Gym 1006 ...
- Linux企业应用--RHAS 2.1 下安装中文 Lotus Domino R 6.5 图解
原文请到ftp.jms165.com下载,是用上传用户 (RHAS3+ksnapshot+OperOff ...
- JS中部分 Array 对象方法介绍
1.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本 <script type="text/javascrip ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...