# selmanyasinaktas/capacitor-audio-manager architecture

> Architecture diagram of the GitHub repository selmanyasinaktas/capacitor-audio-manager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/selmanyasinaktas/capacitor-audio-manager
- Repository: https://github.com/selmanyasinaktas/capacitor-audio-manager

## Overview

This Capacitor plugin lets an app request audio and ringer state, change supported settings, inspect DND permission, and subscribe to live changes. Calls enter through the TypeScript registration layer and are dispatched by Capacitor to Android, iOS, or the web fallback. Android implements stream and ringer operations through its native audio implementation; iOS uses output-volume observations for best-effort state and events, while web returns documented placeholders or unsupported errors. The native platform wiring is based on sampled plugin sources; peripheral platform behavior follows the README.

Main entry points: [`src/index.ts`](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/index.ts) (Plugin registration), [`android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerPlugin.java`](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerPlugin.java) (Android bridge), [`ios/Sources/AudioManagerPlugin/AudioManagerPlugin.swift`](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/ios/Sources/AudioManagerPlugin/AudioManagerPlugin.swift) (iOS bridge), [`android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerImpl.java`](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerImpl.java) (Android operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Plugin API"]
  node_registration["Plugin registration<br/>[index.ts]"]
  node_contract["API contract<br/>[definitions.ts]"]
end

subgraph group_android["Android Native"]
  node_android_plugin["Android bridge"]
  node_android_impl["Android operations"]
end

subgraph group_ios["iOS Native"]
  node_ios_plugin["iOS bridge"]
  node_ios_impl["iOS operations<br/>[AudioManager.swift]"]
end

subgraph group_web["Web Fallback"]
  node_web_impl["Web fallback<br/>[web.ts]"]
end

node_app(("Capacitor app"))
node_android_audio["Android audio services"]
node_android_settings["DND settings"]
node_ios_session["iOS audio session"]
node_events(("Plugin listeners"))

node_app -->|"calls API"| node_registration
node_registration -->|"uses types"| node_contract
node_registration -->|"dispatches calls"| node_android_plugin
node_registration -->|"dispatches calls"| node_ios_plugin
node_registration -.->|"loads fallback"| node_web_impl
node_android_plugin -->|"invokes operations"| node_android_impl
node_android_impl -->|"reads / writes"| node_android_audio
node_android_plugin -->|"opens settings"| node_android_settings
node_android_plugin -->|"notifies changes"| node_events
node_android_plugin -->|"reads event state"| node_android_impl
node_ios_plugin -->|"invokes operations"| node_ios_impl
node_ios_impl -->|"reads volume"| node_ios_session
node_ios_plugin -->|"observes volume"| node_ios_session
node_ios_plugin -->|"notifies changes"| node_events
node_web_impl -->|"supports listeners"| node_events

click node_registration "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/index.ts"
click node_contract "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/definitions.ts"
click node_android_plugin "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerPlugin.java"
click node_android_impl "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerImpl.java"
click node_ios_plugin "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/ios/Sources/AudioManagerPlugin/AudioManagerPlugin.swift"
click node_ios_impl "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/ios/Sources/AudioManagerPlugin/AudioManager.swift"
click node_web_impl "https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/web.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_registration,node_contract toneBlue
class node_android_plugin,node_android_impl toneAmber
class node_ios_plugin,node_ios_impl toneMint
class node_web_impl toneRose
class node_app,node_android_audio,node_android_settings,node_ios_session,node_events toneIndigo
```

## Components

### Plugin API

- [Plugin registration](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/index.ts): `src/index.ts`
- [API contract](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/definitions.ts): `src/definitions.ts`

### Android Native

- [Android bridge](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerPlugin.java): `android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerPlugin.java`
- [Android operations](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerImpl.java): `android/src/main/java/io/github/selmanyasinaktas/capacitor/audiomanager/AudioManagerImpl.java`

### iOS Native

- [iOS bridge](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/ios/Sources/AudioManagerPlugin/AudioManagerPlugin.swift): `ios/Sources/AudioManagerPlugin/AudioManagerPlugin.swift`
- [iOS operations](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/ios/Sources/AudioManagerPlugin/AudioManager.swift): `ios/Sources/AudioManagerPlugin/AudioManager.swift`

### Web Fallback

- [Web fallback](https://github.com/selmanyasinaktas/capacitor-audio-manager/blob/main/src/web.ts): `src/web.ts`

### Other components

- **Capacitor app**
- **Android audio services**
- **DND settings**
- **iOS audio session**
- **Plugin listeners**

## Connections

- Capacitor app → Plugin registration: calls API
- Plugin registration → API contract: uses types
- Plugin registration → Android bridge: dispatches calls
- Plugin registration → iOS bridge: dispatches calls
- Plugin registration → Web fallback: loads fallback
- Android bridge → Android operations: invokes operations
- Android operations → Android audio services: reads / writes
- Android bridge → DND settings: opens settings
- Android bridge → Plugin listeners: notifies changes
- Android bridge → Android operations: reads event state
- iOS bridge → iOS operations: invokes operations
- iOS operations → iOS audio session: reads volume
- iOS bridge → iOS audio session: observes volume
- iOS bridge → Plugin listeners: notifies changes
- Web fallback → Plugin listeners: supports listeners
