@siteed/expo-audio-stream 1.1.17 → 1.2.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/.cursorrules +112 -0
- package/CHANGELOG.md +13 -17
- package/README.md +5 -0
- package/android/build/.transforms/78826170c90a6133e31ab67915bce724/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/7c8f45a7979f7f92ba944aa5701c97dc/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatInfo.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatUtils.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioNotificationManager$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioNotificationManager.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$AudioData.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService$notificationManager$2.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService.dex +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$1.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$1.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$10.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$10.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$11.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$11.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$12.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$12.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.dex +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$17.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$14.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$17.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$17.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.dex +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$5.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$2.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$20.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$11.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$23.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.dex +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$3.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$3.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$4.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$4.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$5.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$5.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$6.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$6.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$7.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$7.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$2.dex → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$8.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$9.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$9.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$1.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$1.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$2.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$2.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$3.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$3.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$1.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$1.dex} +0 -0
- package/android/build/.transforms/{99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$2.dex → dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$2.dex} +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationAction.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationConfig$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationConfig.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/PermissionUtils.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfigKt.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformConfig.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$RenderConfig.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$Style.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$WhenMappings.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer.dex +0 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +23 -2
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +11 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_default_action_icon.xml.flat +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_microphone.xml.flat +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_pause.xml.flat +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_play.xml.flat +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_stop.xml.flat +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/layout_notification_recording.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +8 -1
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +1 -1
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/java_res/debug/out/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +11 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +51 -8
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +23 -2
- package/android/build/intermediates/packaged_res/debug/drawable/ic_default_action_icon.xml +16 -0
- package/android/build/intermediates/packaged_res/debug/drawable/ic_microphone.xml +13 -0
- package/android/build/intermediates/packaged_res/debug/drawable/ic_pause.xml +10 -0
- package/android/build/intermediates/packaged_res/debug/drawable/ic_play.xml +10 -0
- package/android/build/intermediates/packaged_res/debug/drawable/ic_stop.xml +10 -0
- package/android/build/intermediates/packaged_res/debug/layout/notification_recording.xml +37 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioFormatInfo.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioFormatUtils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioNotificationManager$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioNotificationManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$AudioData.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecorderManager$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecorderManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService$notificationManager$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$1.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$1.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$10.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$10.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$11.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$11.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$12.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$12.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$14.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$17.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$17.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$5.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$2.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$11.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$20.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$23.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$3.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$3.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$4.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$4.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$5.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$6.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$6.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$7.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$7.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$2.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$8.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$9.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$9.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$1.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$1.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$2.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$2.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$3.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$3.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$4.class} +0 -0
- package/android/build/{tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$1.class → intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$1.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$2.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$2.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationAction.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationConfig$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/PermissionUtils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfig$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfigKt.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$Style.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$WhenMappings.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +11 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +51 -7
- package/android/build/tmp/kotlin-classes/debug/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioFormatInfo.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioFormatUtils.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioNotificationManager$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioNotificationManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$AudioData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecorderManager$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecorderManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService$notificationManager$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$1.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$1.class} +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$10.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$10.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$11.class +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$12.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$12.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$14.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$17.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.class +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$2.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$2.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$20.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$23.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$3.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$3.class} +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$4.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$4.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$6.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$6.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$7.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$7.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$8.class +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$9.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$9.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$1.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$1.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$2.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$2.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$3.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$3.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$4.class} +0 -0
- package/android/build/{intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$1.class → tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$1.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/{ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$2.class → ExpoAudioStreamModule$definition$lambda$16$$inlined$FunctionWithoutArgs$2.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationAction.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationConfig$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationConfig.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/PermissionUtils.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfig$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfig.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfigKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformConfig.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$Style.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$WhenMappings.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer.class +0 -0
- package/android/src/main/AndroidManifest.xml +24 -2
- package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +76 -1
- package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +362 -0
- package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +8 -4
- package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +477 -261
- package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +71 -0
- package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +78 -8
- package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +70 -0
- package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +41 -6
- package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +59 -0
- package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +138 -1
- package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +19 -0
- package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +159 -0
- package/android/src/main/res/drawable/ic_default_action_icon.xml +16 -0
- package/android/src/main/res/drawable/ic_microphone.xml +13 -0
- package/android/src/main/res/drawable/ic_pause.xml +10 -0
- package/android/src/main/res/drawable/ic_play.xml +10 -0
- package/android/src/main/res/drawable/ic_stop.xml +10 -0
- package/android/src/main/res/layout/notification_recording.xml +37 -0
- package/build/ExpoAudioStream.types.d.ts +36 -0
- package/build/ExpoAudioStream.types.d.ts.map +1 -1
- package/build/ExpoAudioStream.types.js.map +1 -1
- package/build/useAudioRecorder.d.ts.map +1 -1
- package/build/useAudioRecorder.js +32 -11
- package/build/useAudioRecorder.js.map +1 -1
- package/ios/AudioNotificationManager.swift +135 -0
- package/ios/AudioStreamManager.swift +387 -13
- package/ios/AudioStreamManagerDelegate.swift +4 -0
- package/ios/ExpoAudioStreamModule.swift +66 -38
- package/ios/NotificationExtension.swift +15 -0
- package/ios/RecordingSettings.swift +83 -5
- package/package.json +1 -1
- package/plugin/build/index.d.ts +1 -3
- package/plugin/build/index.js +103 -10
- package/plugin/src/index.ts +124 -21
- package/publish.sh +36 -3
- package/src/ExpoAudioStream.types.ts +108 -13
- package/src/useAudioRecorder.tsx +46 -12
- package/android/build/.transforms/871e87a512fbb418f6a6523c40225bac/results.bin +0 -1
- package/android/build/.transforms/871e87a512fbb418f6a6523c40225bac/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/results.bin +0 -1
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData$AmplitudeRange.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData$SpeakerChange.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioDataEncoder.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioFileHandler.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatUtils.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$AudioData.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$Companion.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/BuildConfig.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/Constants.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/DataPoint.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/EventSender.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$10.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$12.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$2.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$4.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$7.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/FFT.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/Features.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/PermissionUtils.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig.dex +0 -0
- package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/desugar_graph.bin +0 -0
- package/android/build/.transforms/a758925c83c348fb1544431cf45e6a05/results.bin +0 -1
- package/android/build/.transforms/a758925c83c348fb1544431cf45e6a05/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$1.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$3.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$6.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$9.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$1.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$2.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$3.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$1.dex +0 -0
- package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$2.dex +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$17.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.class +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
package net.siteed.audiostream
|
|
2
|
+
|
|
3
|
+
import android.app.Service
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.content.Intent
|
|
6
|
+
import android.os.Build
|
|
7
|
+
import android.os.IBinder
|
|
8
|
+
import android.util.Log
|
|
9
|
+
import android.os.Handler
|
|
10
|
+
import android.os.Looper
|
|
11
|
+
|
|
12
|
+
class AudioRecordingService : Service() {
|
|
13
|
+
private val notificationManager by lazy {
|
|
14
|
+
AudioNotificationManager.getInstance(applicationContext)
|
|
15
|
+
}
|
|
16
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
17
|
+
private var isRunning = false
|
|
18
|
+
|
|
19
|
+
override fun onBind(intent: Intent?): IBinder? = null
|
|
20
|
+
|
|
21
|
+
override fun onCreate() {
|
|
22
|
+
super.onCreate()
|
|
23
|
+
Log.d(Constants.TAG, "AudioRecordingService onCreate")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
|
27
|
+
Log.d(Constants.TAG, "AudioRecordingService onStartCommand")
|
|
28
|
+
|
|
29
|
+
if (!isRunning) {
|
|
30
|
+
try {
|
|
31
|
+
val notification = notificationManager.getNotification()
|
|
32
|
+
startForeground(1, notification)
|
|
33
|
+
isRunning = true
|
|
34
|
+
} catch (e: Exception) {
|
|
35
|
+
Log.e(Constants.TAG, "Error starting foreground service", e)
|
|
36
|
+
stopSelf()
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return START_NOT_STICKY
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override fun onDestroy() {
|
|
44
|
+
Log.d(Constants.TAG, "AudioRecordingService onDestroy")
|
|
45
|
+
|
|
46
|
+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
|
|
47
|
+
stopForeground(STOP_FOREGROUND_REMOVE)
|
|
48
|
+
} else {
|
|
49
|
+
@Suppress("DEPRECATION")
|
|
50
|
+
stopForeground(true)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
isRunning = false
|
|
54
|
+
super.onDestroy()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
companion object {
|
|
58
|
+
fun startService(context: Context) {
|
|
59
|
+
val serviceIntent = Intent(context, AudioRecordingService::class.java)
|
|
60
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
61
|
+
context.startForegroundService(serviceIntent)
|
|
62
|
+
} else {
|
|
63
|
+
context.startService(serviceIntent)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
fun stopService(context: Context) {
|
|
68
|
+
context.stopService(Intent(context, AudioRecordingService::class.java))
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -5,20 +5,18 @@ import android.os.Build
|
|
|
5
5
|
import android.os.Bundle
|
|
6
6
|
import android.util.Log
|
|
7
7
|
import androidx.annotation.RequiresApi
|
|
8
|
+
import androidx.core.os.bundleOf
|
|
8
9
|
import expo.modules.kotlin.Promise
|
|
9
10
|
import expo.modules.kotlin.modules.Module
|
|
10
11
|
import expo.modules.kotlin.modules.ModuleDefinition
|
|
11
12
|
import expo.modules.interfaces.permissions.Permissions
|
|
12
13
|
|
|
13
|
-
class ExpoAudioStreamModule
|
|
14
|
+
class ExpoAudioStreamModule : Module(), EventSender {
|
|
14
15
|
private lateinit var audioRecorderManager: AudioRecorderManager
|
|
15
16
|
private lateinit var audioProcessor: AudioProcessor
|
|
16
|
-
// 8081
|
|
17
17
|
|
|
18
18
|
@RequiresApi(Build.VERSION_CODES.R)
|
|
19
19
|
override fun definition() = ModuleDefinition {
|
|
20
|
-
// Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument.
|
|
21
|
-
// Can be inferred from module's class name, but it's recommended to set it explicitly for clarity.
|
|
22
20
|
// The module will be accessible from `requireNativeModule('ExpoAudioStream')` in JavaScript.
|
|
23
21
|
Name("ExpoAudioStream")
|
|
24
22
|
|
|
@@ -99,11 +97,75 @@ class ExpoAudioStreamModule() : Module(), EventSender {
|
|
|
99
97
|
}
|
|
100
98
|
|
|
101
99
|
AsyncFunction("requestPermissionsAsync") { promise: Promise ->
|
|
102
|
-
|
|
100
|
+
try {
|
|
101
|
+
val permissions = mutableListOf(Manifest.permission.RECORD_AUDIO)
|
|
102
|
+
|
|
103
|
+
// Add foreground service permission for Android 14+
|
|
104
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
105
|
+
Log.d(Constants.TAG, "Adding FOREGROUND_SERVICE_MICROPHONE permission request")
|
|
106
|
+
permissions.add(Manifest.permission.FOREGROUND_SERVICE_MICROPHONE)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
Log.d(Constants.TAG, "Requesting permissions: $permissions")
|
|
110
|
+
Permissions.askForPermissionsWithPermissionsManager(
|
|
111
|
+
appContext.permissions,
|
|
112
|
+
promise,
|
|
113
|
+
*permissions.toTypedArray()
|
|
114
|
+
)
|
|
115
|
+
} catch (e: Exception) {
|
|
116
|
+
Log.e(Constants.TAG, "Error requesting permissions", e)
|
|
117
|
+
promise.reject("PERMISSION_ERROR", "Failed to request permissions: ${e.message}", e)
|
|
118
|
+
}
|
|
103
119
|
}
|
|
104
120
|
|
|
105
121
|
AsyncFunction("getPermissionsAsync") { promise: Promise ->
|
|
106
|
-
|
|
122
|
+
val permissions = mutableListOf(Manifest.permission.RECORD_AUDIO)
|
|
123
|
+
|
|
124
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
125
|
+
permissions.add(Manifest.permission.FOREGROUND_SERVICE_MICROPHONE)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
Permissions.getPermissionsWithPermissionsManager(
|
|
129
|
+
appContext.permissions,
|
|
130
|
+
promise,
|
|
131
|
+
*permissions.toTypedArray()
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
AsyncFunction("requestNotificationPermissionsAsync") { promise: Promise ->
|
|
136
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
137
|
+
Permissions.askForPermissionsWithPermissionsManager(
|
|
138
|
+
appContext.permissions,
|
|
139
|
+
promise,
|
|
140
|
+
Manifest.permission.POST_NOTIFICATIONS
|
|
141
|
+
)
|
|
142
|
+
} else {
|
|
143
|
+
promise.resolve(
|
|
144
|
+
bundleOf(
|
|
145
|
+
"status" to "granted",
|
|
146
|
+
"expires" to "never",
|
|
147
|
+
"granted" to true
|
|
148
|
+
)
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
AsyncFunction("getNotificationPermissionsAsync") { promise: Promise ->
|
|
154
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
155
|
+
Permissions.getPermissionsWithPermissionsManager(
|
|
156
|
+
appContext.permissions,
|
|
157
|
+
promise,
|
|
158
|
+
Manifest.permission.POST_NOTIFICATIONS
|
|
159
|
+
)
|
|
160
|
+
} else {
|
|
161
|
+
promise.resolve(
|
|
162
|
+
bundleOf(
|
|
163
|
+
"status" to "granted",
|
|
164
|
+
"expires" to "never",
|
|
165
|
+
"granted" to true
|
|
166
|
+
)
|
|
167
|
+
)
|
|
168
|
+
}
|
|
107
169
|
}
|
|
108
170
|
}
|
|
109
171
|
|
|
@@ -113,10 +175,18 @@ class ExpoAudioStreamModule() : Module(), EventSender {
|
|
|
113
175
|
val permissionUtils = PermissionUtils(androidContext)
|
|
114
176
|
val audioEncoder = AudioDataEncoder()
|
|
115
177
|
audioRecorderManager =
|
|
116
|
-
AudioRecorderManager(androidContext.filesDir, permissionUtils, audioEncoder, this)
|
|
117
|
-
|
|
178
|
+
AudioRecorderManager(androidContext, androidContext.filesDir, permissionUtils, audioEncoder, this)
|
|
179
|
+
audioRecorderManager = AudioRecorderManager.initialize(
|
|
180
|
+
androidContext,
|
|
181
|
+
androidContext.filesDir,
|
|
182
|
+
permissionUtils,
|
|
183
|
+
audioEncoder,
|
|
184
|
+
this
|
|
185
|
+
)
|
|
186
|
+
audioProcessor = AudioProcessor(androidContext.filesDir)
|
|
118
187
|
}
|
|
119
188
|
|
|
189
|
+
|
|
120
190
|
override fun sendExpoEvent(eventName: String, params: Bundle) {
|
|
121
191
|
Log.d(Constants.TAG, "Sending event: $eventName")
|
|
122
192
|
this@ExpoAudioStreamModule.sendEvent(eventName, params)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package net.siteed.audiostream
|
|
2
|
+
|
|
3
|
+
data class NotificationConfig(
|
|
4
|
+
val title: String = "Recording...",
|
|
5
|
+
val text: String = "",
|
|
6
|
+
val icon: String? = null,
|
|
7
|
+
val channelId: String = "audio_recording_channel",
|
|
8
|
+
val notificationId: Int = 1,
|
|
9
|
+
val actions: List<NotificationAction> = emptyList(),
|
|
10
|
+
val channelName: String = "Audio Recording",
|
|
11
|
+
val channelDescription: String = "Shows audio recording status",
|
|
12
|
+
val waveform: WaveformConfig? = null,
|
|
13
|
+
val lightColor: String = "#FF0000",
|
|
14
|
+
val priority: String = "high",
|
|
15
|
+
val accentColor: String? = null
|
|
16
|
+
) {
|
|
17
|
+
companion object {
|
|
18
|
+
fun fromMap(map: Map<String, Any?>?): NotificationConfig {
|
|
19
|
+
if (map == null) return NotificationConfig()
|
|
20
|
+
|
|
21
|
+
val androidMap = map["android"] as? Map<String, Any?> ?: emptyMap()
|
|
22
|
+
|
|
23
|
+
return NotificationConfig(
|
|
24
|
+
title = map["title"] as? String ?: "Recording...",
|
|
25
|
+
text = map["text"] as? String ?: "",
|
|
26
|
+
icon = map["icon"] as? String,
|
|
27
|
+
channelId = androidMap["channelId"] as? String ?: "audio_recording_channel",
|
|
28
|
+
notificationId = (androidMap["notificationId"] as? Number)?.toInt() ?: 1,
|
|
29
|
+
actions = parseNotificationActions(androidMap["actions"] as? List<Map<String, Any?>>),
|
|
30
|
+
channelName = androidMap["channelName"] as? String ?: "Audio Recording",
|
|
31
|
+
channelDescription = androidMap["channelDescription"] as? String ?: "Shows audio recording status",
|
|
32
|
+
waveform = parseWaveformConfig(androidMap["waveform"] as? Map<String, Any?>),
|
|
33
|
+
lightColor = androidMap["lightColor"] as? String ?: "#FF0000",
|
|
34
|
+
priority = androidMap["priority"] as? String ?: "high",
|
|
35
|
+
accentColor = androidMap["accentColor"] as? String
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private fun parseNotificationActions(actionsList: List<Map<String, Any?>>?): List<NotificationAction> {
|
|
40
|
+
return actionsList?.mapNotNull { actionMap ->
|
|
41
|
+
if (actionMap["title"] != null && actionMap["identifier"] != null) {
|
|
42
|
+
NotificationAction(
|
|
43
|
+
title = actionMap["title"] as String,
|
|
44
|
+
icon = actionMap["icon"] as? String,
|
|
45
|
+
intentAction = actionMap["identifier"] as String
|
|
46
|
+
)
|
|
47
|
+
} else null
|
|
48
|
+
} ?: emptyList()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private fun parseWaveformConfig(waveformMap: Map<String, Any?>?): WaveformConfig? {
|
|
52
|
+
if (waveformMap == null) return null
|
|
53
|
+
|
|
54
|
+
return WaveformConfig(
|
|
55
|
+
color = waveformMap["color"] as? String ?: "#FFFFFF",
|
|
56
|
+
opacity = (waveformMap["opacity"] as? Number)?.toFloat() ?: 1.0f,
|
|
57
|
+
strokeWidth = (waveformMap["strokeWidth"] as? Number)?.toFloat() ?: 1.5f,
|
|
58
|
+
style = waveformMap["style"] as? String ?: "stroke",
|
|
59
|
+
mirror = waveformMap["mirror"] as? Boolean ?: true,
|
|
60
|
+
height = (waveformMap["height"] as? Number)?.toInt() ?: 64
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
data class NotificationAction(
|
|
67
|
+
val title: String,
|
|
68
|
+
val icon: String? = null,
|
|
69
|
+
val intentAction: String
|
|
70
|
+
)
|
|
@@ -2,15 +2,50 @@ package net.siteed.audiostream
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.content.pm.PackageManager
|
|
5
|
+
import android.os.Build
|
|
5
6
|
import androidx.core.content.ContextCompat
|
|
7
|
+
import android.Manifest
|
|
8
|
+
import android.util.Log
|
|
6
9
|
|
|
7
10
|
class PermissionUtils(private val context: Context) {
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Checks if the recording permission has been granted.
|
|
11
|
-
* @return Boolean indicating whether the RECORD_AUDIO permission is granted.
|
|
12
|
-
*/
|
|
13
11
|
fun checkRecordingPermission(): Boolean {
|
|
14
|
-
|
|
12
|
+
val hasRecordPermission = ContextCompat.checkSelfPermission(
|
|
13
|
+
context,
|
|
14
|
+
Manifest.permission.RECORD_AUDIO
|
|
15
|
+
) == PackageManager.PERMISSION_GRANTED
|
|
16
|
+
|
|
17
|
+
Log.d(Constants.TAG, "RECORD_AUDIO permission: $hasRecordPermission")
|
|
18
|
+
|
|
19
|
+
// Check for foreground service permission on Android 14+
|
|
20
|
+
val hasForegroundService = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
21
|
+
val result = ContextCompat.checkSelfPermission(
|
|
22
|
+
context,
|
|
23
|
+
Manifest.permission.FOREGROUND_SERVICE_MICROPHONE
|
|
24
|
+
) == PackageManager.PERMISSION_GRANTED
|
|
25
|
+
Log.d(Constants.TAG, "FOREGROUND_SERVICE_MICROPHONE permission: $result (Android 14+)")
|
|
26
|
+
result
|
|
27
|
+
} else {
|
|
28
|
+
Log.d(Constants.TAG, "FOREGROUND_SERVICE_MICROPHONE not required (Android < 14)")
|
|
29
|
+
true
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
val result = hasRecordPermission && hasForegroundService
|
|
33
|
+
Log.d(Constants.TAG, "Final recording permission result: $result")
|
|
34
|
+
return result
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
fun checkNotificationPermission(): Boolean {
|
|
38
|
+
val result = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
39
|
+
val hasPermission = ContextCompat.checkSelfPermission(
|
|
40
|
+
context,
|
|
41
|
+
Manifest.permission.POST_NOTIFICATIONS
|
|
42
|
+
) == PackageManager.PERMISSION_GRANTED
|
|
43
|
+
Log.d(Constants.TAG, "POST_NOTIFICATIONS permission: $hasPermission (Android 13+)")
|
|
44
|
+
hasPermission
|
|
45
|
+
} else {
|
|
46
|
+
Log.d(Constants.TAG, "POST_NOTIFICATIONS not required (Android < 13)")
|
|
47
|
+
true
|
|
48
|
+
}
|
|
49
|
+
return result
|
|
15
50
|
}
|
|
16
51
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package net.siteed.audiostream
|
|
2
|
+
|
|
3
|
+
import android.content.BroadcastReceiver
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.content.Intent
|
|
6
|
+
import android.util.Log
|
|
7
|
+
import expo.modules.kotlin.Promise
|
|
8
|
+
import java.util.concurrent.atomic.AtomicBoolean
|
|
9
|
+
|
|
10
|
+
class RecordingActionReceiver : BroadcastReceiver() {
|
|
11
|
+
companion object {
|
|
12
|
+
const val ACTION_PAUSE_RECORDING = "net.siteed.audiostream.PAUSE_RECORDING"
|
|
13
|
+
const val ACTION_RESUME_RECORDING = "net.siteed.audiostream.RESUME_RECORDING"
|
|
14
|
+
private val isProcessingAction = AtomicBoolean(false)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override fun onReceive(context: Context, intent: Intent) {
|
|
18
|
+
when (intent.action) {
|
|
19
|
+
ACTION_PAUSE_RECORDING, ACTION_RESUME_RECORDING -> handleRecordingAction(intent.action)
|
|
20
|
+
else -> Log.w("RecordingActionReceiver", "Unknown action: ${intent.action}")
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private fun handleRecordingAction(action: String?) {
|
|
25
|
+
if (!isProcessingAction.compareAndSet(false, true)) {
|
|
26
|
+
Log.d("RecordingActionReceiver", "Action already in progress, skipping")
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
val audioRecorderManager = AudioRecorderManager.getInstance()
|
|
32
|
+
if (audioRecorderManager == null) {
|
|
33
|
+
Log.e("RecordingActionReceiver", "AudioRecorderManager instance is null")
|
|
34
|
+
isProcessingAction.set(false)
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
val notificationPromise = object : Promise {
|
|
39
|
+
override fun resolve(value: Any?) {
|
|
40
|
+
Log.d("RecordingActionReceiver", "$action completed successfully")
|
|
41
|
+
isProcessingAction.set(false)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
override fun reject(code: String, message: String?, cause: Throwable?) {
|
|
45
|
+
Log.e("RecordingActionReceiver", "$action failed: $message", cause)
|
|
46
|
+
isProcessingAction.set(false)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
when (action) {
|
|
51
|
+
ACTION_PAUSE_RECORDING -> audioRecorderManager.pauseRecording(notificationPromise)
|
|
52
|
+
ACTION_RESUME_RECORDING -> audioRecorderManager.resumeRecording(notificationPromise)
|
|
53
|
+
}
|
|
54
|
+
} catch (e: Exception) {
|
|
55
|
+
Log.e("RecordingActionReceiver", "Error processing $action", e)
|
|
56
|
+
isProcessingAction.set(false)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,12 +1,149 @@
|
|
|
1
1
|
package net.siteed.audiostream
|
|
2
2
|
|
|
3
|
+
import android.media.AudioFormat
|
|
4
|
+
import android.os.Build
|
|
5
|
+
|
|
3
6
|
data class RecordingConfig(
|
|
4
7
|
val sampleRate: Int = Constants.DEFAULT_SAMPLE_RATE,
|
|
5
8
|
val channels: Int = 1,
|
|
6
9
|
val encoding: String = "pcm_16bit",
|
|
10
|
+
val keepAwake: Boolean = false,
|
|
7
11
|
val interval: Long = Constants.DEFAULT_INTERVAL,
|
|
8
12
|
val enableProcessing: Boolean = false,
|
|
9
13
|
val pointsPerSecond: Double = 20.0,
|
|
10
14
|
val algorithm: String = "rms",
|
|
15
|
+
val showNotification: Boolean = false,
|
|
16
|
+
val showWaveformInNotification: Boolean = false,
|
|
17
|
+
val notification: NotificationConfig = NotificationConfig(),
|
|
11
18
|
val features: Map<String, Boolean> = emptyMap()
|
|
12
|
-
)
|
|
19
|
+
) {
|
|
20
|
+
companion object {
|
|
21
|
+
fun fromMap(options: Map<String, Any?>?): Result<Pair<RecordingConfig, AudioFormatInfo>> {
|
|
22
|
+
if (options == null) {
|
|
23
|
+
val defaultConfig = RecordingConfig()
|
|
24
|
+
val defaultFormat = AudioFormatInfo(
|
|
25
|
+
format = AudioFormat.ENCODING_PCM_16BIT,
|
|
26
|
+
mimeType = "audio/wav",
|
|
27
|
+
fileExtension = "wav"
|
|
28
|
+
)
|
|
29
|
+
return Result.success(Pair(defaultConfig, defaultFormat))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Extract features using type-safe helper
|
|
33
|
+
val features = options.getTypedMap<Boolean>("features") { it is Boolean }
|
|
34
|
+
|
|
35
|
+
// Parse notification config using type-safe helper
|
|
36
|
+
val notificationMap = options.getTypedMap<Any?>("notification") { true }
|
|
37
|
+
val notificationConfig = NotificationConfig.fromMap(notificationMap)
|
|
38
|
+
|
|
39
|
+
// Initialize the recording configuration
|
|
40
|
+
val tempRecordingConfig = RecordingConfig(
|
|
41
|
+
sampleRate = options.getNumberOrDefault("sampleRate", Constants.DEFAULT_SAMPLE_RATE),
|
|
42
|
+
channels = options.getNumberOrDefault("channels", 1),
|
|
43
|
+
encoding = options.getStringOrDefault("encoding", "pcm_16bit"),
|
|
44
|
+
keepAwake = options.getBooleanOrDefault("keepAwake", false),
|
|
45
|
+
interval = options.getNumberOrDefault("interval", Constants.DEFAULT_INTERVAL),
|
|
46
|
+
enableProcessing = options.getBooleanOrDefault("enableProcessing", false),
|
|
47
|
+
pointsPerSecond = options.getNumberOrDefault("pointsPerSecond", 20.0),
|
|
48
|
+
algorithm = options.getStringOrDefault("algorithm", "rms"),
|
|
49
|
+
showNotification = options.getBooleanOrDefault("showNotification", false),
|
|
50
|
+
showWaveformInNotification = options.getBooleanOrDefault("showWaveformInNotification", false),
|
|
51
|
+
notification = notificationConfig,
|
|
52
|
+
features = features
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
// Validate sample rate and channels
|
|
56
|
+
if (tempRecordingConfig.sampleRate !in listOf(16000, 44100, 48000)) {
|
|
57
|
+
return Result.failure(
|
|
58
|
+
IllegalArgumentException("Sample rate must be one of 16000, 44100, or 48000 Hz")
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
if (tempRecordingConfig.channels !in 1..2) {
|
|
62
|
+
return Result.failure(
|
|
63
|
+
IllegalArgumentException("Channels must be either 1 (Mono) or 2 (Stereo)")
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Set encoding and file extension
|
|
68
|
+
val audioFormatInfo = when (tempRecordingConfig.encoding) {
|
|
69
|
+
"pcm_8bit" -> AudioFormatInfo(
|
|
70
|
+
format = AudioFormat.ENCODING_PCM_8BIT,
|
|
71
|
+
mimeType = "audio/wav",
|
|
72
|
+
fileExtension = "wav"
|
|
73
|
+
)
|
|
74
|
+
"pcm_16bit" -> AudioFormatInfo(
|
|
75
|
+
format = AudioFormat.ENCODING_PCM_16BIT,
|
|
76
|
+
mimeType = "audio/wav",
|
|
77
|
+
fileExtension = "wav"
|
|
78
|
+
)
|
|
79
|
+
"pcm_32bit" -> AudioFormatInfo(
|
|
80
|
+
format = AudioFormat.ENCODING_PCM_FLOAT,
|
|
81
|
+
mimeType = "audio/wav",
|
|
82
|
+
fileExtension = "wav"
|
|
83
|
+
)
|
|
84
|
+
"opus" -> {
|
|
85
|
+
if (Build.VERSION.SDK_INT < 29) {
|
|
86
|
+
return Result.failure(
|
|
87
|
+
IllegalArgumentException("Opus encoding not supported on this Android version.")
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
AudioFormatInfo(
|
|
91
|
+
format = if (Build.VERSION.SDK_INT >= 29) 20 else AudioFormat.ENCODING_DEFAULT, // 20 is ENCODING_OPUS
|
|
92
|
+
mimeType = "audio/opus",
|
|
93
|
+
fileExtension = "opus"
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
"aac_lc" -> AudioFormatInfo(
|
|
97
|
+
format = AudioFormat.ENCODING_AAC_LC,
|
|
98
|
+
mimeType = "audio/aac",
|
|
99
|
+
fileExtension = "aac"
|
|
100
|
+
)
|
|
101
|
+
else -> AudioFormatInfo(
|
|
102
|
+
format = AudioFormat.ENCODING_DEFAULT,
|
|
103
|
+
mimeType = "audio/wav",
|
|
104
|
+
fileExtension = "wav"
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return Result.success(Pair(tempRecordingConfig, audioFormatInfo))
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Extension functions for type-safe map access
|
|
114
|
+
private inline fun <reified T> Map<String, Any?>.getTypedMap(
|
|
115
|
+
key: String,
|
|
116
|
+
predicate: (Any?) -> Boolean
|
|
117
|
+
): Map<String, T> {
|
|
118
|
+
return (this[key] as? Map<*, *>)?.mapNotNull { (k, v) ->
|
|
119
|
+
if (k is String && predicate(v)) {
|
|
120
|
+
k to (v as T)
|
|
121
|
+
} else null
|
|
122
|
+
}?.toMap() ?: emptyMap()
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private fun Map<String, Any?>.getStringOrDefault(key: String, default: String): String {
|
|
126
|
+
return this[key] as? String ?: default
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private fun Map<String, Any?>.getBooleanOrDefault(key: String, default: Boolean): Boolean {
|
|
130
|
+
return this[key] as? Boolean ?: default
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private fun Map<String, Any?>.getNumberOrDefault(key: String, default: Int): Int {
|
|
134
|
+
return (this[key] as? Number)?.toInt() ?: default
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private fun Map<String, Any?>.getNumberOrDefault(key: String, default: Long): Long {
|
|
138
|
+
return (this[key] as? Number)?.toLong() ?: default
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private fun Map<String, Any?>.getNumberOrDefault(key: String, default: Double): Double {
|
|
142
|
+
return (this[key] as? Number)?.toDouble() ?: default
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
data class AudioFormatInfo(
|
|
146
|
+
val format: Int,
|
|
147
|
+
val mimeType: String,
|
|
148
|
+
val fileExtension: String
|
|
149
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package net.siteed.audiostream
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for the notification waveform visualization
|
|
5
|
+
* @property color The color of the waveform (e.g., "#FFFFFF" for white)
|
|
6
|
+
* @property opacity Opacity of the waveform (0.0-1.0)
|
|
7
|
+
* @property strokeWidth Width of the waveform line (default: 1.5f)
|
|
8
|
+
* @property style Drawing style: "stroke" for outline, "fill" for solid
|
|
9
|
+
* @property mirror Whether to mirror the waveform (symmetrical display)
|
|
10
|
+
* @property height Height of the waveform view in dp (default: 64)
|
|
11
|
+
*/
|
|
12
|
+
data class WaveformConfig(
|
|
13
|
+
val color: String = "#FFFFFF",
|
|
14
|
+
val opacity: Float = 1.0f,
|
|
15
|
+
val strokeWidth: Float = 1.5f,
|
|
16
|
+
val style: String = "stroke", // "stroke" or "fill"
|
|
17
|
+
val mirror: Boolean = true,
|
|
18
|
+
val height: Int = 64
|
|
19
|
+
)
|