Minimum target deployment: 28
to set this value you can add this to your ./android/variables.gradle
ext {
minSdkVersion = 28
}
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/custom_url_scheme" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="io.ionic.starter" />
<data android:mimeType="audio/*" />
</intent-filter>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
requestMixerPermissions()
addListener(string, ...)
addListener(string, ...)
addListener(string, ...)
playOrPause(...)
stop(...)
isPlaying(...)
getCurrentVolume(...)
getCurrentEq(...)
initAudioFile(...)
adjustVolume(...)
adjustEq(...)
setElapsedTimeEvent(...)
getElapsedTime(...)
getTotalTime(...)
initMicInput(...)
getInputChannelCount()
initAudioSession(...)
deinitAudioSession()
checkAudioSessionState()
resetPlugin()
getAudioSessionPreferredInputPortType()
destroyMicInput(...)
destroyAudioFile(...)
validateFileUri(...)
startStream(...)
stopStream()
- Interfaces
- Type Aliases
- Enums
requestMixerPermissions() => Promise<BaseResponse<null>>
Requests permissions required by the mixer plugin
-
iOS: Permissions must be added to application in the Info Target Properties
-
Android: Permissions must be added to AndroidManifest.XML
See README for additional information on permissions
Returns: Promise<BaseResponse<null>>
addListener(eventName: string, listenerFunc: (response: AudioSessionEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
Adds listener for AudioSession events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#audiosessionevent">AudioSessionEvent</a>) {
// handle event
}
Param | Type |
---|---|
eventName |
string |
listenerFunc |
(response: AudioSessionEvent) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener(eventName: string, listenerFunc: (response: MixerTimeEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
Adds listener for audio track time update events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#mixertimeevent">MixerTimeEvent</a>) {
// handle event
}
Param | Type |
---|---|
eventName |
string |
listenerFunc |
(response: MixerTimeResponse) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener(eventName: string, listenerFunc: (response: VolumeMeterEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandle
Adds listener for volume metering update events
Ex:
Register Listener:
Mixer.addListener("myEventName", this.myListenerFunction.bind(this));
myListenerFunction(response: <a href="#volumemeterevent">VolumeMeterEvent</a>) {
// handle event
}
Param | Type |
---|---|
eventName |
string |
listenerFunc |
(response: VolumeMeterEvent) => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
playOrPause(request: BaseMixerRequest) => Promise<BaseResponse<PlaybackStateResponse>>
Toggles playback and pause on an initialized audio file
Param | Type |
---|---|
request |
BaseMixerRequest |
Returns: Promise<BaseResponse<PlaybackStateResponse>>
stop(request: BaseMixerRequest) => Promise<BaseResponse<PlaybackStateResponse>>
Stops playback on a playing audio file
Param | Type |
---|---|
request |
BaseMixerRequest |
Returns: Promise<BaseResponse<PlaybackStateResponse>>
isPlaying(request: BaseMixerRequest) => Promise<BaseResponse<IsPlayingResponse>>
A boolean that returns the playback state of initialized audio file
Param | Type |
---|---|
request |
BaseMixerRequest |
Returns: Promise<BaseResponse<IsPlayingResponse>>
getCurrentVolume(request: ChannelPropertyRequest) => Promise<BaseResponse<VolumeResponse>>
Returns current volume of a channel as a number between 0 and 1
Param | Type |
---|---|
request |
ChannelPropertyRequest |
Returns: Promise<BaseResponse<VolumeResponse>>
getCurrentEq(request: ChannelPropertyRequest) => Promise<BaseResponse<EqResponse>>
Returns an object with numeric values for gain and frequency in bass, mid, and treble ranges
Param | Type |
---|---|
request |
ChannelPropertyRequest |
Returns: Promise<BaseResponse<EqResponse>>
initAudioFile(request: InitChannelRequest) => Promise<BaseResponse<InitResponse>>
Returns AudioId string of initialized audio file
Param | Type |
---|---|
request |
InitChannelRequest |
Returns: Promise<BaseResponse<InitResponse>>
adjustVolume(request: AdjustVolumeRequest) => Promise<BaseResponse<null>>
Adjusts volume for a channel
Param | Type |
---|---|
request |
AdjustVolumeRequest |
Returns: Promise<BaseResponse<null>>
adjustEq(request: AdjustEqRequest) => Promise<BaseResponse<null>>
Adjusts gain and frequency in bass, mid, and treble ranges for a channel
Param | Type |
---|---|
request |
AdjustEqRequest |
Returns: Promise<BaseResponse<null>>
setElapsedTimeEvent(request: SetEventRequest) => Promise<BaseResponse<null>>
Sets an elapsed time event name for a given audioId. To unset elapsedTimeEvent pass an empty string and this will stop the event from being triggered.
Only applicable for audio files
Param | Type |
---|---|
request |
SetEventRequest |
Returns: Promise<BaseResponse<null>>
getElapsedTime(request: BaseMixerRequest) => Promise<BaseResponse<MixerTimeResponse>>
Returns an object representing hours, minutes, seconds, and milliseconds elapsed
Param | Type |
---|---|
request |
BaseMixerRequest |
Returns: Promise<BaseResponse<MixerTimeResponse>>
getTotalTime(request: BaseMixerRequest) => Promise<BaseResponse<MixerTimeResponse>>
Returns total time in an object of hours, minutes, seconds, and millisecond totals
Param | Type |
---|---|
request |
BaseMixerRequest |
Returns: Promise<BaseResponse<MixerTimeResponse>>
initMicInput(request: InitChannelRequest) => Promise<BaseResponse<InitResponse>>
Initializes microphone channel on mixer
Returns AudioId string of initialized microphone input
Param | Type |
---|---|
request |
InitChannelRequest |
Returns: Promise<BaseResponse<InitResponse>>
getInputChannelCount() => Promise<BaseResponse<ChannelCountResponse>>
Returns the channel count and name of the initialized audio device
Returns: Promise<BaseResponse<ChannelCountResponse>>
initAudioSession(request: InitAudioSessionRequest) => Promise<BaseResponse<InitAudioSessionResponse>>
Initializes audio session with selected port type,
Returns a value describing the initialized port type for the audio session (usb, built-in, etc.)
Param | Type |
---|---|
request |
InitAudioSessionRequest |
Returns: Promise<BaseResponse<InitAudioSessionResponse>>
deinitAudioSession() => Promise<BaseResponse<null>>
Cancels audio session and resets selected port. Use prior to changing port type
Returns: Promise<BaseResponse<null>>
checkAudioSessionState() => Promise<BaseResponse<SessionStateResponse>>
Checks the current state of the AudioSession.
Returns: Promise<BaseResponse<SessionStateResponse>>
resetPlugin() => Promise<BaseResponse<null>>
Resets plugin state back to its initial state
<span style="color: 'red'">CAUTION: This will completely wipe everything you have initialized from the plugin!</span>
Returns: Promise<BaseResponse<null>>
getAudioSessionPreferredInputPortType() => Promise<BaseResponse<InitResponse>>
Returns a value describing the initialized port type for the audio session (usb, built-in, etc.)
Returns: Promise<BaseResponse<InitResponse>>
destroyMicInput(request: BaseMixerRequest) => Promise<BaseResponse<DestroyResponse>>
De-initializes a mic input channel based on audioId
Note: Once destroyed, the channel cannot be recovered
Param | Type | Description |
---|---|---|
request |
BaseMixerRequest |
audioId |
Returns: Promise<BaseResponse<DestroyResponse>>
destroyAudioFile(request: BaseMixerRequest) => Promise<BaseResponse<DestroyResponse>>
De-initializes an audio file channel based on audioId
Note: Once destroyed, the channel cannot be recovered
Param | Type | Description |
---|---|---|
request |
BaseMixerRequest |
audioId |
Returns: Promise<BaseResponse<DestroyResponse>>
validateFileUri(request: FileValidationRequest) => Promise<BaseResponse<FileValidationResponse>>
Validates file path and returns true if valid, false if invalid
Param | Type |
---|---|
request |
FileValidationRequest |
Returns: Promise<BaseResponse<FileValidationResponse>>
startStream(request: StreamRequest) => Promise<BaseResponse<null>>
Starts a stream to a provided URL
Param | Type |
---|---|
request |
StreamRequest |
Returns: Promise<BaseResponse<null>>
stopStream() => Promise<BaseResponse<null>>
Stops a stream if one is currently active.
Returns: Promise<BaseResponse<null>>
The response wrapper for all response objects
Prop | Type | Description |
---|---|---|
status |
ResponseStatus |
Status of returned request. Ex: 'SUCCESS', 'ERROR' |
message |
string |
Message that describes response Note: Can be used for user messages |
data |
T |
Response data object field Ex: A MixerTimeResponse object |
Prop | Type |
---|---|
remove |
() => Promise<void> |
Event response for handling audio session notifications
Prop | Type | Description |
---|---|---|
handlerType |
AudioSessionHandlerTypes |
The event type that occurred |
Response representing HH:MM:SS.ms-formatted time
Prop | Type | Description |
---|---|---|
milliSeconds |
number |
ms in formatted time |
seconds |
number |
SS in formatted time |
minutes |
number |
MM in formatted time |
hours |
number |
HH in formatted time |
Event response for handling current volume level
Prop | Type | Description |
---|---|---|
meterLevel |
number |
Calculated amplitude in dB - Range: -80 to 0 dB |
Response that returns PlayerState
Prop | Type | Description |
---|---|---|
state |
PlayerState |
Represents the state of the player |
Base class for all mixer requests, consists of audioId only
Prop | Type | Description |
---|---|---|
audioId |
string |
A string identifying the audio file or microphone channel instance |
Response for tracking player state as a boolean
Prop | Type | Description |
---|---|---|
value |
boolean |
Value of tracked player state |
Response for tracking channel volume
Prop | Type | Description |
---|---|---|
volume |
number |
Value of tracked channel volume |
Request to get info about channel properties such as current volume, EQ, etc.
Prop | Type | Description |
---|---|---|
inputType |
InputType |
Type of input on which properties are being requested |
Response for tracking channel EQ
Prop | Type | Description |
---|---|---|
bassGain |
number |
Bass gain for channel - Range: -36 to +15 dB |
bassFrequency |
number |
Bass frequency for channel - Suggested range: 20Hz to 499Hz |
midGain |
number |
Mid gain for channel - Range: -36 to +15 dB |
midFrequency |
number |
Mid frequency for channel - Suggested range: 500Hz to 1499Hz |
trebleGain |
number |
Treble gain for channel - Range: -36 to +15 dB |
trebleFrequency |
number |
Treble frequency for channel - Suggested range: 1.5kHz to 20kHz |
Response for initialization of channel
Prop | Type | Description |
---|---|---|
value |
string |
Initialized channel audioId |
Request used to initialize a channel on the mixer
Prop | Type | Description |
---|---|---|
filePath |
string |
A string identifying the path to the audio file on device. Unused if initializing microphone channel |
elapsedTimeEventName |
string |
A string identifying the elapsed time event name. This will automatically set the event and setElapsedTimeEvent is not needed. Unused if initializing microphone channel |
channelNumber |
number |
The channel number being initialized for microphone. Starts at 0. Unused if initializing audio file |
bassGain |
number |
Optional bass gain setting for initialization: -36dB to +15 dB Default: 0dB |
bassFrequency |
number |
Optional init eq setting for bass EQ band iOS Default: 115Hz Android Default: 200Hz |
midGain |
number |
Optional mid gain setting for initialization: -36dB to +15 dB Default: 0dB |
midFrequency |
number |
Optional init setting for mid EQ band iOS Default: 500Hz Android Default: 1499Hz |
trebleGain |
number |
Optional treble gain setting for initialization: -36dB to +15 dB Default: 0dB |
trebleFrequency |
number |
Optional init eq setting for treble EQ band iOS Default: 1.5kHz Android Default: 20kHz |
volume |
number |
Optional init setting for volume Default: 1 Range: 0 - 1 |
channelListenerName |
string |
Required name used to set listener for volume metering Subscribed event returns VolumeMeterEvent Note: if empty string is passed, metering will be disabled on channel |
For mixer requests manipulating volume level
Prop | Type | Description |
---|---|---|
volume |
number |
A number between 0 and 1 specifying volume level being set |
inputType |
InputType |
Type of input on which volume is being adjusted |
For mixer requests manipulating EQ
Prop | Type | Description |
---|---|---|
eqType |
EqType |
Identifies EQ band to adjust: Bass, Mid, Treble |
gain |
number |
A number between -36dB and +15dB identifying EQ band gain |
frequency |
number |
A number identifying cutoff/central frequency for EQ band Bass: - iOS implemented as a low shelf - Android implemented as a high pass filter Mid: - implemented as a parametric 'bump' Treble: - iOS implemented as a high shelf - Android implemented as a low pass filter |
inputType |
InputType |
Type of input on which EQ is being adjusted |
Request to set an event listener
Prop | Type | Description |
---|---|---|
eventName |
string |
The name of the event that will be subscribed to Subscribed event returns MixerTimeEvent |
Response for channel count of requested audio port
Prop | Type | Description |
---|---|---|
channelCount |
number |
Number of channels found |
deviceName |
string |
Name of the device at the requested audio port |
Response for initalizing audio session
Prop | Type | Description |
---|---|---|
preferredInputPortType |
AudioSessionPortType |
Type found when initializing audio session |
preferredInputPortName |
string |
Device name found when initializing audio session |
preferredIOBufferDuration |
number |
iOS only Preferred buffer duration when initializing audio session |
Request to initialize an audio session
Prop | Type | Description |
---|---|---|
inputPortType |
AudioSessionPortType |
An enum describing input hardware device to be used |
ioBufferDuration |
number |
iOS only The preferred duration of the input buffer (0.05 recommended as a starting point, change may be observed as output latency) |
audioSessionListenerName |
string |
The name of the audio session event that will be subscribed to. Subscribed event returns AudioSessionEvent |
Response that returns PlayerState
Prop | Type | Description |
---|---|---|
state |
boolean |
Represents the state of the player |
Response for destroying a channel
Prop | Type | Description |
---|---|---|
listenerName |
string |
The name of the volume metering event Note: If no event is found, empty string is returned |
elapsedTimeEventName |
string |
The name of the elapsed time event Note: If no event is found, empty string is returned |
Response for validating file path
Prop | Type | Description |
---|---|---|
isFileValid |
boolean |
True if file path is found, False if file path is not found |
filePath |
string |
File path that was checked. |
Request to validate a file path.
Prop | Type | Description |
---|---|---|
filePath |
string |
The file path that will be validated. |
Request to stream audio to provided url
Prop | Type |
---|---|
streamUrl |
string |
Event response for handling current elapsed time
Possible states of player
"play" | "pause" | "stop" | "not implemented"
Members | Value |
---|---|
SUCCESS |
"success" |
ERROR |
"error" |
Members | Value | Description |
---|---|---|
INTERRUPT_BEGAN |
"INTERRUPT_BEGAN" |
Invoked when another audio session has started This can cause your audio to be 'ducked', or silenced with the audio session |
INTERRUPT_ENDED |
"INTERRUPT_ENDED" |
Invoked when another audio session has ended Your audio session should resume |
ROUTE_DEVICE_DISCONNECTED |
"ROUTE_DEVICE_DISCONNECTED" |
Invoked when the device you're currently connected to is disconnected from the audio session |
ROUTE_DEVICE_RECONNECTED |
"ROUTE_DEVICE_RECONNECTED" |
Invoked when previously-used device is reconnected to the audio session |
ROUTE_NEW_DEVICE_FOUND |
"ROUTE_NEW_DEVICE_FOUND" |
Invoked when previously-UNUSED device is connected to the audio session |
Members | Value |
---|---|
MIC |
"mic" |
FILE |
"file" |
Members | Value |
---|---|
BASS |
"bass" |
MID |
"mid" |
TREBLE |
"treble" |
Members | Value | Description |
---|---|---|
HDMI |
"hdmi" |
|
AIRPLAY |
"airplay" |
iOS only |
BLUETOOTH_A2DP |
"bluetoothA2DP" |
|
BLUETOOTH_HFP |
"bluetoothHFP" |
|
BLUETOOTH_LE |
"bluetoothLE" |
iOS only |
BUILT_IN_MIC |
"builtInMic" |
|
HEADSET_MIC_WIRED |
"headsetMicWired" |
iOS only |
HEADSET_MIC_USB |
"headsetMicUsb" |
|
LINE_IN |
"lineIn" |
|
THUNDERBOLT |
"thunderbolt" |
iOS only |
USB_AUDIO |
"usbAudio" |
|
VIRTUAL |
"virtual" |