播放默认铃声

Posted

技术标签:

【中文标题】播放默认铃声【英文标题】:Playing default ringtone 【发布时间】:2010-11-01 02:05:39 【问题描述】:

我一直在尝试使用 SoundPool ,但没有成功。在下面的代码中

String ringtone = Settings.System.DEFAULT_RINGTONE_URI.getPath();
SoundPool ringPhone = new SoundPool(2, AudioManager.STREAM_RING, 1);
int soundID = ringPhone.load(Settings.System.DEFAULT_RINGTONE_URI.getPath(), 1);
int soundID = ringPhone.load(ringtone, 1);
ringPhone.play(soundID, 0.99f, 0.99f, 1, 0, 1);

我收到消息“加载内容时出错 /system/ringtone sample 0 not READY”。将 URI 替换为 sd 卡上现有 mp3 文件的硬路径会产生类似的结果。

我做错了什么?谢谢,

凯尔

【问题讨论】:

【参考方案1】:

您可能不希望将 SoundPool 用于此类音频播放。 SoundPool 通常用于播放非常小的 sn-ps 音频,存储为本地文件,甚至比大多数铃声还小。您应该考虑使用 MediaPlayer。以下应该可以很好地工作:

MediaPlayer player = MediaPlayer.create(this,
    Settings.System.DEFAULT_RINGTONE_URI);
player.start();

尽管如果您无权从您的应用程序访问该铃声,您可能会收到 FileNotFoundException。

【讨论】:

谢谢——这正是我所需要的。很简单,而且效果很好 不错的答案。仅供参考,如果使用工厂方法 create(),则无需调用 prepare()。 你是对的 IronBlossom。已编辑代码以删除 prepare()。

以上是关于播放默认铃声的主要内容,如果未能解决你的问题,请参考以下文章

播放提示音(与默认消息铃声相同)

设备在播放啥吗?

如何让我的应用程序中的播放器播放 UNNotificationSound.default()?

android-铃声的设置与播放

iPhone:如何播放忽略音量和铃声开关设置的声音?

无法使用滑块按钮播放/停止铃声