因为有个需求是在自己的app中添加铃声并播放,而之前在网上查阅了相关的资料却大多都是教人怎么设置手机来电、闹钟等手机系统的功能,所以就以此文章作为记录。

一.本篇文章的大致内容是:

1.调用系统铃声界面选择铃声;

2.播放该选择的铃声;

3.再次调用系统铃声界面时,默认勾选之前已经选择过的铃声;

4.非常重要的权限要加上;

二.图示

界面代码很简单,顾名思义。

三.部分逻辑代码实现

①调用系统铃声界面传递当前铃声数据,并选择新的铃声

  //选择铃声public void toChoose(View view) {Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知铃声");if (myUriStr != null) {<span style="color:#3366ff;">intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(myUriStr));</span>//将已经勾选过的铃声传递给系统铃声界面进行显示}startActivityForResult(intent, 0);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {try {<span style="color:#3366ff;">Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);</span>//获取用户选择的铃声数据myUriStr = pickedUri.toString();} catch (Exception e) {e.printStackTrace();}}

②播放当前选择的铃声

 //播放铃声public void toPlay(View view) {if (myUriStr == null) {//如果未自定义铃声,则调用系统默认的铃声mMediaPlayer = MediaPlayer.create(this, getSystemDefaultRingtoneUri());} else {mMediaPlayer = MediaPlayer.create(this, Uri.parse(myUriStr));if(mMediaPlayer == null){Toast.makeText(this,"该铃声不存在,请重新选择",Toast.LENGTH_LONG).show();return;}}mMediaPlayer.setLooping(false);try {mMediaPlayer.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mediaPlayer) {mMediaPlayer.start();}});}

至此,你以为就完了?

其实还差非常重要的一步,需要加上相应的权限:

<!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

如果不加上以上权限,可能导致的问题是:有些铃声能播放,有些铃声播放不了(音乐歌曲文件是无法播放的)。而通过日志的情况来看,所有的铃声包括音乐歌曲都是有Uri的,既然都有Uri,为什么还播放不出来呢?一般情况下手机系统出错的可能性会非常小,何况这么大的错误怎么可能出来?因为所有音乐歌曲文件无法播放,而这些文件都是放在sd卡,也就是外部文件的,因此——>需要加上相应的外部文件访问等权限。

最后,完整的代码可以戳这里>>:点击打开链接

Android 设置铃声——给app设置自定义铃声功能相关推荐

  1. Android自定义壁纸预览界面,Android仿主流壁纸App设置界面

    摘要:项目中做到在线壁纸应用,在壁纸设置界面也是参考了主流壁纸应用的做法,例如小米,vivo,搜狗等都是采用了类似下图的界面布局.这里将介绍如何做出类似布局和功能. 在图中,当手指滑动滑块的时候,背景 ...

  2. Android使用SharedPreferences存储APP设置参数

    一.什么是SharedPreferences? android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据. Android数据持久化方法中最简单的一 ...

  3. 易生活评论功能android,易生活(二)-APP—安卓中评论功能的实现

    如何实现点击"评论"之后跳出拼音输入法,代码如下: /** * 显示或隐藏输入法 */ private void onFocusChange(boolean hasFocus) { ...

  4. android 让app全屏显示,Android app设置全屏模式

    Android中,为APP设置全屏模式,主要有如下几种方式: 在manifest中设置 在项目中找到AndroidManifest.xml配置文件,找到Activity所在的节点,添加theme. p ...

  5. 自定义注解在拦截器中为空_如何在Android中为特定联系人设置自定义铃声

    自定义注解在拦截器中为空 Everyone likes to know who's calling before they actually pick up the phone, and the ea ...

  6. app推送以及提示音java,APP集成小米消息推送自定义铃声设置

    目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管你的APP ...

  7. 短信 铃声设置成功 android,Android(安卓)如何设置手机铃声(自定义铃声)

    一般Android操作系统的手机具有四种铃声可以设置,分别为:来电.短信.闹钟.系统等种类铃声,这里我为大家介绍系统自带铃声的设置. 工具/原料 Android操作系统 步骤/方法 打开Android ...

  8. android 设置系统铃声设置在哪里,安卓手机自定义设置的系统铃声通用方法

    安卓手机自定义设置的系统铃声通用方法 安卓手机自定义设置的系统铃声通用方法 很多使用安卓系统手机的新手,不知道怎么设置自己下载的铃声,以前发过一篇老方法,但是不怎么完美.现在给大家分享一种新方法.如下 ...

  9. android qq 铃声大小设置,手机QQ自定义铃声怎么设置?手机QQ自定义铃声设置教程...

    怎么设置手机QQ自定义铃声?手机QQ提示声怎么自定义?关于自定义手机QQ铃声的教程尽在腾牛个性网,本站提供无需ROOT,超级简单的修改提示音方法,相信对大家有所帮助. 对于手机QQ万年不变提示铃声我想 ...

最新文章

  1. 测试和恢复性的争论:面向对象vs.函数式编程
  2. uva 12508 - Triangles in the Grid(几何+计数)
  3. 微信小程序报错 .wxss 无法找到
  4. Qt之QThread用法
  5. 设置servlet或action作为欢迎页面
  6. 带有服务器回调的通用客户端——服务器 DotNet远程处理
  7. OpenSea2月总交易额为9390.4万美元 用户总数突破5万人
  8. win10虚拟机搭建Hadoop集群(已完结)
  9. php给img标签加alt属性
  10. html5版微博qq登录,QQ和新浪微博登陆第三方的简单实现
  11. 怎么判断笔记本显卡性能?笔记本显卡和台式机显卡性能差距大吗
  12. 【解决方案】SkeyeVSS综合安防视频云服务在零售连锁巡店中的应用
  13. qt 修改.exe文件图标_如何在没有错误的情况下更改压缩的.EXE文件上的图标
  14. 7-4 sdut-C语言实验-分割整数
  15. 异型窗体制作(两种方法)
  16. 硬盘空间免费扩容2T!!!
  17. python中and怎么计算_Python中 and,or 的计算规则
  18. Mybatis中的<![CDATA[ ]]>作用
  19. 用Unity做半个2D战棋小游戏
  20. spring(转账为例)四种实现方式一

热门文章

  1. 第八章 linux系统引导过程及引导修复
  2. heur.riskfm.bbx病毒解决方案--www.baoluowanxiang.com
  3. sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
  4. 如何将eml格式转换成word文档
  5. 4天接待180万游客!里昂灯光节的这些作品你都看懂了吗?
  6. 赵雅智_名片夹(4)_Android中listview可折叠伸缩仿手风琴效果(静态)
  7. C4.5(决策树预测)算法
  8. 别害怕,C++容器的迭代器其实好用又不难
  9. 工程师的浪漫:用机械臂画一个爱心
  10. NGS数据分析实践:03. 涉及的常用数据格式[4] - bed和Wiggle/Bigwig/bedgraph格式