1、如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库。

  1. //设置--铃声的具体方法
  2. public void setMyRingtone(String path)
  3. {
  4. File sdfile = new File(path);
  5. ContentValues values = new ContentValues();
  6. values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
  7. values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
  8. values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
  9. values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
  10. values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  11. values.put(MediaStore.Audio.Media.IS_ALARM, false);
  12. values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  13. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  14. Uri newUri = this.getContentResolver().insert(uri, values);
  15. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
  16. Toast.makeText( getApplicationContext (),"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
  17. System.out.println("setMyRingtone()-----铃声");
  18. }
  19. //设置--提示音的具体实现方法
  20. public void setMyNotification(String path)
  21. {
  22. File sdfile = new File(path);
  23. ContentValues values = new ContentValues();
  24. values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
  25. values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
  26. values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
  27. values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  28. values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  29. values.put(MediaStore.Audio.Media.IS_ALARM, false);
  30. values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  31. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  32. Uri newUri = this.getContentResolver().insert(uri, values);
  33. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
  34. Toast.makeText( getApplicationContext (),"设置通知铃声成功!", Toast.LENGTH_SHORT ).show();
  35. System.out.println("setMyNOTIFICATION-----提示音");
  36. }
  37. //设置--闹铃音的具体实现方法
  38. public void setMyAlarm(String path)
  39. {
  40. File sdfile = new File(path);
  41. ContentValues values = new ContentValues();
  42. values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
  43. values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
  44. values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
  45. values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  46. values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  47. values.put(MediaStore.Audio.Media.IS_ALARM, true);
  48. values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  49. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  50. Uri newUri = this.getContentResolver().insert(uri, values);
  51. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
  52. Toast.makeText( getApplicationContext (),"设置闹钟铃声成功!", Toast.LENGTH_SHORT ).show();
  53. System.out.println("setMyNOTIFICATION------闹铃音");
  54. }

2、如果读取多媒体库的音频文件,设为铃声,使用以下方式:

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

  1. AppConstant.java
  2. public interface AppConstant {
  3. public static final int RINGTONE = 0;                   //铃声
  4. public static final int NOTIFICATION = 1;               //通知音
  5. public static final int ALARM = 2;                      //闹钟
  6. public static final int ALL = 3;                        //所有声音
  7. }

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

  1. private void setVoice(String path2,int id)
  2. 2
  3. 3     {
  4. 4
  5. 5        ContentValues cv = new ContentValues();
  6. 6
  7. 7        Uri newUri = null;
  8. 8
  9. 9        Uri uri = MediaStore.Audio.Media.getContentUriForPath(path2);
  10. 10
  11. 11        // 查询音乐文件在媒体库是否存在
  12. 12
  13. 13        Cursor cursor = this.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path2 },null);
  14. 14
  15. 15        if (cursor.moveToFirst() && cursor.getCount() > 0)
  16. 16
  17. 17        {
  18. 18
  19. 19            String _id = cursor.getString(0);
  20. 20
  21. 21            switch (id) {
  22. 22
  23. 23               case AppConstant.RINGTONE:
  24. 24
  25. 25                   cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
  26. 26
  27. 27                   cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  28. 28
  29. 29                   cv.put(MediaStore.Audio.Media.IS_ALARM, false);
  30. 30
  31. 31                   cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  32. 32
  33. 33                   break;
  34. 34
  35. 35               case AppConstant.NOTIFICATION:
  36. 36
  37. 37                   cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  38. 38
  39. 39                   cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  40. 40
  41. 41                   cv.put(MediaStore.Audio.Media.IS_ALARM, false);
  42. 42
  43. 43                   cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  44. 44
  45. 45                   break;
  46. 46
  47. 47               case AppConstant.ALARM:
  48. 48
  49. 49                   cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  50. 50
  51. 51                   cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  52. 52
  53. 53                   cv.put(MediaStore.Audio.Media.IS_ALARM, true);
  54. 54
  55. 55                   cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  56. 56
  57. 57                   break;
  58. 58
  59. 59               case AppConstant.ALL:
  60. 60
  61. 61                   cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
  62. 62
  63. 63                   cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  64. 64
  65. 65                   cv.put(MediaStore.Audio.Media.IS_ALARM, true);
  66. 66
  67. 67                   cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  68. 68
  69. 69                   break;
  70. 70
  71. 71
  72. 72
  73. 73               default:
  74. 74
  75. 75                   break;
  76. 76
  77. 77            }
  78. 78
  79. 79
  80. 80
  81. 81            // 把需要设为铃声的歌曲更新铃声库
  82. 82
  83. 83            getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + "=?",new String[] { path2 });
  84. 84
  85. 85            newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
  86. 86
  87. 87
  88. 88
  89. 89          // 一下为关键代码:
  90. 90
  91. 91            switch (id) {
  92. 92
  93. 93               case AppConstant.RINGTONE:
  94. 94
  95. 95                   RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
  96. 96
  97. 97                   break;
  98. 98
  99. 99               case AppConstant.NOTIFICATION:
  100. 100
  101. 101                   RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
  102. 102
  103. 103                   break;
  104. 104
  105. 105               case AppConstant.ALARM:
  106. 106
  107. 107                  RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
  108. 108
  109. 109                   break;
  110. 110
  111. 111               case AppConstant.ALL:
  112. 112
  113. 113                   RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);
  114. 114
  115. 115                   break;
  116. 116
  117. 117
  118. 118
  119. 119               default:
  120. 120
  121. 121                   break;
  122. 122
  123. 123            }
  124. 124
  125. 125
  126. 126
  127. 127            //播放铃声
  128. 129 //         Ringtone rt = RingtoneManager.getRingtone(this, newUri);
  129. 131 //         rt.play();
  130. 133        }
  131. 135     }
  • 上一篇如何使用真机调试Android应用
  • 下一篇java synchronized详解
0

Android 代码设置来电铃声相关推荐

  1. Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑

    最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...

  2. Android 设置来电铃声、通知铃声、闹钟铃声中的坑

    最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...

  3. android闹钟铃声编码,Android 设置来电铃声、通知铃声、闹钟铃声中的坑

    最新做项目,遇到一个铃声设置的bug,一直被延期了大半年,终于忍不住了,花了大半天时间来研究问题所在.其实这个功能百度一下有很多,但大部分都是同一篇文章,我们项目里最开始就是参考的百度的代码片段来实现 ...

  4. android 铃声设置失败,无法通过Android代码设置铃声

    我正在开发一个应用程序,它将随机设置用户已选择的铃声列表中的铃声.无法通过Android代码设置铃声 虽然我的代码适用于Android N及以上版本,但我遇到了Android M及以下版本的问题.我为 ...

  5. Android设置来电铃声和分享操作

    之前项目里写的设置来电铃声和分享音频文件如下: //设置来电铃声public void setAsRingTone(String path) {Log.d(TAG, "setAsRingTo ...

  6. android 代码设置EditText的hint字符

    今天,简单讲讲android里如何在代码里设置  EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...

  7. 苹果手机怎么设置来电铃声?4个步骤,快速学会

    相信有不少的小伙伴使用的手机是苹果手机.苹果手机虽然好用,但是每次来电的铃声都太过吵闹,有的小伙伴想要换一个苹果手机的来电铃声,却不知道应该怎么设置.苹果手机怎么设置来电铃声?本篇文章,小编将会以图文 ...

  8. ym——Android从零开始(28)(来电铃声的设置、手机闹钟、手势识别)(新)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 来电铃声的设置.手机闹钟.手势识别来电铃声的设置 MediaStore简介 Media ...

  9. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  10. android 代码设置圆角,Android中用Shape实现圆角和局部圆角

    本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...

最新文章

  1. C#学习笔记:多态与隐藏,覆盖
  2. 题解报告:hdu 5695 Gym Class(拓扑排序)
  3. Knative Serving 进阶: Knative Serving SDK
  4. NOIP2000提高组复赛C 单词接龙
  5. ant-design tree 设置默认选中状态_快速掌握文件夹位置的更改和文件的默认打开方式及重命名的操作...
  6. 得物App获得2020“年度新经济企业”奖项
  7. SpringMVC框架搭建的步骤
  8. 分布式版本控制工具 Git
  9. MFC DLL向导(二)
  10. 小米华为鸿蒙,华为鸿蒙比小米MIUI快,老外上手出结果
  11. matlab画图画点画直线
  12. vue element-plus 插件
  13. Android5.1下拉状态栏新增截屏功能
  14. 构建iOS持续集成平台
  15. java水平翻转矩阵_Java实现 LeetCode 519 随机翻转矩阵
  16. 微信支付服务商模式下的支付-特约商户-----亲试有效
  17. 2022年中国工业软件市场现状及发展前景预测分析
  18. 步道乐跑怎么刷公里_步道乐跑怎么刷?
  19. 关于“给PHP源代码加密“的代码分析
  20. mac 苹果如何才能实现剪切文件

热门文章

  1. 傅里叶变换之掐死教程
  2. 讯飞离线语音合成(语记)
  3. 拖欠银行贷款的后果有哪些
  4. 金融贷款逾期的模型实现
  5. PyG搭建GCN实现节点分类(GCNConv参数详解)
  6. 如何测身高未来身高计算机,第2课 预测身高——编程解决问题的基本步骤
  7. Linux常用命令学习
  8. maven的pom文件引入依赖报错:提示无法处理 Cannot resolve...
  9. 2022元宇宙共享大会|何超:“开放与兼容”唤起元宇宙新的思潮
  10. RobotStudio动态夹具的创建