2013-02-15 92 views
12

我有一款使用外接設備的平板電腦耳機插孔的外接設備的Android應用程序。當外部設備開機時(通過以編程方式最大化音量),Android會短暫顯示一個警告彈出窗口:「如果聽了太久,大聲的音樂可能會損害您的聽力......」我希望該信息不要被顯示。如何在Android中禁止「大聲音樂可能會損害您的聽力...」警告

這裏有問題的代碼行:

mAudioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 

這不是一個選項,只把它半途而廢。實際上,即使在低於最大設置的音量設置下,平板電腦也會顯示警告(手動更改音量時)。

是的,我記錄原始卷,當我們與外部設備進行恢復。

感謝您的任何建議。

+0

這是否與其他平板電腦發生?我相信這是特定於三星平板電腦(或可能只是一個)。我從未在任何設備上看過它。 – 2013-02-15 19:15:58

+0

@ Tanis.7x - 我不確定其他平板電腦。我們選擇了這個,因爲它是由外部設備製造商認證的。 – 2013-02-15 19:32:03

+0

它也發生在我的Nexus 7上。這是外置揚聲器的Android功能,因爲大多數都是耳機。 – MCeley 2013-02-15 21:04:14

回答

0

我不知道你是否可以考慮一下這款太多的答案,但我敢肯定,你不能刪除該消息作爲該系統的東西,你可以訪問自動和不顯示。我的三星Galaxy S3做同樣的事情。

從我可以在網上,當你把一個插孔棒某些Android設備也降低音量看了這麼「你不傷害你的聽力」

也。

你可以通過在可能之前或之後顯示自己的通知來覆蓋通知嗎?通知只是標準Toast

+0

我們注意到,在屏幕上的任何地方敲擊,使警告消失,所以我們正在測試現在是激活外部設備(通過設置捲到最大),然後或者把我們的活動到前臺,或者模擬屏幕水龍頭。 – 2013-02-20 18:06:23

+1

@MikeHedman,我相信像這樣的haxxy事情是解決這個問題的唯一方法。 – Warpzit 2013-02-21 08:00:22

+0

@MikeHedman我只是想添加額外的評論。由於新的android版本,任何haxxy解決方案都可能會發生變化,並且可能會根據手機制造商和版本而提高警惕。 – Warpzit 2013-03-03 06:37:57

1

既然你無法禁用系統的消息,而你也將有一個問題,當用戶手動降低音量,我建議你做了一系列的管制,這將與幫助。 到最大音量:

public void maxVolume() { 
    AudioManager audioManager = (AudioManager)context.getSystemService(this.AUDIO_SERVICE); 
    while (audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) < audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)) { 
     audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0); 
    } 
} 

爲了防止手動更改用戶量:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
     || (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 
     || (keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)) { 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

您可以在onCreate方法調用maxVolume(),後來叫什麼你開始使用千斤頂之前輸出程序來確保系統沒有改變你的音量。 或者,您可以註冊偵聽器來偵聽音量變化,使maxVolume()靜態並從偵聽器調用它。希望它能幫助你!

1

我知道這個問題已經很老了,但我只是自己碰到了這個問題。我想,如果能幫助別人發生這種情況,我會加上所發現的答案。

其中一個職位這裏提到的警告是不是在AOSP,但事實卻並非如此。請在此引用VolumePanel :: SafteyWarning類:VolumePanel::SafetyWarning

一旦你通過SafetyWarning類細讀你會發現,有一個名爲disableSafeMediaVolume的AudioManager類的內部隱藏的方法。通過反射,你可以很容易地調用這個隱藏的方法,但是如果你這樣做,那麼你會得到一個安全異常,因爲它需要系統權限「android.permission.STATUS_BAR_SERVICE」。

所以......隨着中說,對話,據我所知道的,不能以編程方式抑制,除非你有這樣的系統權限。

我們最終什麼了產品管理的祝福做的是我們在緩存的SharedPreferences音量設置,然後我們的應用程序啓動時從緩存重置。如果碰巧高於警告對話框的閾值,則會顯示警告,用戶將只需按OK即可獲得他們想要的音量設置,但至少他們不必手動重置音量本身。

爲什麼一些沒有看到這個對話框一對夫婦的其他注意事項。如果您將耳機(或耳塞或有線耳機)插入設備,並嘗試將媒體音量流設置超過特定閾值(在Samsung Galaxy Tab上此閾值爲60%),您將只能看到它。如果在對話框中按OK,則除非重新啓動設備或拔下耳機並重新插入(音量設置在閾值以上),否則將不會再顯示。

希望這可以幫助別人。

+0

該方法不需要Android 4.2至4.4的權限;但它爲5.0+。 :-( – 2016-09-20 19:32:49

相關問題