react-native-audio-api 1.0.0-nightly-3745d67-20261103 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +3 -0
- package/ios/audioapi/ios/system/AudioEngine.mm +4 -0
- package/ios/audioapi/ios/system/AudioSessionManager.mm +1 -1
- package/lib/commonjs/hooks/useAudioInput.js +2 -0
- package/lib/commonjs/hooks/useAudioInput.js.map +1 -1
- package/lib/module/hooks/useAudioInput.js +2 -0
- package/lib/module/hooks/useAudioInput.js.map +1 -1
- package/lib/typescript/commonjs/hooks/useAudioInput.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useAudioInput.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useAudioInput.ts +2 -0
|
@@ -17,6 +17,7 @@ import com.facebook.react.turbomodule.core.CallInvokerHolderImpl
|
|
|
17
17
|
import com.swmansion.audioapi.system.ForegroundServiceManager
|
|
18
18
|
import com.swmansion.audioapi.system.MediaSessionManager
|
|
19
19
|
import com.swmansion.audioapi.system.NativeFileInfo
|
|
20
|
+
import com.swmansion.audioapi.system.NativeRecorderControl
|
|
20
21
|
import com.swmansion.audioapi.system.PermissionRequestListener
|
|
21
22
|
import java.lang.ref.WeakReference
|
|
22
23
|
import kotlin.concurrent.thread
|
|
@@ -92,6 +93,8 @@ class AudioAPIModule(
|
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
override fun invalidate() {
|
|
96
|
+
// Before the cleanups below pull the foreground service and input routing from under it.
|
|
97
|
+
NativeRecorderControl.stop()
|
|
95
98
|
reactContext.get()?.removeLifecycleEventListener(this)
|
|
96
99
|
ForegroundServiceManager.cleanup()
|
|
97
100
|
MediaSessionManager.cleanup()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#import <audioapi/ios/system/AudioEngine.h>
|
|
2
2
|
#import <audioapi/ios/system/AudioSessionManager.h>
|
|
3
3
|
|
|
4
|
+
#include <audioapi/core/inputs/ActiveRecorderHandle.h>
|
|
4
5
|
#include <mutex>
|
|
5
6
|
|
|
6
7
|
@interface AudioEngineSourceRegistration : NSObject
|
|
@@ -149,6 +150,9 @@ static AudioEngine *_sharedInstance = nil;
|
|
|
149
150
|
|
|
150
151
|
- (void)cleanup
|
|
151
152
|
{
|
|
153
|
+
// outside of lock because it locks on its own
|
|
154
|
+
(void)audioapi::ActiveRecorderHandle::global().stopAndReturnInfo();
|
|
155
|
+
|
|
152
156
|
std::scoped_lock lock(_engineLock);
|
|
153
157
|
[self destroyAudioEngine];
|
|
154
158
|
self.state = AudioEngineState::AudioEngineStateIdle;
|
|
@@ -7,6 +7,8 @@ exports.default = useAudioInput;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _api = require("../api");
|
|
9
9
|
const meaningfulReasons = ['NewDeviceAvailable', 'OldDeviceUnavailable',
|
|
10
|
+
// iOS reports a disconnected Bluetooth headset that was the current input this way not old device unavailable
|
|
11
|
+
'Override',
|
|
10
12
|
// e.g. system picks a different device as current one is not suitable for the new configuration
|
|
11
13
|
'CategoryChange', 'ConfigurationChange'];
|
|
12
14
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_api","meaningfulReasons","useAudioInput","availableInputs","setAvailableInputs","useState","currentInput","setCurrentInput","selectInput","useCallback","device","selection","id","AudioManager","setInputDevice","devicesInfo","getDevicesInfo","useEffect","fetchAvailableInputs","audioDevices","currentDeviceId","currentInputs","length","handleRouteChange","event","includes","reason","sub","addSystemEventListener","remove","useMemo","find","d"],"sourceRoot":"../../../src","sources":["hooks/useAudioInput.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAD,OAAA;AAQA,MAAME,iBAAsC,GAAG,CAC7C,oBAAoB,EACpB,sBAAsB;AACtB;AACA,gBAAgB,EAChB,qBAAqB,CACtB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,aAAaA,CAAA,EAAG;EACtC,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,eAAQ,EAAkB,EAAE,CAAC;EAC3E,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAF,eAAQ,EAAgB,IAAI,CAAC;EAErE,MAAMG,WAAW,GAAG,IAAAC,kBAAW,EAC7B,MAAOC,MAAmC,IAAK;IAC7C,MAAMC,SAAS,GAAGD,MAAM,KAAK,SAAS,GAAG,SAAS,GAAGA,MAAM,CAACE,EAAE;IAE9D,MAAMC,iBAAY,CAACC,cAAc,CAACH,SAAS,CAAC;IAC5CJ,eAAe,CAACI,SAAS,KAAK,SAAS,GAAG,IAAI,GAAGA,SAAS,CAAC;IAE3D,MAAMI,WAA6B,GAAG,MAAMF,iBAAY,CAACG,cAAc,CAAC,CAAC;IACzEZ,kBAAkB,CAACW,WAAW,CAACZ,eAAe,CAAC;EACjD,CAAC,EACD,EACF,CAAC;EAED,IAAAc,gBAAS,EAAC,MAAM;IACd,eAAeC,oBAAoBA,CAAA,EAAG;MACpC,MAAMC,YAAY,GAAG,MAAMN,iBAAY,CAACG,cAAc,CAAC,CAAC;MACxD,MAAMI,eAAe,GAAGD,YAAY,CAACE,aAAa,CAACC,MAAM,GACrDH,YAAY,CAACE,aAAa,CAAC,CAAC,CAAC,CAACT,EAAE,GAChC,IAAI;MAERR,kBAAkB,CAACe,YAAY,CAAChB,eAAe,CAAC;MAChDI,eAAe,CAACa,eAAe,CAAC;IAClC;IAEA,eAAeG,iBAAiBA,CAACC,KAA6B,EAAE;MAC9D,IAAI,CAACvB,iBAAiB,CAACwB,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,EAAE;QAC7C;MACF;MAEA,MAAMR,oBAAoB,CAAC,CAAC;IAC9B;IAEA,MAAMS,GAAG,GAAGd,iBAAY,CAACe,sBAAsB,CAC7C,aAAa,EACbL,iBACF,CAAC;IAEDL,oBAAoB,CAAC,CAAC;IACtB,OAAO,MAAM;MACXS,GAAG,EAAEE,MAAM,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,IAAAC,cAAO,EACZ,OAAO;IACL;AACN;AACA;AACA;IACM3B,eAAe;IACf;AACN;AACA;AACA;IACMG,YAAY,EAAEH,eAAe,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACpB,EAAE,KAAKN,YAAY,CAAC,IAAI,IAAI;IACxE;AACN;AACA;AACA;AACA;IACME;EACF,CAAC,CAAC,EACF,CAACL,eAAe,EAAEG,YAAY,EAAEE,WAAW,CAC7C,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_api","meaningfulReasons","useAudioInput","availableInputs","setAvailableInputs","useState","currentInput","setCurrentInput","selectInput","useCallback","device","selection","id","AudioManager","setInputDevice","devicesInfo","getDevicesInfo","useEffect","fetchAvailableInputs","audioDevices","currentDeviceId","currentInputs","length","handleRouteChange","event","includes","reason","sub","addSystemEventListener","remove","useMemo","find","d"],"sourceRoot":"../../../src","sources":["hooks/useAudioInput.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAD,OAAA;AAQA,MAAME,iBAAsC,GAAG,CAC7C,oBAAoB,EACpB,sBAAsB;AACtB;AACA,UAAU;AACV;AACA,gBAAgB,EAChB,qBAAqB,CACtB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,aAAaA,CAAA,EAAG;EACtC,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,eAAQ,EAAkB,EAAE,CAAC;EAC3E,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAF,eAAQ,EAAgB,IAAI,CAAC;EAErE,MAAMG,WAAW,GAAG,IAAAC,kBAAW,EAC7B,MAAOC,MAAmC,IAAK;IAC7C,MAAMC,SAAS,GAAGD,MAAM,KAAK,SAAS,GAAG,SAAS,GAAGA,MAAM,CAACE,EAAE;IAE9D,MAAMC,iBAAY,CAACC,cAAc,CAACH,SAAS,CAAC;IAC5CJ,eAAe,CAACI,SAAS,KAAK,SAAS,GAAG,IAAI,GAAGA,SAAS,CAAC;IAE3D,MAAMI,WAA6B,GAAG,MAAMF,iBAAY,CAACG,cAAc,CAAC,CAAC;IACzEZ,kBAAkB,CAACW,WAAW,CAACZ,eAAe,CAAC;EACjD,CAAC,EACD,EACF,CAAC;EAED,IAAAc,gBAAS,EAAC,MAAM;IACd,eAAeC,oBAAoBA,CAAA,EAAG;MACpC,MAAMC,YAAY,GAAG,MAAMN,iBAAY,CAACG,cAAc,CAAC,CAAC;MACxD,MAAMI,eAAe,GAAGD,YAAY,CAACE,aAAa,CAACC,MAAM,GACrDH,YAAY,CAACE,aAAa,CAAC,CAAC,CAAC,CAACT,EAAE,GAChC,IAAI;MAERR,kBAAkB,CAACe,YAAY,CAAChB,eAAe,CAAC;MAChDI,eAAe,CAACa,eAAe,CAAC;IAClC;IAEA,eAAeG,iBAAiBA,CAACC,KAA6B,EAAE;MAC9D,IAAI,CAACvB,iBAAiB,CAACwB,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,EAAE;QAC7C;MACF;MAEA,MAAMR,oBAAoB,CAAC,CAAC;IAC9B;IAEA,MAAMS,GAAG,GAAGd,iBAAY,CAACe,sBAAsB,CAC7C,aAAa,EACbL,iBACF,CAAC;IAEDL,oBAAoB,CAAC,CAAC;IACtB,OAAO,MAAM;MACXS,GAAG,EAAEE,MAAM,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,IAAAC,cAAO,EACZ,OAAO;IACL;AACN;AACA;AACA;IACM3B,eAAe;IACf;AACN;AACA;AACA;IACMG,YAAY,EAAEH,eAAe,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACpB,EAAE,KAAKN,YAAY,CAAC,IAAI,IAAI;IACxE;AACN;AACA;AACA;AACA;IACME;EACF,CAAC,CAAC,EACF,CAACL,eAAe,EAAEG,YAAY,EAAEE,WAAW,CAC7C,CAAC;AACH","ignoreList":[]}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { AudioManager } from '../api';
|
|
5
5
|
const meaningfulReasons = ['NewDeviceAvailable', 'OldDeviceUnavailable',
|
|
6
|
+
// iOS reports a disconnected Bluetooth headset that was the current input this way not old device unavailable
|
|
7
|
+
'Override',
|
|
6
8
|
// e.g. system picks a different device as current one is not suitable for the new configuration
|
|
7
9
|
'CategoryChange', 'ConfigurationChange'];
|
|
8
10
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useState","AudioManager","meaningfulReasons","useAudioInput","availableInputs","setAvailableInputs","currentInput","setCurrentInput","selectInput","device","selection","id","setInputDevice","devicesInfo","getDevicesInfo","fetchAvailableInputs","audioDevices","currentDeviceId","currentInputs","length","handleRouteChange","event","includes","reason","sub","addSystemEventListener","remove","find","d"],"sourceRoot":"../../../src","sources":["hooks/useAudioInput.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEjE,SAASC,YAAY,QAAQ,QAAQ;AAQrC,MAAMC,iBAAsC,GAAG,CAC7C,oBAAoB,EACpB,sBAAsB;AACtB;AACA,gBAAgB,EAChB,qBAAqB,CACtB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,aAAaA,CAAA,EAAG;EACtC,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGL,QAAQ,CAAkB,EAAE,CAAC;EAC3E,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAGP,QAAQ,CAAgB,IAAI,CAAC;EAErE,MAAMQ,WAAW,GAAGX,WAAW,CAC7B,MAAOY,MAAmC,IAAK;IAC7C,MAAMC,SAAS,GAAGD,MAAM,KAAK,SAAS,GAAG,SAAS,GAAGA,MAAM,CAACE,EAAE;IAE9D,MAAMV,YAAY,CAACW,cAAc,CAACF,SAAS,CAAC;IAC5CH,eAAe,CAACG,SAAS,KAAK,SAAS,GAAG,IAAI,GAAGA,SAAS,CAAC;IAE3D,MAAMG,WAA6B,GAAG,MAAMZ,YAAY,CAACa,cAAc,CAAC,CAAC;IACzET,kBAAkB,CAACQ,WAAW,CAACT,eAAe,CAAC;EACjD,CAAC,EACD,EACF,CAAC;EAEDN,SAAS,CAAC,MAAM;IACd,eAAeiB,oBAAoBA,CAAA,EAAG;MACpC,MAAMC,YAAY,GAAG,MAAMf,YAAY,CAACa,cAAc,CAAC,CAAC;MACxD,MAAMG,eAAe,GAAGD,YAAY,CAACE,aAAa,CAACC,MAAM,GACrDH,YAAY,CAACE,aAAa,CAAC,CAAC,CAAC,CAACP,EAAE,GAChC,IAAI;MAERN,kBAAkB,CAACW,YAAY,CAACZ,eAAe,CAAC;MAChDG,eAAe,CAACU,eAAe,CAAC;IAClC;IAEA,eAAeG,iBAAiBA,CAACC,KAA6B,EAAE;MAC9D,IAAI,CAACnB,iBAAiB,CAACoB,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,EAAE;QAC7C;MACF;MAEA,MAAMR,oBAAoB,CAAC,CAAC;IAC9B;IAEA,MAAMS,GAAG,GAAGvB,YAAY,CAACwB,sBAAsB,CAC7C,aAAa,EACbL,iBACF,CAAC;IAEDL,oBAAoB,CAAC,CAAC;IACtB,OAAO,MAAM;MACXS,GAAG,EAAEE,MAAM,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO3B,OAAO,CACZ,OAAO;IACL;AACN;AACA;AACA;IACMK,eAAe;IACf;AACN;AACA;AACA;IACME,YAAY,EAAEF,eAAe,CAACuB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACjB,EAAE,KAAKL,YAAY,CAAC,IAAI,IAAI;IACxE;AACN;AACA;AACA;AACA;IACME;EACF,CAAC,CAAC,EACF,CAACJ,eAAe,EAAEE,YAAY,EAAEE,WAAW,CAC7C,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useState","AudioManager","meaningfulReasons","useAudioInput","availableInputs","setAvailableInputs","currentInput","setCurrentInput","selectInput","device","selection","id","setInputDevice","devicesInfo","getDevicesInfo","fetchAvailableInputs","audioDevices","currentDeviceId","currentInputs","length","handleRouteChange","event","includes","reason","sub","addSystemEventListener","remove","find","d"],"sourceRoot":"../../../src","sources":["hooks/useAudioInput.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEjE,SAASC,YAAY,QAAQ,QAAQ;AAQrC,MAAMC,iBAAsC,GAAG,CAC7C,oBAAoB,EACpB,sBAAsB;AACtB;AACA,UAAU;AACV;AACA,gBAAgB,EAChB,qBAAqB,CACtB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,aAAaA,CAAA,EAAG;EACtC,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGL,QAAQ,CAAkB,EAAE,CAAC;EAC3E,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAGP,QAAQ,CAAgB,IAAI,CAAC;EAErE,MAAMQ,WAAW,GAAGX,WAAW,CAC7B,MAAOY,MAAmC,IAAK;IAC7C,MAAMC,SAAS,GAAGD,MAAM,KAAK,SAAS,GAAG,SAAS,GAAGA,MAAM,CAACE,EAAE;IAE9D,MAAMV,YAAY,CAACW,cAAc,CAACF,SAAS,CAAC;IAC5CH,eAAe,CAACG,SAAS,KAAK,SAAS,GAAG,IAAI,GAAGA,SAAS,CAAC;IAE3D,MAAMG,WAA6B,GAAG,MAAMZ,YAAY,CAACa,cAAc,CAAC,CAAC;IACzET,kBAAkB,CAACQ,WAAW,CAACT,eAAe,CAAC;EACjD,CAAC,EACD,EACF,CAAC;EAEDN,SAAS,CAAC,MAAM;IACd,eAAeiB,oBAAoBA,CAAA,EAAG;MACpC,MAAMC,YAAY,GAAG,MAAMf,YAAY,CAACa,cAAc,CAAC,CAAC;MACxD,MAAMG,eAAe,GAAGD,YAAY,CAACE,aAAa,CAACC,MAAM,GACrDH,YAAY,CAACE,aAAa,CAAC,CAAC,CAAC,CAACP,EAAE,GAChC,IAAI;MAERN,kBAAkB,CAACW,YAAY,CAACZ,eAAe,CAAC;MAChDG,eAAe,CAACU,eAAe,CAAC;IAClC;IAEA,eAAeG,iBAAiBA,CAACC,KAA6B,EAAE;MAC9D,IAAI,CAACnB,iBAAiB,CAACoB,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,EAAE;QAC7C;MACF;MAEA,MAAMR,oBAAoB,CAAC,CAAC;IAC9B;IAEA,MAAMS,GAAG,GAAGvB,YAAY,CAACwB,sBAAsB,CAC7C,aAAa,EACbL,iBACF,CAAC;IAEDL,oBAAoB,CAAC,CAAC;IACtB,OAAO,MAAM;MACXS,GAAG,EAAEE,MAAM,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO3B,OAAO,CACZ,OAAO;IACL;AACN;AACA;AACA;IACMK,eAAe;IACf;AACN;AACA;AACA;IACME,YAAY,EAAEF,eAAe,CAACuB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACjB,EAAE,KAAKL,YAAY,CAAC,IAAI,IAAI;IACxE;AACN;AACA;AACA;AACA;IACME;EACF,CAAC,CAAC,EACF,CAACJ,eAAe,EAAEE,YAAY,EAAEE,WAAW,CAC7C,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAudioInput.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAudioInput.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAudioInput.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAudioInput.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAYzB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa;IAiD/B;;;OAGG;;IAEH;;;OAGG;;IAEH;;;;OAIG;0BA1DU,eAAe,GAAG,SAAS;EA+D7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAudioInput.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAudioInput.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAudioInput.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAudioInput.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAYzB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa;IAiD/B;;;OAGG;;IAEH;;;OAGG;;IAEH;;;;OAIG;0BA1DU,eAAe,GAAG,SAAS;EA+D7C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-audio-api",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
|
|
5
5
|
"bin": {
|
|
6
6
|
"setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
|
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
const meaningfulReasons: RouteChangeReason[] = [
|
|
12
12
|
'NewDeviceAvailable',
|
|
13
13
|
'OldDeviceUnavailable',
|
|
14
|
+
// iOS reports a disconnected Bluetooth headset that was the current input this way not old device unavailable
|
|
15
|
+
'Override',
|
|
14
16
|
// e.g. system picks a different device as current one is not suitable for the new configuration
|
|
15
17
|
'CategoryChange',
|
|
16
18
|
'ConfigurationChange',
|