【问题标题】:How to temporarily override system default ringtone?如何临时覆盖系统默认铃声?
【发布时间】:2014-11-24 13:59:47
【问题描述】:

我正在编写一个具有以下功能的应用程序.同时,用户可以在“设置”或其他应用程序中更改默认铃声,但只要我的应用程序正在运行,这些更改在用户关闭我的应用程序之前都是无效的。

我不能这样做

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

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

那么不然怎么办呢?

【问题讨论】:

    标签: android ringtone


    【解决方案1】:

    我认为您在记住“旧”铃声并在应用完成后恢复它方面走在了正确的轨道上。如前所述,问题是当用户在您的应用运行时更改铃声时会发生什么。

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

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

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

    不过,您的更新引发了另一个问题:您确定用户希望您强制覆盖他们的铃声,即使他们更改了铃声?如果你是,那很好,但你需要牢记这一点。

    【讨论】:

    • 对不起,这个问题我错了:不是我的应用不能保留新铃声,而是我的自定义铃声立即不再生效。请查看我编辑的问题。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多