簡體   English   中英

在Android中以編程方式禁用所有聲音和振動

[英]Programatically disable ALL sound and vibration in android

我想禁用所有來自Android設備的聲音和振動。 根據對類似問題的回答,我目前正在使用以下代碼將所有音頻流靜音,將鈴聲模式設置為靜音,並偽造語音通話方案:

AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
    //DOESNT DISABLE ALARM CLOCK
    amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
    amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
    amanager.setStreamMute(AudioManager.STREAM_RING, true);
    amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
    amanager.setStreamMute(AudioManager.STREAM_DTMF, true);
    amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
    amanager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true);
    //disables vibrate and sound of ringer
    amanager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    //fakes voice call...changes alarm to single tone+vibrate
    amanager.setMode(AudioManager.MODE_IN_CALL);
    amanager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);

這適用於禁用音樂和撥入電話,但是,如注釋中所述,Android的內置鬧鍾應用仍然可以產生聲音和振動。

有誰知道如何真正禁用所有聲音和振動? 還是冒險繞過音頻流,為什么鬧鍾應用程序看起來如此?

setStreamMute無法使我靜音,但是使用setStreamVolumeSTREAM_ALARM音量設置為零即可。 之后需要恢復警報音量。

例如這樣:

AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);    
manager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM