Android手机铃声代码实现

网上查了很多例子,都有点问题,综合几个自己写了个可以设置铃声、通知声音、闹钟声音和所有声音功能的方法。

首先写一个常量类(定义想要设置为那种铃声的标示):

AppConstant.java

public interface AppConstant {

   

    public static final int RINGTONE = 0;                   //铃声

    public static final int NOTIFICATION = 1;               //通知音

    public static final int ALARM = 2;                      //闹钟

    public static final int ALL = 3;                        //所有声音

}

 


此方法需要传入想要设置为铃声的全路径(如:/mnt/sdcard/mp3/a.mp3 ),和想要设置为那种铃声的标示:

private void setVoice(String path2,int id)

    {

       ContentValues cv = new ContentValues();

       Uri newUri = null;

       Uri uri = MediaStore.Audio.Media.getContentUriForPath(path2);

       // 查询音乐文件在媒体库是否存在

       Cursor cursor = this.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path2 },null);

       if (cursor.moveToFirst() && cursor.getCount() > 0)

       {

           String _id = cursor.getString(0);

           switch (id) {

              case AppConstant.RINGTONE:

                  cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);

                  cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);

                  cv.put(MediaStore.Audio.Media.IS_ALARM, false);

                  cv.put(MediaStore.Audio.Media.IS_MUSIC, false);

                  break;

              case AppConstant.NOTIFICATION:

                  cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);

                  cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);

                  cv.put(MediaStore.Audio.Media.IS_ALARM, false);

                  cv.put(MediaStore.Audio.Media.IS_MUSIC, false);

                  break;

              case AppConstant.ALARM:

                  cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);

                  cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);

                  cv.put(MediaStore.Audio.Media.IS_ALARM, true);

                  cv.put(MediaStore.Audio.Media.IS_MUSIC, false);

                  break;

              case AppConstant.ALL:

                  cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);

                  cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);

                  cv.put(MediaStore.Audio.Media.IS_ALARM, true);

                  cv.put(MediaStore.Audio.Media.IS_MUSIC, false);

                  break;

   

              default:

                  break;

           }

          

           // 把需要设为铃声的歌曲更新铃声库

           getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + "=?",new String[] { path2 });

           newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));

          

         // 一下为关键代码:

           switch (id) {

              case AppConstant.RINGTONE:

                  RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);

                  break;

              case AppConstant.NOTIFICATION:

                  RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);

                  break;

              case AppConstant.ALARM:

                 RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);

                  break;

              case AppConstant.ALL:

                  RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);

                  break;

   

              default:

                  break;

           }

          

           //播放铃声

//         Ringtone rt = RingtoneManager.getRingtone(this, newUri);

//         rt.play();

       }

    }
 

 

Android源码铃声汇总 最近研究源码程序,改了改手机短信铃声的源码,最近总结了下铃声的代码,写个activity继承PreferenceActivity有:手机短信铃声,手机铃声,闹钟铃声,还有sdcard中的铃声,通过选择相应的铃声,然后读取到xml文件里面,通过读取preference.xml文件,intent传个参数进去intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, phoneUri);打开对话框的时候就默认选中上次被选中的音乐。程序流程:在onCreate()方法中加入addPreferencesFromResource(R.xml.preferences);加载xml文件。@Override重写onPreferenceTreeClick()方法,处理点击事件,在打开对话框铃声的时候,先读取xml文件,判断是否有值,如果有值,就传值intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, phoneUri);然后进行选择铃声。通过onActivityResult()接受传递过来的uri,系统默认的铃声是通过data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);方法来获取uri的,而sdcard中的铃声通过Uri pickedUri = data.getData();来获得选中的uri的,再然后通过editor.commit(); 来提交接受过来的uri和音乐的名字整个流程大概就是这样。 csdn博客有截图: http://blog.youkuaiyun.com/wdaming1986/article/details/6919653 立即下载

相关推荐

Android系统音量条实例代码

主要介绍了Android系统音量条实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

android播放铃声代码,android 播放来电铃声

android中如何用mediaplayer播放自己设置的来电铃呢?最近做一个android小应用的时候需要用到这个。上网查了一下,可以用mediaplayer播放自己的闹钟和来电铃声。十分感谢这万能的网络,这里也和大家分享一下。Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);MediaPlayer ...

weixin_34641420的博客 551

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2785

android播放铃声代码,Android Mediaplayer-一次播放铃声

我发现了使用事件的简单解决方案-确认答案,因为它可以解决您的问题:)mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {@Overridepublic void onSeekComplete(MediaPlayer mediaPlayer) {mediaPlayer.stop();}});记...

weixin_34274954的博客 394

hspice2016安装教程

试装系统:win10 64bit 安装包路径和安装路径最好都不要出现中文,一般选择默认安装在C盘。 1.解压安装包压缩文件。 2.以管理员身份运行hspice_vL-2016.03-2_win.exe。 3.点击“Next”。 4.选择“I accept”,然后点击“Next”。 5.点击“Next”。 6.一般默认安装路径即可,然后点击“Next”。 7.点击“Next”. 8.点击“Next”。 9.正...

谢谢关注“小鱼教你模数电”,各平台同号 1万+

手把手教你用MATLAB/Simulink模拟微电网潮流方向(附代码下载)

本文提供了一份详细的MATLAB/Simulink微电网潮流仿真实战指南。通过手把手教学,指导读者从零搭建包含光伏、储能和负荷的微电网模型,并模拟并网、孤岛等多种运行场景下的潮流方向变化。文章核心在于利用Simulink实现微电网的动态潮流分析与可视化,帮助工程师深入理解分布式能源系统中的功率平衡与控制策略。

weixin_28314575的博客 106

android声音和振动代码,Android消息提示音和振动管理类

Android消息提示音和振动管理类主要参考ZXing中的声音管理类BeepManager中集成了声音播放和振动参考的文章在末尾,有兴趣的可以也读一下设置一些默认的全局参数设置音量设置振动时长代码/*** 类描述:消息提示音和振动管理类* 创建人:吴冬冬* 创建时间:2019/1/28 15:15*/class BeepAndVibrateManager constructor(context: ...

weixin_42298105的博客 390

【FPGA教程案例87】加解密1——基于FPGA的AES加解密算法verilog实现

DES已走到了它生命的尽头。56比特密钥实在太小,虽然三重DES可以解决密钥长度的问题,但是DES的设计主要针对硬件实现,而今在许多领域,需要用软件方法来实现它,在这种情况下,它的效率相对较低。1997年4月15日美国国家标准和技术研究所(NIST)发起征集AES(Advanced Encryption Standard)算法的活动,并成立了AES工作组。目的是为了确定一个非保密的、公开披露的、全球免费使用的加密算法,用于保护下一世纪政府的敏感信息。这里,我们对AES的基本原理进行介绍:

FPGA/MATLAB学习教程/源码/项目合作开发 2546

android10.0的来电铃声代码流程

好的。Android 10.0 的来电铃声流程如下: 电话接收器接收到来电信号时,会触发来电广播。 广播接收器监听来电广播,并收到广播后进行处理。 广播接收器会根据当前的来电铃声设置(包括默认铃声、联系人特别设置的铃声等),来决定使用哪个铃声文件。 广播接收器会使用媒体播放器播放所选定的铃声文件。 用户接听或拒接电话时,媒体播放器会停止播放铃声。 希望这能帮到你。 ...

weixin_35755640的博客 418

【Flutter 问题系列第 85 篇】Xcode 运行 Flutter 提示 The Dart VM Service was not discovered after 60 seconds.

在 Xcode 上运行 Flutter 时提示 `The Dart VM Service was not discovered after 60 seconds. This is taking much longer than expected...`,意思是 `60秒后未发现Dart虚拟机服务。这比预期的要长得多`

“Allen Su”的博客 2236

看懂特斯拉IMU底层逻辑,才懂农业机器人不可替代的核心技术壁垒

在自动驾驶与具身智能赛道,特斯拉彻底重构了IMU(惯性测量单元)的技术定位,打破行业“IMU仅为辅助补盲配件”的固有认知,将其从底盘附属硬件升级为纯视觉感知体系的物理核心基座。依托500–1000Hz超高刷新率、无外部依赖的惯性感知能力、端到端神经网络融合架构,特斯拉实现了“视觉感知环境、IMU定义运动”的技术闭环,摆脱对激光雷达、高精地图、卫星定位的强依赖。这套技术逻辑落地农业机器人赛道,不再是技术优化,而是规模化落地的生存刚需。城市自动驾驶属于结构化稳定场景,IMU仅作误差修正的锦上添花;

getusushu的博客 49

android铃声代码,Android之来电铃声设置(示例代码)

Android之来电铃声设置从文件管理器中设置一首歌曲为来电铃声铃声,进入拨号盘设置中点击提示音和振动,来电铃声就会变成默认铃声从文件管理器中设置一首歌曲为来电铃声铃声,进入拨号盘设置中点击提示音和振动,来电铃声就会变成默认铃声歌曲是SD卡中的1.进入文件管理器2.从SD卡中设置一首歌曲为来电铃声3.进入settings》》提示音和通知》》手机铃声,查看来电铃声的歌曲是刚刚设置的外部歌曲4.进入拨...

weixin_39872334的博客 1387

STM32入门教程:图像处理

然后,我们使用 STM32 的 DSP 模块中的 arm_mean_u8 函数计算原始图像的平均值,并将结果存储在 meanValue 变量中。然后,我们需要编写代码配置 STM32 的外部中断输入引脚,并在中断处理函数中读取 OV7670 摄像头模块输出的图像数据。然后,我们需要编写代码配置 STM32 的 USB OTG 接口,并在回调函数中读取 USB 摄像头输出的图像数据。一、图像采集 图像采集是图像处理的第一步,我们需要将外部图像源的数据导入到 STM32 中进行处理。

2401_85625565的博客 1616

Android开发之手机铃声代码实现

如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库。如:path传入:/mnt/sdcard/mp3/a.mp3 //设置--铃声的具体方法      public void setMyRingtone(String path)      {         File sdfile = new File(path);        ContentValues values = new Co

我的博客 2756

OSCP-1-3-natraj(本地文件包含、日志中毒、apache2配置漏洞、nmap提权)

像往常一样,我们将使用“Netdiscover”工具识别主机的 IP。所以,让我们首先用 nmap 列出所有 TCP 端口。我们从访问web服务(80端口)开始,在那里我们找到了几张关于Natraj的图片和信息,我们将查看源代码和robots.txt,似乎没有什么有用的。(或至少,目前)。因此,让我们继续进行。在 Dirb 及其默认字典的帮助下,我们找到了一个名为“”的目录。我们进入并列出一个名为“”的文件:如果我们执行它,我们会看到它什么也不做。我们可能需要添加其他内容。

墨痕诉清风的博客 529

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 自定义铃声 代码,Android通过代码设置铃声

对安卓手机进行铃声操作,设置默认铃声、删除当前默认铃声、更改铃声以默认振铃为例子,通过代码设置手机铃声设置默认振铃// 将铃声的路径插入contentResolver,以数据库的形式插入/*** 设置默认振铃* @param musicInfo 歌曲信息* @param ringtoneFile 振铃文件,包含绝对路径*/private void setRingtoneImpl(MusicInfo...

weixin_31859675的博客 618

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android中手机声音调节步骤

Android中手机声音调节步骤: a、通过系统服务获得声音管理器: AudioManager audioManager =  (AudioManager)getSystemService(Service.AUDIO_SERVICE); b、根据实际需要调用适当的方法:(常用方法) audioManager.adjustStreamVolume(int streamType, int  d

人丑多读书 1403

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 设置来电铃声

亲测可用(记得加权限)      /*   *   设置铃声   */  public static void setMyAlarm(Context ct,String path)  {    File sdfile = new File(path);     Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfi

凡夫俗子 739

设置铃声

1、权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 2、代码 public void setPhoneMusic() { //设置当前文件存放音乐为手机铃声 Intent intent = new Intent(Ri...

aisanhu9928的博客 171
上一篇: Android手机铃声代码实现
下一篇: JDBC连接Oracle数据库的语法
ehlxr
博客等级 码龄16年 3粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值