Android 代码设置来电铃声

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

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

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

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

此方法需要传入想要设置为铃声的全路径(如:/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,来电铃声)