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 ...
随机推荐
- PKU 3281 Dining 网络流 (抄模板)
题意: 农夫约翰为他的牛准备了F种食物和D种饮料.每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛.最多能有多少头牛可以同时得到各自喜欢的食物和饮料? 思路: 用 s -> 食物 ...
- 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory
[题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...
- Java基础学习总结(16)——Java制作证书的工具keytool用法总结
一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...
- ECNUOJ 2855 贪吃蛇
贪吃蛇 Time Limit:1000MS Memory Limit:65536KBTotal Submit:480 Accepted:109 Description 相信很多人都玩过这个游戏,当然 ...
- 洛谷 P3068 [USACO13JAN]派对邀请函Party Invitations
P3068 [USACO13JAN]派对邀请函Party Invitations 题目描述 Farmer John is throwing a party and wants to invite so ...
- [React] Pass a function to setState in React
In React, when you want to set the state which calculation depends on the current state, using an ob ...
- HIVE JOIN_1
HIVE JOIN 概述 Hive join的实现包含了: Common (Reduce-side) Join Broadcast (Map-side) Join Bucket Map Join So ...
- Android Retrofit网络请求Service,@Path、@Query、@QueryMap、@Map...
http://blog.csdn.net/jdsjlzx/article/details/51607867
- ToF相机学习笔记之基本知识
ToF相机属于一种非接触式光学传感器,通过计算发射激光的飞行时间获取对应像素的深度信息.就非接触式距离测量方法而言,其分类可用下表表示如下: 1.1 ToF传感器基础 一个逐点式的ToF传感器采用了雷 ...
- excel操作小技巧
excel拼接sql语句时,时间格式问题 问题:若直接插入时间的单元格 :="insert into t_entity_car (create_time,name,age) value (' ...