入门指南
ℹ️ 平台支持: 音频会话 API 在 iOS 上可用。在 Android 和 Web 上的调用会在不产生效果的情况下解决,因此您可以保持共享逻辑。
-
安装包
Terminal window npm i @capgo/capacitor-plugin-audiosessionTerminal window pnpm add @capgo/capacitor-plugin-audiosessionTerminal window yarn add @capgo/capacitor-plugin-audiosessionTerminal window bun add @capgo/capacitor-plugin-audiosession -
同步 iOS 平台
Terminal window npx cap sync iosTerminal window pnpm cap sync iosTerminal window yarn cap sync iosTerminal window bunx cap sync ios
检查可用输出
Section titled “检查可用输出”import { AudioSession, AudioSessionPorts } from '@capgo/capacitor-plugin-audiosession';
const outputs = await AudioSession.currentOutputs();
if (outputs.includes(AudioSessionPorts.BLUETOOTH_A2DP)) { console.log('Bluetooth speaker connected');}覆盖到扬声器模式
Section titled “覆盖到扬声器模式”import { AudioSession, OutputOverrideType } from '@capgo/capacitor-plugin-audiosession';
await AudioSession.overrideOutput(OutputOverrideType.speaker);
// Restore system routing when you are doneawait AudioSession.overrideOutput(OutputOverrideType.default);监听路由和中断事件
Section titled “监听路由和中断事件”import { AudioSession, RouteChangeReasons, InterruptionTypes } from '@capgo/capacitor-plugin-audiosession';
const routeListener = await AudioSession.addListener('routeChanged', (reason) => { if (reason === RouteChangeReasons.NEW_DEVICE_AVAILABLE) { console.log('User connected a new audio route'); }});
const interruptionListener = await AudioSession.addListener('interruption', (type) => { if (type === InterruptionTypes.BEGAN) { // Pause playback while we are interrupted } else { // Resume playback }});
// Later during cleanupawait routeListener.remove();await interruptionListener.remove();- iOS:如果您的应用在后台播放音频,请在
ios/App/App/Info.plist中添加任何所需的后台音频模式(例如audio、voice)。 - 其他平台:无需额外设置;方法将以空结果解决。