如何临时覆盖系统默认铃声?

时间:2014-09-30 03:37:28

标签: android ringtone

我正在编写一个应用程序,当用户打开应用程序时,该应用程序具有暂时覆盖系统默认铃声和其他自定义铃声的功能,并在用户关闭时恢复为默认铃声。同时,用户可以在“设置”或其他应用程序中更改默认铃声,但只要我的应用程序正在运行,在用户关闭我的应用程序之前,这些更改无效。

我不能这样做

RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, toneUri);

因为它意味着更改铃声本身,而不是覆盖它与另一个铃声。当然,我可以在打开应用程序时记住系统铃声,并在关闭时将其更改回铃声。但是,使用此方法,当我的应用程序关闭时,用户在更改系统铃声时所做的任何更改(当我的应用程序仍在运行时)将被丢弃,因为它将自动恢复为之前记住的铃声。将使我的自定义铃声不再生效

那么怎么办呢?

1 个答案:

答案 0 :(得分:1)

我认为你已经走上了正确的轨道,记住了#34;老"铃声并在您的应用完成后恢复它。如上所述,问题是当用户在您的应用运行时更改其铃声时会发生的情况。

您可以采取几种方法来避免这种情况:

  • 收听正在更改铃声的系统广播,并通过重新应用您的铃声进行相应的响应。我调查了这个 - 不幸的是,没有这样的广播存在,所以这是一个没有实际意义的点。
  • 使用闹钟定期检查铃声,看看它是否是您设置的铃声 - 如果没有,他们已经更改了铃声,因此您可以将其更改回来。
  • 与更新的问题无关:在您恢复铃声之前,请检查当前设置是什么 - 如果它与您设置的设置不同,那么您知道在应用程序打开时它已被更改

在最后一种情况下,您应该能够根据应用的功能处理更改。

您的更新提出了另一个问题:您确定用户希望您强行覆盖他们的铃声,即使他们更改了吗?如果你是,那很好,但这是你需要记住的事情。