Skip to content
雲里
里雾

Android 音频路由陷阱

react native 开发 更新于 2026/4/28

react-native-sound 的 Sound.setCategory('Ambient') 在 Android 上将音频路由到通知音量流(STREAM_NOTIFICATION),当用户通知音量较低时会导致音频静音。

概述

react-native-sound 提供跨平台音频播放能力,通过 Sound.setCategory() 设置音频类别。但 iOS 和 Android 的音频类别映射存在本质差异:

Category 参数iOS 映射Android 映射
'Ambient'AVAudioSessionCategoryAmbientAudioManager.STREAM_NOTIFICATION
'Playback'AVAudioSessionCategoryPlaybackAudioManager.STREAM_MUSIC

iOS 上 'Ambient' 是游戏/App 背景音频的正确选择(跟随静音开关)。但 Android 没有等价概念,STREAM_NOTIFICATION 是完全不同的音频通道,用户通常静音或调低通知音量。

用法

按平台选择 category:

import { Platform } from 'react-native'
import Sound from 'react-native-sound'

// Android 用 Playback(STREAM_MUSIC),iOS 用 Ambient
Sound.setCategory(Platform.OS === 'android' ? 'Playback' : 'Ambient', true)

注意事项

版本说明

本页基于 react-native-sound 0.11.2。Android 实现见 RNSoundModule.javasetCategory 方法的 stream type 映射。

参见

参考