react-native-audio-api 0.6.0-rc.5 → 0.6.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/cpp/audioapi/android/AudioAPIModule.cpp +35 -2
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +4 -0
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +31 -17
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +1 -3
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +56 -2
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +0 -12
- package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +35 -12
- package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +30 -29
- package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +20 -22
- package/android/src/main/java/com/swmansion/audioapi/system/MediaReceiver.kt +19 -9
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +30 -11
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +34 -27
- package/android/src/main/java/com/swmansion/audioapi/system/VolumeChangeListener.kt +10 -5
- package/android/src/oldarch/NativeAudioAPIModuleSpec.java +39 -0
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +20 -14
- package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +2 -3
- package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +24 -11
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +10 -89
- package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +3 -24
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +2 -2
- package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +2 -3
- package/common/cpp/audioapi/core/AudioContext.cpp +4 -1
- package/common/cpp/audioapi/core/AudioContext.h +1 -1
- package/common/cpp/audioapi/core/AudioNode.cpp +31 -2
- package/common/cpp/audioapi/core/AudioNode.h +7 -1
- package/common/cpp/audioapi/core/AudioParam.cpp +84 -2
- package/common/cpp/audioapi/core/AudioParam.h +14 -1
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +6 -1
- package/common/cpp/audioapi/core/BaseAudioContext.h +7 -1
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +3 -2
- package/common/cpp/audioapi/core/OfflineAudioContext.h +1 -1
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +28 -26
- package/common/cpp/audioapi/core/effects/GainNode.cpp +9 -9
- package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +5 -2
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +56 -0
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +13 -13
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +14 -10
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +1 -1
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +7 -6
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +5 -3
- package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +15 -10
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +35 -1
- package/common/cpp/audioapi/core/utils/AudioNodeManager.h +15 -1
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +108 -0
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +62 -0
- package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +48 -0
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +3 -4
- package/ios/audioapi/ios/AudioAPIModule.h +13 -0
- package/ios/audioapi/ios/AudioAPIModule.mm +115 -6
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +2 -10
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +6 -17
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +2 -0
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +7 -3
- package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +7 -0
- package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +12 -0
- package/ios/audioapi/ios/system/AudioEngine.h +5 -0
- package/ios/audioapi/ios/system/AudioEngine.mm +7 -15
- package/ios/audioapi/ios/system/AudioSessionManager.h +1 -1
- package/ios/audioapi/ios/system/AudioSessionManager.mm +2 -18
- package/ios/audioapi/ios/system/LockScreenManager.h +3 -3
- package/ios/audioapi/ios/system/LockScreenManager.mm +36 -48
- package/ios/audioapi/ios/system/NotificationManager.h +3 -3
- package/ios/audioapi/ios/system/NotificationManager.mm +21 -29
- package/lib/commonjs/api.js +4 -4
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/core/AudioBufferSourceNode.js +2 -2
- package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioNode.js +8 -2
- package/lib/commonjs/core/AudioNode.js.map +1 -1
- package/lib/commonjs/core/AudioParam.js +2 -1
- package/lib/commonjs/core/AudioParam.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +11 -28
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -1
- package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/commonjs/core/BiquadFilterNode.js +4 -4
- package/lib/commonjs/core/BiquadFilterNode.js.map +1 -1
- package/lib/commonjs/core/GainNode.js +1 -1
- package/lib/commonjs/core/GainNode.js.map +1 -1
- package/lib/commonjs/core/OscillatorNode.js +2 -2
- package/lib/commonjs/core/OscillatorNode.js.map +1 -1
- package/lib/commonjs/core/StereoPannerNode.js +1 -1
- package/lib/commonjs/core/StereoPannerNode.js.map +1 -1
- package/lib/commonjs/events/AudioEventEmitter.js +22 -0
- package/lib/commonjs/events/AudioEventEmitter.js.map +1 -0
- package/lib/commonjs/events/AudioEventSubscription.js +20 -0
- package/lib/commonjs/events/AudioEventSubscription.js.map +1 -0
- package/lib/commonjs/events/index.js +21 -0
- package/lib/commonjs/events/index.js.map +1 -0
- package/lib/commonjs/events/types.js +6 -0
- package/lib/commonjs/events/types.js.map +1 -0
- package/lib/commonjs/hooks/useSytemVolume.js +1 -1
- package/lib/commonjs/hooks/useSytemVolume.js.map +1 -1
- package/lib/commonjs/specs/NativeAudioAPIModule.js +3 -3
- package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/commonjs/specs/index.js +2 -16
- package/lib/commonjs/specs/index.js.map +1 -1
- package/lib/commonjs/system/AudioManager.js +22 -28
- package/lib/commonjs/system/AudioManager.js.map +1 -1
- package/lib/module/api.js +2 -2
- package/lib/module/api.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +2 -2
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioNode.js +7 -2
- package/lib/module/core/AudioNode.js.map +1 -1
- package/lib/module/core/AudioParam.js +2 -1
- package/lib/module/core/AudioParam.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +11 -28
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/core/AudioScheduledSourceNode.js +4 -1
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/core/BiquadFilterNode.js +4 -4
- package/lib/module/core/BiquadFilterNode.js.map +1 -1
- package/lib/module/core/GainNode.js +1 -1
- package/lib/module/core/GainNode.js.map +1 -1
- package/lib/module/core/OscillatorNode.js +2 -2
- package/lib/module/core/OscillatorNode.js.map +1 -1
- package/lib/module/core/StereoPannerNode.js +1 -1
- package/lib/module/core/StereoPannerNode.js.map +1 -1
- package/lib/module/events/AudioEventEmitter.js +16 -0
- package/lib/module/events/AudioEventEmitter.js.map +1 -0
- package/lib/module/events/AudioEventSubscription.js +15 -0
- package/lib/module/events/AudioEventSubscription.js.map +1 -0
- package/lib/module/events/index.js +6 -0
- package/lib/module/events/index.js.map +1 -0
- package/lib/module/events/types.js +4 -0
- package/lib/module/events/types.js.map +1 -0
- package/lib/module/hooks/useSytemVolume.js +1 -1
- package/lib/module/hooks/useSytemVolume.js.map +1 -1
- package/lib/module/specs/NativeAudioAPIModule.js +3 -2
- package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/module/specs/index.js +2 -3
- package/lib/module/specs/index.js.map +1 -1
- package/lib/module/system/AudioManager.js +23 -29
- package/lib/module/system/AudioManager.js.map +1 -1
- package/lib/typescript/api.d.ts +2 -1
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/core/AudioNode.d.ts +2 -1
- package/lib/typescript/core/AudioNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioParam.d.ts +4 -2
- package/lib/typescript/core/AudioParam.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +4 -14
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +3 -1
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
- package/lib/typescript/events/AudioEventEmitter.d.ts +10 -0
- package/lib/typescript/events/AudioEventEmitter.d.ts.map +1 -0
- package/lib/typescript/events/AudioEventSubscription.d.ts +11 -0
- package/lib/typescript/events/AudioEventSubscription.d.ts.map +1 -0
- package/lib/typescript/events/index.d.ts +4 -0
- package/lib/typescript/events/index.d.ts.map +1 -0
- package/lib/typescript/events/types.d.ts +50 -0
- package/lib/typescript/events/types.d.ts.map +1 -0
- package/lib/typescript/hooks/useSytemVolume.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +10 -10
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts +15 -3
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/specs/index.d.ts +2 -3
- package/lib/typescript/specs/index.d.ts.map +1 -1
- package/lib/typescript/system/AudioManager.d.ts +6 -4
- package/lib/typescript/system/AudioManager.d.ts.map +1 -1
- package/lib/typescript/system/types.d.ts +0 -34
- package/lib/typescript/system/types.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +0 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/api.ts +6 -3
- package/src/core/AudioBufferSourceNode.ts +2 -2
- package/src/core/AudioNode.ts +8 -3
- package/src/core/AudioParam.ts +5 -2
- package/src/core/AudioRecorder.ts +22 -62
- package/src/core/AudioScheduledSourceNode.ts +13 -2
- package/src/core/BiquadFilterNode.ts +4 -4
- package/src/core/GainNode.ts +1 -1
- package/src/core/OscillatorNode.ts +2 -2
- package/src/core/StereoPannerNode.ts +1 -1
- package/src/events/AudioEventEmitter.ts +29 -0
- package/src/events/AudioEventSubscription.ts +26 -0
- package/src/events/index.ts +4 -0
- package/src/events/types.ts +64 -0
- package/src/hooks/useSytemVolume.ts +2 -1
- package/src/interfaces.ts +19 -20
- package/src/specs/NativeAudioAPIModule.ts +23 -2
- package/src/specs/index.ts +2 -4
- package/src/system/AudioManager.ts +35 -43
- package/src/system/types.ts +0 -42
- package/src/types.ts +0 -8
- package/android/src/main/java/com/swmansion/audioapi/AudioManagerModule.kt +0 -77
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionEventEmitter.kt +0 -88
- package/android/src/oldarch/NativeAudioManagerModuleSpec.java +0 -99
- package/ios/audioapi/ios/AudioManagerModule.h +0 -18
- package/ios/audioapi/ios/AudioManagerModule.mm +0 -108
- package/lib/commonjs/specs/NativeAudioManagerModule.js +0 -42
- package/lib/commonjs/specs/NativeAudioManagerModule.js.map +0 -1
- package/lib/module/specs/NativeAudioManagerModule.js +0 -39
- package/lib/module/specs/NativeAudioManagerModule.js.map +0 -1
- package/lib/typescript/specs/NativeAudioManagerModule.d.ts +0 -18
- package/lib/typescript/specs/NativeAudioManagerModule.d.ts.map +0 -1
- package/src/specs/NativeAudioManagerModule.ts +0 -53
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
package com.swmansion.audioapi
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
|
-
import com.facebook.react.bridge.ReactMethod
|
|
7
|
-
import com.facebook.react.bridge.ReadableArray
|
|
8
|
-
import com.facebook.react.bridge.ReadableMap
|
|
9
|
-
import com.swmansion.audioapi.system.MediaSessionManager
|
|
10
|
-
|
|
11
|
-
class AudioManagerModule(
|
|
12
|
-
reactContext: ReactApplicationContext,
|
|
13
|
-
) : ReactContextBaseJavaModule(reactContext) {
|
|
14
|
-
companion object {
|
|
15
|
-
const val NAME = "AudioManagerModule"
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
init {
|
|
19
|
-
try {
|
|
20
|
-
System.loadLibrary("react-native-audio-api")
|
|
21
|
-
} catch (exception: UnsatisfiedLinkError) {
|
|
22
|
-
throw RuntimeException("Could not load native module AudioAPIModule", exception)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
MediaSessionManager.initialize(reactContext)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
29
|
-
fun setLockScreenInfo(info: ReadableMap?) {
|
|
30
|
-
MediaSessionManager.setLockScreenInfo(info)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
34
|
-
fun resetLockScreenInfo() {
|
|
35
|
-
MediaSessionManager.resetLockScreenInfo()
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
39
|
-
fun enableRemoteCommand(
|
|
40
|
-
name: String,
|
|
41
|
-
enabled: Boolean,
|
|
42
|
-
) {
|
|
43
|
-
MediaSessionManager.enableRemoteCommand(name, enabled)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
47
|
-
fun setAudioSessionOptions(
|
|
48
|
-
category: String?,
|
|
49
|
-
mode: String?,
|
|
50
|
-
options: ReadableArray?,
|
|
51
|
-
) {
|
|
52
|
-
// Nothing to do here
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
56
|
-
fun getDevicePreferredSampleRate(): Double = MediaSessionManager.getDevicePreferredSampleRate()
|
|
57
|
-
|
|
58
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
59
|
-
fun observeAudioInterruptions(enable: Boolean) = MediaSessionManager.observeAudioInterruptions(enable)
|
|
60
|
-
|
|
61
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
62
|
-
fun observeVolumeChanges(enable: Boolean) = MediaSessionManager.observeVolumeChanges(enable)
|
|
63
|
-
|
|
64
|
-
@ReactMethod
|
|
65
|
-
fun requestRecordingPermissions(promise: Promise) {
|
|
66
|
-
val res = MediaSessionManager.requestRecordingPermissions(currentActivity)
|
|
67
|
-
promise.resolve(res)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
@ReactMethod
|
|
71
|
-
fun checkRecordingPermissions(promise: Promise) {
|
|
72
|
-
val res = MediaSessionManager.checkRecordingPermissions()
|
|
73
|
-
promise.resolve(res)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
override fun getName(): String = NAME
|
|
77
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
package com.swmansion.audioapi.system
|
|
2
|
-
|
|
3
|
-
import android.content.Intent
|
|
4
|
-
import android.os.Build
|
|
5
|
-
import androidx.core.app.NotificationManagerCompat
|
|
6
|
-
import com.facebook.react.bridge.Arguments
|
|
7
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
9
|
-
|
|
10
|
-
class MediaSessionEventEmitter(
|
|
11
|
-
val reactContext: ReactApplicationContext,
|
|
12
|
-
val notificationId: Int,
|
|
13
|
-
) {
|
|
14
|
-
fun sendEvent(
|
|
15
|
-
name: String,
|
|
16
|
-
values: Map<String, Any>?,
|
|
17
|
-
) {
|
|
18
|
-
val data = Arguments.createMap()
|
|
19
|
-
|
|
20
|
-
if (values != null) {
|
|
21
|
-
for (value in values) {
|
|
22
|
-
when (value.value) {
|
|
23
|
-
is Double, is Float -> {
|
|
24
|
-
data.putDouble(value.key, value.value as Double)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
is Boolean -> {
|
|
28
|
-
data.putBoolean(value.key, value.value as Boolean)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
is Int -> {
|
|
32
|
-
data.putInt(value.key, value.value as Int)
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
reactContext
|
|
39
|
-
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
40
|
-
.emit(name, data)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
fun onPlay() {
|
|
44
|
-
sendEvent("onRemotePlay", null)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
fun onPause() {
|
|
48
|
-
sendEvent("onRemotePause", null)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
fun onStop() {
|
|
52
|
-
stopForegroundService()
|
|
53
|
-
sendEvent("onRemoteStop", null)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
fun onSkipToNext() {
|
|
57
|
-
sendEvent("onRemoteNextTrack", null)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
fun onSkipToPrevious() {
|
|
61
|
-
sendEvent("onRemotePreviousTrack", null)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
fun onFastForward() {
|
|
65
|
-
sendEvent("onRemoteSkipForward", null)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
fun onRewind() {
|
|
69
|
-
sendEvent("onRemoteSkipBackward", null)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
fun onInterruption(values: Map<String, Any>) {
|
|
73
|
-
sendEvent("onInterruption", values)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
fun onVolumeChange(values: Map<String, Number>) {
|
|
77
|
-
sendEvent("onVolumeChange", values)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private fun stopForegroundService() {
|
|
81
|
-
NotificationManagerCompat.from(reactContext).cancel(notificationId)
|
|
82
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
83
|
-
val myIntent =
|
|
84
|
-
Intent(reactContext, MediaNotificationManager.NotificationService::class.java)
|
|
85
|
-
reactContext.stopService(myIntent)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
-
*
|
|
5
|
-
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
-
* once the code is regenerated.
|
|
7
|
-
*
|
|
8
|
-
* @generated by codegen project: GenerateModuleJavaSpec.js
|
|
9
|
-
*
|
|
10
|
-
* @nolint
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
package com.swmansion.audioapi;
|
|
14
|
-
|
|
15
|
-
import com.facebook.proguard.annotations.DoNotStrip;
|
|
16
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
|
17
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
18
|
-
import com.facebook.react.bridge.ReactMethod;
|
|
19
|
-
import com.facebook.react.bridge.ReadableArray;
|
|
20
|
-
import com.facebook.react.bridge.ReadableMap;
|
|
21
|
-
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
22
|
-
import javax.annotation.Nonnull;
|
|
23
|
-
|
|
24
|
-
public abstract class NativeAudioManagerModuleSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
25
|
-
public static final String NAME = "AudioManagerModule";
|
|
26
|
-
|
|
27
|
-
public NativeAudioManagerModuleSpec(ReactApplicationContext reactContext) {
|
|
28
|
-
super(reactContext);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@Override
|
|
32
|
-
public @Nonnull String getName() {
|
|
33
|
-
return NAME;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
protected final void emitOnRemotePlay() {
|
|
37
|
-
mEventEmitterCallback.invoke("onRemotePlay");
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
protected final void emitOnRemotePause() {
|
|
41
|
-
mEventEmitterCallback.invoke("onRemotePause");
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
protected final void emitOnStop() {
|
|
45
|
-
mEventEmitterCallback.invoke("onStop");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
protected final void emitOnTogglePlayPause() {
|
|
49
|
-
mEventEmitterCallback.invoke("onTogglePlayPause");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
protected final void emitOnChangePlaybackRate(double value) {
|
|
53
|
-
mEventEmitterCallback.invoke("onChangePlaybackRate", value);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
protected final void emitOnNextTrack() {
|
|
57
|
-
mEventEmitterCallback.invoke("onNextTrack");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
protected final void emitOnPreviousTrack() {
|
|
61
|
-
mEventEmitterCallback.invoke("onPreviousTrack");
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
protected final void emitOnSkipForward(double value) {
|
|
65
|
-
mEventEmitterCallback.invoke("onSkipForward", value);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
protected final void emitOnSkipBackward(double value) {
|
|
69
|
-
mEventEmitterCallback.invoke("onSkipBackward", value);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
protected final void emitOnSeekForward() {
|
|
73
|
-
mEventEmitterCallback.invoke("onSeekForward");
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
protected final void emitOnSeekBackward() {
|
|
77
|
-
mEventEmitterCallback.invoke("onSeekBackward");
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
protected final void emitOnChangePlaybackPosition(double value) {
|
|
81
|
-
mEventEmitterCallback.invoke("onChangePlaybackPosition", value);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@ReactMethod
|
|
85
|
-
@DoNotStrip
|
|
86
|
-
public abstract void setLockScreenInfo(ReadableMap info);
|
|
87
|
-
|
|
88
|
-
@ReactMethod
|
|
89
|
-
@DoNotStrip
|
|
90
|
-
public abstract void resetLockScreenInfo();
|
|
91
|
-
|
|
92
|
-
@ReactMethod
|
|
93
|
-
@DoNotStrip
|
|
94
|
-
public abstract void setSessionOptions(String category, String mode, ReadableArray options);
|
|
95
|
-
|
|
96
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
97
|
-
@DoNotStrip
|
|
98
|
-
public abstract double getDevicePreferredSampleRate();
|
|
99
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#import <React/RCTBridgeModule.h>
|
|
4
|
-
#import <React/RCTEventEmitter.h>
|
|
5
|
-
|
|
6
|
-
@class AudioEngine;
|
|
7
|
-
@class NotificationManager;
|
|
8
|
-
@class AudioSessionManager;
|
|
9
|
-
@class LockScreenManager;
|
|
10
|
-
|
|
11
|
-
@interface AudioManagerModule : RCTEventEmitter <RCTBridgeModule>
|
|
12
|
-
|
|
13
|
-
@property (nonatomic, strong) AudioEngine *audioEngine;
|
|
14
|
-
@property (nonatomic, strong) NotificationManager *notificationManager;
|
|
15
|
-
@property (nonatomic, strong) AudioSessionManager *audioSessionManager;
|
|
16
|
-
@property (nonatomic, strong) LockScreenManager *lockScreenManager;
|
|
17
|
-
|
|
18
|
-
@end
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
#import <audioapi/ios/AudioManagerModule.h>
|
|
2
|
-
|
|
3
|
-
#import <audioapi/ios/system/AudioEngine.h>
|
|
4
|
-
#import <audioapi/ios/system/AudioSessionManager.h>
|
|
5
|
-
#import <audioapi/ios/system/LockScreenManager.h>
|
|
6
|
-
#import <audioapi/ios/system/NotificationManager.h>
|
|
7
|
-
|
|
8
|
-
@implementation AudioManagerModule
|
|
9
|
-
|
|
10
|
-
RCT_EXPORT_MODULE(AudioManagerModule);
|
|
11
|
-
|
|
12
|
-
- (id)init
|
|
13
|
-
{
|
|
14
|
-
if (self == [super init]) {
|
|
15
|
-
self.audioEngine = [AudioEngine sharedInstance];
|
|
16
|
-
self.audioSessionManager = [AudioSessionManager sharedInstance];
|
|
17
|
-
self.notificationManager = [NotificationManager sharedInstanceWithAudioManagerModule:self];
|
|
18
|
-
self.lockScreenManager = [LockScreenManager sharedInstanceWithAudioManagerModule:self];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return self;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
- (void)cleanup
|
|
25
|
-
{
|
|
26
|
-
[self.audioEngine cleanup];
|
|
27
|
-
[self.notificationManager cleanup];
|
|
28
|
-
[self.audioSessionManager cleanup];
|
|
29
|
-
[self.lockScreenManager cleanup];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
- (void)dealloc
|
|
33
|
-
{
|
|
34
|
-
[self cleanup];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
RCT_EXPORT_METHOD(setLockScreenInfo : (NSDictionary *)info)
|
|
38
|
-
{
|
|
39
|
-
[self.lockScreenManager setLockScreenInfo:info];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
RCT_EXPORT_METHOD(resetLockScreenInfo)
|
|
43
|
-
{
|
|
44
|
-
[self.lockScreenManager resetLockScreenInfo];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
RCT_EXPORT_METHOD(enableRemoteCommand : (NSString *)name enabled : (BOOL)enabled)
|
|
48
|
-
{
|
|
49
|
-
[self.lockScreenManager enableRemoteCommand:name enabled:enabled];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
RCT_EXPORT_METHOD(setAudioSessionOptions : (NSString *)category mode : (NSString *)mode options : (NSArray *)options)
|
|
53
|
-
{
|
|
54
|
-
[self.audioSessionManager setAudioSessionOptions:category mode:mode options:options];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
RCT_EXPORT_METHOD(observeAudioInterruptions : (BOOL)enabled)
|
|
58
|
-
{
|
|
59
|
-
[self.notificationManager observeAudioInterruptions:enabled];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
RCT_EXPORT_METHOD(observeVolumeChanges : (BOOL)enabled)
|
|
63
|
-
{
|
|
64
|
-
[self.notificationManager observeVolumeChanges:(BOOL)enabled];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getDevicePreferredSampleRate)
|
|
68
|
-
{
|
|
69
|
-
return [self.audioSessionManager getDevicePreferredSampleRate];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
RCT_EXPORT_METHOD(requestRecordingPermissions : (RCTPromiseResolveBlock)resolve
|
|
73
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
74
|
-
{
|
|
75
|
-
|
|
76
|
-
NSString* res = [self.audioSessionManager requestRecordingPermissions];
|
|
77
|
-
resolve(res);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
RCT_EXPORT_METHOD(checkRecordingPermissions : (RCTPromiseResolveBlock)resolve
|
|
81
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
82
|
-
{
|
|
83
|
-
NSString* res = [self.audioSessionManager checkRecordingPermissions];
|
|
84
|
-
resolve(res);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
- (NSArray<NSString *> *)supportedEvents
|
|
88
|
-
{
|
|
89
|
-
return @[
|
|
90
|
-
@"onRemotePlay",
|
|
91
|
-
@"onRemotePause",
|
|
92
|
-
@"onRemoteStop",
|
|
93
|
-
@"onRemoteTogglePlayPause",
|
|
94
|
-
@"onRemoteChangePlaybackRate",
|
|
95
|
-
@"onRemoteNextTrack",
|
|
96
|
-
@"onRemotePreviousTrack",
|
|
97
|
-
@"onRemoteSkipForward",
|
|
98
|
-
@"onRemoteSkipBackward",
|
|
99
|
-
@"onRemoteSeekForward",
|
|
100
|
-
@"onRemoteSeekBackward",
|
|
101
|
-
@"onRemoteChangePlaybackPosition",
|
|
102
|
-
@"onInterruption",
|
|
103
|
-
@"onRouteChange",
|
|
104
|
-
@"onVolumeChange"
|
|
105
|
-
];
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
@end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.eventEmitter = exports.AudioManagerModule = void 0;
|
|
7
|
-
var _reactNative = require("react-native");
|
|
8
|
-
const NativeAudioManagerModule = _reactNative.NativeModules.AudioManagerModule;
|
|
9
|
-
const eventEmitter = exports.eventEmitter = _reactNative.Platform.OS === 'android' ? new _reactNative.NativeEventEmitter() : new _reactNative.NativeEventEmitter(_reactNative.NativeModules.AudioManagerModule);
|
|
10
|
-
if (!NativeAudioManagerModule || !eventEmitter) {
|
|
11
|
-
throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
|
|
12
|
-
}
|
|
13
|
-
const AudioManagerModule = exports.AudioManagerModule = {
|
|
14
|
-
setLockScreenInfo(info) {
|
|
15
|
-
NativeAudioManagerModule.setLockScreenInfo(info);
|
|
16
|
-
},
|
|
17
|
-
resetLockScreenInfo() {
|
|
18
|
-
NativeAudioManagerModule.resetLockScreenInfo();
|
|
19
|
-
},
|
|
20
|
-
enableRemoteCommand(name, enabled) {
|
|
21
|
-
NativeAudioManagerModule.enableRemoteCommand(name, enabled);
|
|
22
|
-
},
|
|
23
|
-
setAudioSessionOptions(category, mode, options) {
|
|
24
|
-
NativeAudioManagerModule.setAudioSessionOptions(category, mode, options);
|
|
25
|
-
},
|
|
26
|
-
getDevicePreferredSampleRate() {
|
|
27
|
-
return NativeAudioManagerModule.getDevicePreferredSampleRate();
|
|
28
|
-
},
|
|
29
|
-
observeAudioInterruptions(enabled) {
|
|
30
|
-
NativeAudioManagerModule.observeAudioInterruptions(enabled);
|
|
31
|
-
},
|
|
32
|
-
observeVolumeChanges(enabled) {
|
|
33
|
-
NativeAudioManagerModule.observeVolumeChanges(enabled);
|
|
34
|
-
},
|
|
35
|
-
requestRecordingPermissions() {
|
|
36
|
-
return NativeAudioManagerModule.requestRecordingPermissions();
|
|
37
|
-
},
|
|
38
|
-
checkRecordingPermissions() {
|
|
39
|
-
return NativeAudioManagerModule.checkRecordingPermissions();
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=NativeAudioManagerModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","NativeAudioManagerModule","NativeModules","AudioManagerModule","eventEmitter","exports","Platform","OS","NativeEventEmitter","Error","setLockScreenInfo","info","resetLockScreenInfo","enableRemoteCommand","name","enabled","setAudioSessionOptions","category","mode","options","getDevicePreferredSampleRate","observeAudioInterruptions","observeVolumeChanges","requestRecordingPermissions","checkRecordingPermissions"],"sourceRoot":"../../../src","sources":["specs/NativeAudioManagerModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,wBAAwB,GAAGC,0BAAa,CAACC,kBAAkB;AACjE,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAChBE,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrB,IAAIC,+BAAkB,CAAC,CAAC,GACxB,IAAIA,+BAAkB,CAACN,0BAAa,CAACC,kBAAkB,CAAC;AAE9D,IAAI,CAACF,wBAAwB,IAAI,CAACG,YAAY,EAAE;EAC9C,MAAM,IAAIK,KAAK,CACb,iFACF,CAAC;AACH;AAEA,MAAMN,kBAAkB,GAAAE,OAAA,CAAAF,kBAAA,GAAG;EACzBO,iBAAiBA,CAACC,IAEjB,EAAQ;IACPV,wBAAwB,CAACS,iBAAiB,CAACC,IAAI,CAAC;EAClD,CAAC;EACDC,mBAAmBA,CAAA,EAAS;IAC1BX,wBAAwB,CAACW,mBAAmB,CAAC,CAAC;EAChD,CAAC;EACDC,mBAAmBA,CAACC,IAAY,EAAEC,OAAgB,EAAQ;IACxDd,wBAAwB,CAACY,mBAAmB,CAACC,IAAI,EAAEC,OAAO,CAAC;EAC7D,CAAC;EACDC,sBAAsBA,CACpBC,QAAgB,EAChBC,IAAY,EACZC,OAAsB,EAChB;IACNlB,wBAAwB,CAACe,sBAAsB,CAACC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;EAC1E,CAAC;EACDC,4BAA4BA,CAAA,EAAW;IACrC,OAAOnB,wBAAwB,CAACmB,4BAA4B,CAAC,CAAC;EAChE,CAAC;EACDC,yBAAyBA,CAACN,OAAgB,EAAQ;IAChDd,wBAAwB,CAACoB,yBAAyB,CAACN,OAAO,CAAC;EAC7D,CAAC;EACDO,oBAAoBA,CAACP,OAAgB,EAAQ;IAC3Cd,wBAAwB,CAACqB,oBAAoB,CAACP,OAAO,CAAC;EACxD,CAAC;EACDQ,2BAA2BA,CAAA,EAA8B;IACvD,OAAOtB,wBAAwB,CAACsB,2BAA2B,CAAC,CAAC;EAC/D,CAAC;EAEDC,yBAAyBA,CAAA,EAA8B;IACrD,OAAOvB,wBAAwB,CAACuB,yBAAyB,CAAC,CAAC;EAC7D;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
|
|
4
|
-
const NativeAudioManagerModule = NativeModules.AudioManagerModule;
|
|
5
|
-
const eventEmitter = Platform.OS === 'android' ? new NativeEventEmitter() : new NativeEventEmitter(NativeModules.AudioManagerModule);
|
|
6
|
-
if (!NativeAudioManagerModule || !eventEmitter) {
|
|
7
|
-
throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
|
|
8
|
-
}
|
|
9
|
-
const AudioManagerModule = {
|
|
10
|
-
setLockScreenInfo(info) {
|
|
11
|
-
NativeAudioManagerModule.setLockScreenInfo(info);
|
|
12
|
-
},
|
|
13
|
-
resetLockScreenInfo() {
|
|
14
|
-
NativeAudioManagerModule.resetLockScreenInfo();
|
|
15
|
-
},
|
|
16
|
-
enableRemoteCommand(name, enabled) {
|
|
17
|
-
NativeAudioManagerModule.enableRemoteCommand(name, enabled);
|
|
18
|
-
},
|
|
19
|
-
setAudioSessionOptions(category, mode, options) {
|
|
20
|
-
NativeAudioManagerModule.setAudioSessionOptions(category, mode, options);
|
|
21
|
-
},
|
|
22
|
-
getDevicePreferredSampleRate() {
|
|
23
|
-
return NativeAudioManagerModule.getDevicePreferredSampleRate();
|
|
24
|
-
},
|
|
25
|
-
observeAudioInterruptions(enabled) {
|
|
26
|
-
NativeAudioManagerModule.observeAudioInterruptions(enabled);
|
|
27
|
-
},
|
|
28
|
-
observeVolumeChanges(enabled) {
|
|
29
|
-
NativeAudioManagerModule.observeVolumeChanges(enabled);
|
|
30
|
-
},
|
|
31
|
-
requestRecordingPermissions() {
|
|
32
|
-
return NativeAudioManagerModule.requestRecordingPermissions();
|
|
33
|
-
},
|
|
34
|
-
checkRecordingPermissions() {
|
|
35
|
-
return NativeAudioManagerModule.checkRecordingPermissions();
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
export { eventEmitter, AudioManagerModule };
|
|
39
|
-
//# sourceMappingURL=NativeAudioManagerModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","NativeEventEmitter","Platform","NativeAudioManagerModule","AudioManagerModule","eventEmitter","OS","Error","setLockScreenInfo","info","resetLockScreenInfo","enableRemoteCommand","name","enabled","setAudioSessionOptions","category","mode","options","getDevicePreferredSampleRate","observeAudioInterruptions","observeVolumeChanges","requestRecordingPermissions","checkRecordingPermissions"],"sourceRoot":"../../../src","sources":["specs/NativeAudioManagerModule.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAG1E,MAAMC,wBAAwB,GAAGH,aAAa,CAACI,kBAAkB;AACjE,MAAMC,YAAY,GAChBH,QAAQ,CAACI,EAAE,KAAK,SAAS,GACrB,IAAIL,kBAAkB,CAAC,CAAC,GACxB,IAAIA,kBAAkB,CAACD,aAAa,CAACI,kBAAkB,CAAC;AAE9D,IAAI,CAACD,wBAAwB,IAAI,CAACE,YAAY,EAAE;EAC9C,MAAM,IAAIE,KAAK,CACb,iFACF,CAAC;AACH;AAEA,MAAMH,kBAAkB,GAAG;EACzBI,iBAAiBA,CAACC,IAEjB,EAAQ;IACPN,wBAAwB,CAACK,iBAAiB,CAACC,IAAI,CAAC;EAClD,CAAC;EACDC,mBAAmBA,CAAA,EAAS;IAC1BP,wBAAwB,CAACO,mBAAmB,CAAC,CAAC;EAChD,CAAC;EACDC,mBAAmBA,CAACC,IAAY,EAAEC,OAAgB,EAAQ;IACxDV,wBAAwB,CAACQ,mBAAmB,CAACC,IAAI,EAAEC,OAAO,CAAC;EAC7D,CAAC;EACDC,sBAAsBA,CACpBC,QAAgB,EAChBC,IAAY,EACZC,OAAsB,EAChB;IACNd,wBAAwB,CAACW,sBAAsB,CAACC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;EAC1E,CAAC;EACDC,4BAA4BA,CAAA,EAAW;IACrC,OAAOf,wBAAwB,CAACe,4BAA4B,CAAC,CAAC;EAChE,CAAC;EACDC,yBAAyBA,CAACN,OAAgB,EAAQ;IAChDV,wBAAwB,CAACgB,yBAAyB,CAACN,OAAO,CAAC;EAC7D,CAAC;EACDO,oBAAoBA,CAACP,OAAgB,EAAQ;IAC3CV,wBAAwB,CAACiB,oBAAoB,CAACP,OAAO,CAAC;EACxD,CAAC;EACDQ,2BAA2BA,CAAA,EAA8B;IACvD,OAAOlB,wBAAwB,CAACkB,2BAA2B,CAAC,CAAC;EAC/D,CAAC;EAEDC,yBAAyBA,CAAA,EAA8B;IACrD,OAAOnB,wBAAwB,CAACmB,yBAAyB,CAAC,CAAC;EAC7D;AACF,CAAC;AAED,SAASjB,YAAY,EAAED,kBAAkB","ignoreList":[]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NativeEventEmitter } from 'react-native';
|
|
2
|
-
import { PermissionStatus } from '../system/types';
|
|
3
|
-
declare const eventEmitter: NativeEventEmitter;
|
|
4
|
-
declare const AudioManagerModule: {
|
|
5
|
-
setLockScreenInfo(info: {
|
|
6
|
-
[key: string]: string | number | boolean | undefined;
|
|
7
|
-
}): void;
|
|
8
|
-
resetLockScreenInfo(): void;
|
|
9
|
-
enableRemoteCommand(name: string, enabled: boolean): void;
|
|
10
|
-
setAudioSessionOptions(category: string, mode: string, options: Array<string>): void;
|
|
11
|
-
getDevicePreferredSampleRate(): number;
|
|
12
|
-
observeAudioInterruptions(enabled: boolean): void;
|
|
13
|
-
observeVolumeChanges(enabled: boolean): void;
|
|
14
|
-
requestRecordingPermissions(): Promise<PermissionStatus>;
|
|
15
|
-
checkRecordingPermissions(): Promise<PermissionStatus>;
|
|
16
|
-
};
|
|
17
|
-
export { eventEmitter, AudioManagerModule };
|
|
18
|
-
//# sourceMappingURL=NativeAudioManagerModule.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAudioManagerModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeAudioManagerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,kBAAkB,EAAY,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,QAAA,MAAM,YAAY,oBAG4C,CAAC;AAQ/D,QAAA,MAAM,kBAAkB;;;QAGlB,IAAI;2BAGe,IAAI;8BAGD,MAAM,WAAW,OAAO,GAAG,IAAI;qCAI7C,MAAM,QACV,MAAM,WACH,MAAM,MAAM,CAAC,GACrB,IAAI;oCAGyB,MAAM;uCAGH,OAAO,GAAG,IAAI;kCAGnB,OAAO,GAAG,IAAI;mCAGb,QAAQ,gBAAgB,CAAC;iCAI3B,QAAQ,gBAAgB,CAAC;CAGvD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
|
|
2
|
-
import { PermissionStatus } from '../system/types';
|
|
3
|
-
|
|
4
|
-
const NativeAudioManagerModule = NativeModules.AudioManagerModule;
|
|
5
|
-
const eventEmitter =
|
|
6
|
-
Platform.OS === 'android'
|
|
7
|
-
? new NativeEventEmitter()
|
|
8
|
-
: new NativeEventEmitter(NativeModules.AudioManagerModule);
|
|
9
|
-
|
|
10
|
-
if (!NativeAudioManagerModule || !eventEmitter) {
|
|
11
|
-
throw new Error(
|
|
12
|
-
`Failed to install react-native-audio-api: The native module could not be found.`
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const AudioManagerModule = {
|
|
17
|
-
setLockScreenInfo(info: {
|
|
18
|
-
[key: string]: string | boolean | number | undefined;
|
|
19
|
-
}): void {
|
|
20
|
-
NativeAudioManagerModule.setLockScreenInfo(info);
|
|
21
|
-
},
|
|
22
|
-
resetLockScreenInfo(): void {
|
|
23
|
-
NativeAudioManagerModule.resetLockScreenInfo();
|
|
24
|
-
},
|
|
25
|
-
enableRemoteCommand(name: string, enabled: boolean): void {
|
|
26
|
-
NativeAudioManagerModule.enableRemoteCommand(name, enabled);
|
|
27
|
-
},
|
|
28
|
-
setAudioSessionOptions(
|
|
29
|
-
category: string,
|
|
30
|
-
mode: string,
|
|
31
|
-
options: Array<string>
|
|
32
|
-
): void {
|
|
33
|
-
NativeAudioManagerModule.setAudioSessionOptions(category, mode, options);
|
|
34
|
-
},
|
|
35
|
-
getDevicePreferredSampleRate(): number {
|
|
36
|
-
return NativeAudioManagerModule.getDevicePreferredSampleRate();
|
|
37
|
-
},
|
|
38
|
-
observeAudioInterruptions(enabled: boolean): void {
|
|
39
|
-
NativeAudioManagerModule.observeAudioInterruptions(enabled);
|
|
40
|
-
},
|
|
41
|
-
observeVolumeChanges(enabled: boolean): void {
|
|
42
|
-
NativeAudioManagerModule.observeVolumeChanges(enabled);
|
|
43
|
-
},
|
|
44
|
-
requestRecordingPermissions(): Promise<PermissionStatus> {
|
|
45
|
-
return NativeAudioManagerModule.requestRecordingPermissions();
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
checkRecordingPermissions(): Promise<PermissionStatus> {
|
|
49
|
-
return NativeAudioManagerModule.checkRecordingPermissions();
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export { eventEmitter, AudioManagerModule };
|