零一生随机,随机生万物

https://github.com/mlxy/RandomRingtones

在每次来电的时候随机修改铃声。

结果就是每次来电的铃声都不一样。

给S1er写的。

 

几个知识点:

 

1. File类里有个listFiles方法,这个玩意在学Python的时候明明一开始就用到了不知道为什么我现在才第一次用。方法接收一个FilenameFilter参数,直接用匿名类填进去,然后重写accept方法这个知识点简直弱智到不能自理我为什么要单独把它写出来。嗯,就是自己写个过滤器我还是不接着说了吧。

 

2. 修改系统铃声的问题,直接看代码。

 1 public static void setRingtone(Context context, File ringtoneFile) {
 2     // 铃声的属性。
 3     ContentValues values = new ContentValues();
 4     values.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());
 5     values.put(MediaStore.MediaColumns.TITLE, ringtoneFile.getName());
 6     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
 7     values.put(MediaStore.Audio.Media.ARTIST, " ");
 8     values.put(MediaStore.MediaColumns.SIZE, ringtoneFile.getUsableSpace());
 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     // 从媒体库中删除并重新插入。
15     Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
16     context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + ringtoneFile.getAbsolutePath() + "\"", null);
17     Uri newUri = context.getContentResolver().insert(uri, values);
18     
19     // 设置新铃声。
20     RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
21 }
青山黛玛

看着现成的代码对着改挺简单的,要自己重写就难了。所以记一下还是挺有必要的。

MimeType后面改成星号应该能支持更多的音频类型,但是要自己一个一个测,干脆就只让用MP3了。

艺术家随便填。

第二步中首先把铃声从媒体库中删除的一步挺重要的,网上很多代码没有这一行,我之前测试的时候没这行就不能用。

剩下的就都是API调用。

我觉得还是不要硬背,用得到的时候再现查吧。

 

3. 从Android3.1之后,用户手动强制停止的应用状态和刚安装还没打开时一样,所以广播接收器也失效了。我暂时没想出解决办法,不知道那些大流氓是怎么驻留后台的。

 

 

之后再手绘一个图标上去。

转载于:https://www.cnblogs.com/chihane/p/4322863.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值