首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从我的活动中在Android中设置铃声?

如何从我的活动中在Android中设置铃声?
EN

Stack Overflow用户
提问于 2009-08-13 20:50:43
回答 11查看 80K关注 0票数 44

我正在尝试通过我的Android活动中的代码来设置新的默认铃声。

我已经把铃声下载到bytearray里了。

EN

Stack Overflow用户

回答已采纳

发布于 2009-08-17 11:21:47

最后,我设法将默认铃声设置为我下载的铃声。下载代码不包括在下面,只需要将其设置为默认铃声。

代码语言:javascript
运行
复制
File k = new File(path, "mysong.mp3"); // path is a file to /sdcard/media/ringtone

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title");
values.put(MediaStore.MediaColumns.SIZE, 215454);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
values.put(MediaStore.Audio.Media.DURATION, 230);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

//Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);

RingtoneManager.setActualDefaultRingtoneUri(
  myActivity,
  RingtoneManager.TYPE_RINGTONE,
  newUri
);  

无论如何,我不完全理解这段代码在做什么。

铃声管理器需要指向将被设置为新铃声的文件的uri。但是这个uri不能像"/ sdcard /media/ringtones/mysong.mp3“那样直接指向SD卡。这不管用!

您需要的是文件的外部文件uri,它可能类似于"/ external /audio/media/46“

46是MediaStore数据库中列的id,所以这就是为什么首先需要将sdcard文件添加到数据库中的原因。

不管怎样,mediastore如何维护它的ids呢?当您多次执行此操作时,这个数字可能会变得非常高。

我需要自己删除此行吗?问题是,有时我甚至不能控制文件的删除,因为它可以直接从sdcard与文件浏览器删除。

票数 72
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1271777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档