我希望能够从我的 Android 应用程序中设置系统铃声。我面临一个稍微有趣的问题,因为我从来没有在我的代码中直接引用声音,而是使用通过整数引用它们的设置,所以我在网上找到的代码并不完全适用于我。
我不确定我设置铃声的代码是否正确。它确实取代了我的铃声,但它永远不会用我要求它的声音取代它。当我使用“Uri.parse”并为其提供找到正确文件的路径时,它会用任何内容替换铃声。现在,使用“Uri.fromFile”,并通过文件引用声音,它将其替换为典型的电话声音,我认为这是某种默认设置。
我没有从中得到任何错误,但我确实收到了一个似乎相关的警告。
dataChanged but no participant pkg='com.android.providers.settings' uid=10096
在我看来,我只是没有正确引用该文件。我可以在字符串中获取声音的路径,当然也可以将它们定义为文件,但我一定在某处遗漏了一些东西。
任何想法表示赞赏,谢谢。
编辑 :: 好吧,似乎只有当您“更改铃声”时才会出现错误。因此,如果我再次设置与铃声相同的声音,它不会出现,但如果我要设置不同的声音,它会出现。对我来说,这仍然意味着它可以看到我正在做的一切,但我没有正确参考声音,所以它不知道该放什么。
编辑 :: 这些是我尝试使用在其他设置铃声示例中发布的相同设置时遇到的主要错误。
这些是我第一次尝试将其设置为铃声时:
02-01 11:51:20.709: ERROR/MediaPlayerService(1157): Couldn't open fd for content://settings/system/ringtone
02-01 11:51:20.709: ERROR/MediaPlayer(13807): Unable to to create media player
02-01 11:51:20.709: ERROR/RingtoneManager(13807): Failed to open ringtone content://settings/system/ringtone
02-01 11:51:20.709: ERROR/MediaPlayer(13807): Unable to to create media player
02-01 11:51:20.716: WARN/Ringtone(13807): Couldn't set the stream type
02-01 11:51:20.716: WARN/Ringtone(13807): java.io.IOException: setDataSourceFD failed.: status=0x80000000
这是如果我进入音量设置并更改铃声的音量:
02-01 11:51:23.568: ERROR/MediaPlayer(13807): Unable to to create media player
02-01 11:51:23.568: ERROR/Ringtone(13807): play() caught
02-01 11:51:23.568: ERROR/Ringtone(13807): java.io.IOException: setDataSourceFD failed.: status=0x80000000