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

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 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值