我们直接看代码

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-获得系统当前的铃声的更多相关文章

  1. Android之开启手机系统自带铃声

    /** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...

  2. iOS 播放系统自带铃声

    播放声音代码例子 https://github.com/baitongtong/git-.git 给一个国外网址,苹果系统铃声以及自定义铃声免登陆免费下载:http://www.zedge.net/r ...

  3. ios系统铃声调用方法

    首先,这里我要说明这里并非真正调用系统内部自带的铃声,由于苹果是不同意开发人员调用的,没有给开发人员接口.假设调用了就无法上线的! 那为什么AppStore里面还有那么多app显示的效果是调用系统的铃 ...

  4. Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)

    OS: Android 8.1 需求分析 1.禁止系统来电铃声,提供接口给客户自己播放铃声 2.禁止系统拉起来去电页面(InCallActivity),消息通知客户拉起自己的来去电页面 3.禁止来电消 ...

  5. iOS播放铃声及震动,适用于扫描、新消息等

    iOS播放铃声或者设置震动实现:   铃声:     SystemSoundID soundID = 1007;     AudioServicesPlaySystemSound(soundID); ...

  6. Android系统默认设置

    修改Settings源码,可修改系统设置项,Settings数据被存放于com.android.providers.settings/databases/settings.db中,如果想修改系统启动后 ...

  7. iPhone系统常用文件夹位置

    1. [/Applications]   常用软件的安装目录 2.    [/private /var/ mobile/Media /iphone video Recorder]   iphone v ...

  8. [转]android系统各种音量的获取与设置

    获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamV ...

  9. android系统各种音量的获取与设置

    获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法: publicvoidsetStream ...

随机推荐

  1. 【UVa 116】Unidirectional TSP

    [Link]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  2. Java基础学习总结(22)——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要. package cn.javastudy.summary; public ...

  3. HDFS 断点续传,写文件功能

    实际上这是个 HDFS 的工具类部分代码. 首先 public static Configuration configuration = null;public static FileSystem f ...

  4. iOS数字媒体开发浅析

    概述 自然界中的所有看到的听到的都是模拟信号,模拟信号是随时间连续变化,然而手机电脑等信息都属于数字媒体,它们所呈现的内容就是把自然界中这些模拟信号转换成数字信号然后再传递给我们.数字信号不是连续的是 ...

  5. Use Uncertainty As a Driver

     Use Uncertainty As a Driver Kevlin Henney ConFRonTEd WiTH TWo opTionS, most people think that the ...

  6. HTML5学习笔记简明版(11):新增的API

    HTMLDocument上的扩展 HTML5在DOM Level 2 HTML上扩展了一些HTMLDocument的接口.这些接口在全部实现了Document接口的元素对象上进行了实现. HTML5在 ...

  7. Linux_Oracle10 下载安装

    Linux_Oracle10 安装文档及oracle下载地址 http://download.csdn.net/detail/u012750578/8177405 一.启动数据库服务 [root@hq ...

  8. 从Linux系统内存逐步认识Android应用内存

    总述 Android应用程序被限制了内存使用上限,一般为16M或24M(具体看系统设置),当应用的使用内存超过这个上限时,就会被系统认为内存泄漏,被kill掉.所以在Android开发时,管理好内存的 ...

  9. 分贝(dB)的理解

    分贝(dB,decibels)表达的是功率比(power ratio,P2/P1),而不是一个amount,P2>P1,分贝为正值,否则为负值.分贝是对数形式的,而不是线性形式的,也即 20 d ...

  10. CentOS下安装C/C++开发工具包的最佳方式

    如果你使用的是 Fedora, Red Hat, CentOS, 或者 Scientific Linux 系统,使用下面的命令安装GNU的C/C++开发包和编译器. # yum groupinstal ...