如何在 Android 上调出可用通知声音列表
我正在我的 Android 应用程序中创建通知,并且希望在我的首选项中有一个选项来设置通知使用的声音。我知道在“设置”应用程序中,您可以从列表中选择默认通知声音。该列表来自哪里,有没有办法让我在我的应用程序中显示相同的列表?
I'm creating notifications in my Android application, and would like to have an option in my preferences to set what sound is used for the notification. I know that in the Settings application you can choose a default notification sound from a list. Where does that list come from, and is there a way for me to display the same list in my application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
只需从我的一个应用程序中复制/粘贴一些代码即可完成您所需的操作。
这是在标有“设置铃声”或类似内容的按钮的 onClick 处理程序中:
此代码捕获用户所做的选择:
另外,我建议我的用户从 Android 市场安装“Rings Extended”应用程序。然后,每当在他们的设备上打开此对话框时,例如从我的应用程序或手机的设置菜单中,用户将有额外的选择来选择存储在其设备上的任何 mp3,而不仅仅是内置铃声。
Just copy/pasting some code from one of my apps that does what you are looking for.
This is in an onClick handler of a button labeled "set ringtone" or something similar:
And this code captures the choice made by the user:
Also, I advise my users to install the "Rings Extended" app from the Android Market. Then whenever this dialog is opened on their device, such as from my app or from the phone's settings menu, the user will have the additional choice of picking any of the mp3s stored on their device, not just the built in ringtones.
或者只是将其粘贴在您的首选项 XML 中:
我的示例 XML 的完整内容仅供参考:
Or just stick this in your preferences XML:
Full content of my sample XML just for context:
这是我用来获取手机中可用的通知声音列表的方法:)
编辑:这是关于如何在NotificationCompat.Builder 中设置声音的评论。此方法获取手机使用的铃声 ID,而不是其他方法获取的人类可读的 TITLE。结合 uri 和 id,您就得到了铃声位置。
上面的代码将返回一个字符串列表,例如 "content://media/internal/audio/media/27".. 然后您可以将这些字符串之一作为 Uri 传递到 .setSound( )喜欢:
希望这足够清楚了:)
This is the method I use to get a list of notification sounds available in the phone :)
EDIT: This is for the comment regarding how to set the sound in the NotificationCompat.Builder. This method instead gets the ringtone's ID which is what the phone uses, instead of the human readable TITLE the other method got. Combine the uri and the id, and you have the ringtones location.
The above code will return a list of strings like "content://media/internal/audio/media/27".. you can then pass one of these strings as a Uri into the .setSound() like:
Hope that was clear enough :)
这是另一种方法(在 Kotlin 中),根据此问题中的其他答案构建,允许您指定音调的名称,然后播放它:
它可能需要一些重构和优化,但您应该明白这个想法。
Here's another approach (in Kotlin), build from other answers in this question, that allows you to specify the name of the tone, and then play it:
It can probably take some refactoring and optimization, but you should get the idea.