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机制建立联系。

自己查了下资料,感觉应该就是控制什么音频解析的吧

时间: 2024-10-08 22:24:33

RingtoneManager-获得系统当前的铃声的相关文章

ios系统铃声调用方法

首先,这里我要说明这里并不是真正调用系统内部自带的铃声,因为苹果是不允许开发者调用的,没有给开发者接口:如果调用了就无法上线的!那为什么AppStore里面还有那么多app显示的效果是调用系统的铃声一样呢?为什么就能上线呢?其实不然,他们是使用了系统一样的铃声!也就说他们录制和系统铃声相似,然后包含进他们的bundle中来实现的. 所以,我们想要实现调用系统铃声的效果,只能通过这个途径:把音频文件捆绑经我们的bundle中来调用,播放! 给一个网址,里面好多苹果系统铃声(ios8的也有啦....

android如何替换contact的来电铃声

如果知道contactId,那么可以这样获取已有的ringtone: public String getContactRington(long contactId) { String rington = ""; String[] projection = { ContactsContract.Contacts.CUSTOM_RINGTONE }; Uri contactUri = ContentUris.withAppendedId( ContactsContract.Contacts

Android开发之设置铃声

首先介绍一下Android系统支持的铃声格式.有以下几种: 64赫兹Midi,AAC.AAC+.AMR.WAV.MP3.Real Audio.WMA.OGG等格式. 将音频文件设置成铃声很简单,只需如下几步即可: 1) 获取系统音频文件的Uri Uri uri =MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());//获取系统音频文件的Uri 2) 将文件插入系统媒体库,并获取新的Uri Uri newUri =

23、铃声设置

Android系统的铃声 Android本身提供了一些默认的铃声文件,这些文件都放在“/system/media/audio”目录中.如果是我们自己下载的铃声文件(一般为mp3音频文件),可以放在SD卡的music目录.铃声主要有3种:一般的铃声(如来电铃声).闹钟铃声和通知铃声.这3种铃声要分别放在如下的目录. /sdcard/music/ringtones:一般的铃声,如来电铃声. /sdcard/music/alarms:闹钟铃声. /sdcard/music/notifications:

Android 音频系统:从 AudioTrack 到 AudioFlinger

1. Android 音频框架概述 Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出.音频流的控制.音频设备的管理.音量调节等,主要包括如下部分: Audio Application Framework:音频应用框架 AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类 AudioRecord:负责录音数据的采集,属 Android 应用框架 API 类 AudioSystem: 负责音频事务的综合管理,属 Android 应

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

获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到. JAVA代码:AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO

Android系统根目录结构及说明

Android的系统分区可以通过shell命令 df 查看: 具体可以参考我的上一篇文章:Android分区解释 Android根目录结果如下图所示: 其中主要的目录是system和data,也是下文主要描述的目录. /system/app/ 此目录存放系统程序 系统原程序 手机厂商定制软件 ROOT后可在里面删除定制软件(需谨慎) /system/bin/ 此目录存放的主要是Linux系统自带的组件 /system/build.prop 是一个属性文件,在Android系统中.prop文件很重

安卓系统手机目录

一.文件夹 1./acct/    系统回收站,删除的系统文件. 2./cache/    缓存 3./data/    用户的所有程序相关数据 app/    所有用户安装的apk文件 app-private/ data/    每一个应用的数据 com.xx.appname/    每一个应用的数据都存放在本目录下的一个以包名为命名的文件夹 cache/ lib/ files/ shared_prefs/ system/    安装app会在这里进行注册表的配置 package.xml   

android-铃声的设置与播放

在android系统中,不同铃声存放的铃声路径: /system/media/audio/ringtones 来电铃声 /system/media/audio/notifications 短信通知铃声 /system/media/audio/alarms 闹钟铃声 铃声的设置: import java.io.File; import android.app.Activity; import android.content.Intent; import android.media.Ringtone