2014-09-30 129 views
1

我正在編寫一個具有功能的應用程序,暫時覆蓋用戶打開應用程序時系統默認的鈴聲與另一個自定義鈴聲,並在用戶關閉時恢復爲默認鈴聲。同時,用戶可以在設置或其他應用程序中更改默認鈴聲,但只要我的應用程序正在運行,這些更改在用戶關閉應用程序之前不起作用。如何臨時覆蓋系統默認鈴聲?

因爲這意味着改變鈴聲本身,而不是覆蓋它與其他手機鈴聲,我不能做這樣的

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

。當然,我可以在應用程序開啓時記住系統鈴聲,並在關閉時將其更改回該鈴聲。但是,使用這種方法時,在更改系統鈴聲時用戶所做的任何更改(當我的應用程序仍在運行時)將在我的應用程序關閉時被丟棄,因爲它會自動恢復到先前記憶的鈴聲。將使我的自定義鈴聲立即不再生效

那麼,否則如何做到這一點?

回答

1

我認爲你在正確的軌道上記住「老」鈴聲,並在你的應用完成時恢復它。如上所述,問題是用戶在運行應用程序時更改鈴聲時會發生什麼情況。

有一對夫婦的方法,你可以去避免這樣的:

  • 傾聽的鈴聲系統廣播正在改變和重新應用鈴聲作出相應的反應。我研究了這一點 - 不幸的是,沒有這樣的廣播存在,所以這是一個有爭議的問題。
  • 使用鬧鐘來定期檢查鈴聲,看看它是否是你設置的 - 如果沒有,他們已經改變了它,所以你可以改回它。
  • 無關更新問題:就在您還原鈴聲之前,請檢查當前設置是什麼 - 如果它與您設置的設置不同,那麼您知道它在應用程序打開時發生了更改。

在最後一種情況下,您應該能夠根據您的應用的功能來處理更改。

您的更新提出了另一個問題,雖然:你確定用戶希望你強行覆蓋他們的鈴聲,即使他們改變了它?如果你是,那很好,但這是你需要牢記的事情。

+0

對不起,我錯了這個問題:這不是我的應用程序不能保留新的鈴聲,但問題是我的自定義鈴聲不再有效。請看我編輯的問題。 – 2014-09-30 03:57:52