2014-09-30 126 views
1

我正在编写一个具有功能的应用程序,暂时覆盖用户打开应用程序时系统默认的铃声与另一个自定义铃声,并在用户关闭时恢复为默认铃声。同时,用户可以在设置或其他应用程序中更改默认铃声,但只要我的应用程序正在运行,这些更改在用户关闭应用程序之前不起作用。如何临时覆盖系统默认铃声?

因为这意味着改变铃声本身,而不是覆盖它与其他手机铃声,我不能做这样的

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

。当然,我可以在应用程序开启时记住系统铃声,并在关闭时将其更改回该铃声。但是,使用这种方法时,在更改系统铃声时用户所做的任何更改(当我的应用程序仍在运行时)将在我的应用程序关闭时被丢弃,因为它会自动恢复到先前记忆的铃声。将使我的自定义铃声立即不再生效

那么,否则如何做到这一点?

回答

1

我认为你在正确的轨道上记住“老”铃声,并在你的应用完成时恢复它。如上所述,问题是用户在运行应用程序时更改铃声时会发生什么情况。

有一对夫妇的方法,你可以去避免这样的:

  • 倾听的铃声系统广播正在改变和重新应用铃声作出相应的反应。我研究了这一点 - 不幸的是,没有这样的广播存在,所以这是一个有争议的问题。
  • 使用闹钟来定期检查铃声,看看它是否是你设置的 - 如果没有,他们已经改变了它,所以你可以改回它。
  • 无关更新问题:就在您还原铃声之前,请检查当前设置是什么 - 如果它与您设置的设置不同,那么您知道它在应用程序打开时发生了更改。

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

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

+0

对不起,我错了这个问题:这不是我的应用程序不能保留新的铃声,但问题是我的自定义铃声不再有效。请看我编辑的问题。 – 2014-09-30 03:57:52