免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1496 | 回复: 0
打印 上一主题 下一主题

Android手机铃声代码实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-22 16:53 |只看该作者 |倒序浏览
Android手机铃声代码实现







网上查了很多例子,都有点问题,综合几个自己写了个可以设置铃声、通知声音、闹钟声音和所有声音功能的方法。

首先写一个常量类(定义想要设置为那种铃声的标示):
  1. 1 AppConstant.java 2  3 public interface AppConstant { 4  5     6  7     public static final int RINGTONE = 0;                   //铃声 8  9     public static final int NOTIFICATION = 1;               //通知音10 11     public static final int ALARM = 2;                      //闹钟12 13     public static final int ALL = 3;                        //所有声音14 15 }此方法需要传入想要设置为铃声的全路径(如:/mnt/sdcard/mp3/a.mp3 ),
复制代码
和想要设置为那种铃声的标示:
  1.   1 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            //播放铃声128 129 //         Ringtone rt = RingtoneManager.getRingtone(this, newUri);130 131 //         rt.play();132 133        }134 135     }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP