點擊上方的語言選單以切換語言

為何有些應用程式的聲音會受靜音影響?

我創建這個頁面是因為我之前使用Perfect PianoMarimba RealHarp Real這三款數位樂器演奏時,發現第一款不受靜音模式影響但後兩者卻受靜音模式影響。

因此,在透過螢幕錄影錄製演奏過程時,使用Perfect Piano錄製的影片不會被訊息通知聲打斷,而Harp RealMarimba Real則會在錄影過程中被訊息通知聲中斷。

所以創建本頁面的目的是向各位說明為何會有這種現象以及這背後的計算機科學原理。

在智慧型手機上,不同應用程式的聲音行為會依照它們使用的 音訊通道(Audio Session / Audio Stream) 而有所不同。 這些通道由作業系統(如 iOSAndroid)提供,用來告訴系統「這個聲音的重要程度」。

一、iOS 的音訊類別 (AVAudioSessionCategory)

在 iOS 中,每個 App 播放音訊時都需設定 AVAudioSession 的「類別」, 不同類別會決定是否受靜音開關(Mute Switch)影響。

音訊類別用途是否受靜音影響
AVAudioSessionCategoryAmbient背景音效、遊戲環境音✅ 會靜音
AVAudioSessionCategorySoloAmbient需獨占聲音但尊重靜音✅ 會靜音
AVAudioSessionCategoryPlayback音樂、影片播放❌ 不受靜音影響
AVAudioSessionCategoryPlayAndRecord通話、錄音❌ 不受靜音影響

二、Android 的音訊串流 (AudioManager.STREAM_*)

Android 系統使用「音訊串流 (Audio Stream Types)」的概念, 每一種串流代表不同的音訊類型與優先權。

串流類型用途是否受靜音模式影響
STREAM_MUSIC音樂、影片、遊戲✅ 受靜音與音量控制影響
STREAM_ALARM鬧鐘❌ 不受靜音影響
STREAM_RING來電鈴聲❌ 或部分受控
STREAM_NOTIFICATION通知音效✅ / ❌ 視勿擾設定
STREAM_SYSTEM系統提示音✅ 通常受控

三、實際案例分析:三款數位樂器 App

四、通知中斷的技術原因

當系統接收到通知時,它會暫時佔用 STREAM_NOTIFICATIONSTREAM_RING 通道。 若應用程式的聲音也使用這些受控串流,系統就會「暫停或壓低」該 App 音量,導致錄影時聽見訊息聲。

五、解決方案

  1. 啟用「勿擾模式」:在錄影前開啟勿擾模式,防止通知音打斷。
  2. 使用錄影 App 鎖定音訊焦點:例如 AZ Screen Recorder、Mobizen,可設定只錄製媒體音。
  3. 開發層面修正:開發者可指定正確的音訊類別:
    // Android 範例
    audioManager.setStreamType(AudioManager.STREAM_MUSIC);
    
    // iOS 範例
    try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)

六、總結

應用程式是否受靜音開關影響,取決於開發者選用的音訊通道:

平台控制機制主要影響因素
iOSAVAudioSessionCategory開發者設定的音訊類別
AndroidAudioManager.STREAM_*指定的音訊串流類型

因此,像 Perfect Piano 這樣使用「播放類別」的應用不受靜音影響; 而 Harp RealMarimba Real 則使用「環境音」通道,導致靜音或通知中斷。

分享到 Facebook | 分享到 Line | 分享到 X