您的位置:首页 > 移动开发 > Android开发

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

2011-12-04 17:07 316 查看

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

对于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     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息