现在的位置: 首页 > 综合 > 正文

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

2017年10月09日 ⁄ 综合 ⁄ 共 3897字 ⁄ 字号 评论关闭

http://tech.it168.com/a2011/1122/1277/000001277070.shtml

对于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)

  
2 

  
3     {

  
4 

  
5        ContentValues cv = new ContentValues();

  
6 

  
7        Uri newUri = null;

  
8 

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

抱歉!评论已关闭.