来电动态覆盖默认铃声
我的应用程序允许您为不同的传入事件指定不同的铃声。 EG:来电、传入短信等。
我想要完成的是,当我收到来电时,我会检查我的应用程序数据库是否选择了特定选项以及是否设置了铃声选项来播放该铃声。
然而,我遇到的问题是我无法覆盖/停止默认手机铃声的播放。
我尝试了几种不同的方法,但从文档来看,大多数方法仅停止当前实例,而不是全局方法。
我无法在默认手机铃声设置中设置铃声,因为它需要根据来电动态变化。
如果有人知道实现此目的的技巧或方法,那就太好了。 我希望这是有道理的。
My app allows you to specify a different ringtone for different incoming events. EG: incoming call, incoming SMS, etc.
What I am trying to accomplish is when I receive for example an incoming call, I check my apps database if a specific option is selected and if there is a ringtone option set play that ringtone.
However the problem I am having is I am unable to override / stop the default phone ringtone from playing.
I have tried several different ways, but from the docs most of those methods only stop the current instance and are not global methods.
I can't set the ringtone in the default phones ringtone settings as it needs to be dynamic based on the incoming call.
If anyone knows of a trick or a way to accomplish this that would be great.
I hope that makes sense.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
动态更改铃声有几个步骤。
1. 准备铃声
2. 将其插入数据库
3. 保存当前默认铃声并订阅 CallListener
4. 创建 MyCallListener 类
5. 在 AndroidManifest.xml 中添加权限
6. 完成
主要思想是挂钩来电并替换自己的铃声。当然,您应该在通话后将默认铃声恢复为保存的值。
There are a several steps to dynamically change the ringtone.
1. Prepare ringtone
2. Insert it into the database
3. Save the current default ringtone and subscribe to CallListener
4. Create MyCallListener class
5. Add permissions to you AndroidManifest.xml
6. Done
The main idea is hooking for incoming call and replace the ringtone by your own. And of course you should restore default ringtone to saved value after call.
从 API 5 (Android 2.x) 开始,联系人数据库有一个 CUSTOM_RINGTONE 字段,请参阅此页面:
http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html#CUSTOM_RINGTONE
此字段的值必须是
content://
媒体文件的 URI。您可以从MedicaStore
内容提供程序获取一个:http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
这可能足以让您开始。这都是标准内容提供商的东西;这两项任务都有大量现有材料。
Starting with API 5 (Android 2.x), the Contacts database has a CUSTOM_RINGTONE field, see this page:
http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html#CUSTOM_RINGTONE
The value for this field must be a
content://
URI to a media file. You can obtain one from theMedciaStore
content provider:http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
That may be enough to get you started. This is all standard content provider stuff; lots of existing material for both tasks.