@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.
Files changed (402) hide show
  1. package/.cursorrules +112 -0
  2. package/CHANGELOG.md +13 -17
  3. package/README.md +5 -0
  4. package/android/build/.transforms/78826170c90a6133e31ab67915bce724/transformed/classes/classes_dex/classes.dex +0 -0
  5. package/android/build/.transforms/7c8f45a7979f7f92ba944aa5701c97dc/transformed/classes/classes_dex/classes.dex +0 -0
  6. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatInfo.dex +0 -0
  7. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatUtils.dex +0 -0
  8. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioNotificationManager$Companion.dex +0 -0
  9. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioNotificationManager.dex +0 -0
  10. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$AudioData.dex +0 -0
  11. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$Companion.dex +0 -0
  12. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.dex +0 -0
  13. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor.dex +0 -0
  14. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager$Companion.dex +0 -0
  15. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager.dex +0 -0
  16. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService$Companion.dex +0 -0
  17. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService$notificationManager$2.dex +0 -0
  18. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecordingService.dex +0 -0
  19. 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
  20. 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
  21. 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
  22. 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
  23. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.dex +0 -0
  24. 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
  25. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.dex +0 -0
  26. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.dex +0 -0
  27. 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
  28. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.dex +0 -0
  29. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.dex +0 -0
  30. 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
  31. 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
  32. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.dex +0 -0
  33. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.dex +0 -0
  34. 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
  35. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.dex +0 -0
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
  47. 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
  48. 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
  49. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule.dex +0 -0
  50. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationAction.dex +0 -0
  51. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationConfig$Companion.dex +0 -0
  52. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/NotificationConfig.dex +0 -0
  53. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/PermissionUtils.dex +0 -0
  54. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver$Companion.dex +0 -0
  55. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.dex +0 -0
  56. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingActionReceiver.dex +0 -0
  57. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig$Companion.dex +0 -0
  58. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig.dex +0 -0
  59. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfigKt.dex +0 -0
  60. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformConfig.dex +0 -0
  61. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.dex +0 -0
  62. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$RenderConfig.dex +0 -0
  63. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$Style.dex +0 -0
  64. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer$WhenMappings.dex +0 -0
  65. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/WaveformRenderer.dex +0 -0
  66. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +23 -2
  67. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  68. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  69. package/android/build/intermediates/compile_symbol_list/debug/R.txt +11 -0
  70. package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_default_action_icon.xml.flat +0 -0
  71. package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_microphone.xml.flat +0 -0
  72. package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_pause.xml.flat +0 -0
  73. package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_play.xml.flat +0 -0
  74. package/android/build/intermediates/compiled_local_resources/debug/out/drawable_ic_stop.xml.flat +0 -0
  75. package/android/build/intermediates/compiled_local_resources/debug/out/layout_notification_recording.xml.flat +0 -0
  76. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +8 -1
  77. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +1 -1
  78. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  79. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  80. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  81. package/android/build/intermediates/java_res/debug/out/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
  82. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +11 -0
  83. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +51 -8
  84. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +23 -2
  85. package/android/build/intermediates/packaged_res/debug/drawable/ic_default_action_icon.xml +16 -0
  86. package/android/build/intermediates/packaged_res/debug/drawable/ic_microphone.xml +13 -0
  87. package/android/build/intermediates/packaged_res/debug/drawable/ic_pause.xml +10 -0
  88. package/android/build/intermediates/packaged_res/debug/drawable/ic_play.xml +10 -0
  89. package/android/build/intermediates/packaged_res/debug/drawable/ic_stop.xml +10 -0
  90. package/android/build/intermediates/packaged_res/debug/layout/notification_recording.xml +37 -0
  91. package/android/build/intermediates/runtime_library_classes_dir/debug/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
  92. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioFormatInfo.class +0 -0
  93. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioFormatUtils.class +0 -0
  94. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioNotificationManager$Companion.class +0 -0
  95. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioNotificationManager.class +0 -0
  96. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$AudioData.class +0 -0
  97. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$Companion.class +0 -0
  98. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.class +0 -0
  99. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioProcessor.class +0 -0
  100. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecorderManager$Companion.class +0 -0
  101. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecorderManager.class +0 -0
  102. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService$Companion.class +0 -0
  103. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService$notificationManager$2.class +0 -0
  104. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/AudioRecordingService.class +0 -0
  105. 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
  106. 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
  107. 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
  108. 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
  109. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.class +0 -0
  110. 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
  111. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.class +0 -0
  112. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.class +0 -0
  113. 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
  114. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.class +0 -0
  115. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.class +0 -0
  116. 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
  117. 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
  118. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.class +0 -0
  119. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.class +0 -0
  120. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$23.class +0 -0
  121. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.class +0 -0
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule.class +0 -0
  136. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationAction.class +0 -0
  137. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationConfig$Companion.class +0 -0
  138. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/NotificationConfig.class +0 -0
  139. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/PermissionUtils.class +0 -0
  140. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver$Companion.class +0 -0
  141. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.class +0 -0
  142. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingActionReceiver.class +0 -0
  143. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfig$Companion.class +0 -0
  144. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfig.class +0 -0
  145. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/RecordingConfigKt.class +0 -0
  146. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformConfig.class +0 -0
  147. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.class +0 -0
  148. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig.class +0 -0
  149. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$Style.class +0 -0
  150. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer$WhenMappings.class +0 -0
  151. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/WaveformRenderer.class +0 -0
  152. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  153. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +11 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  172. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  173. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  174. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  175. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  176. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  177. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  178. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  179. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  180. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  181. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  182. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  183. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  184. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  185. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  186. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  187. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  188. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  189. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  190. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  191. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  192. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  193. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  194. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  195. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  196. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  197. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  198. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  199. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  200. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  201. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  202. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  203. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  204. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  205. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  206. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  207. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  208. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  209. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  210. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  211. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  212. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  213. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  214. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  215. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
  216. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  217. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  218. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  219. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  220. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  221. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  222. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  223. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  224. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  225. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  226. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  227. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  228. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  229. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  230. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  231. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  232. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  233. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  234. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  235. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  236. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  238. package/android/build/outputs/logs/manifest-merger-debug-report.txt +51 -7
  239. package/android/build/tmp/kotlin-classes/debug/META-INF/siteed-expo-audio-stream_debug.kotlin_module +0 -0
  240. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioFormatInfo.class +0 -0
  241. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioFormatUtils.class +0 -0
  242. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioNotificationManager$Companion.class +0 -0
  243. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioNotificationManager.class +0 -0
  244. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$AudioData.class +0 -0
  245. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$Companion.class +0 -0
  246. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.class +0 -0
  247. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioProcessor.class +0 -0
  248. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecorderManager$Companion.class +0 -0
  249. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecorderManager.class +0 -0
  250. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService$Companion.class +0 -0
  251. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService$notificationManager$2.class +0 -0
  252. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/AudioRecordingService.class +0 -0
  253. 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
  254. 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
  255. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$11.class +0 -0
  256. 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
  257. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$13.class +0 -0
  258. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$14.class +0 -0
  259. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$15.class +0 -0
  260. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$16.class +0 -0
  261. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$17.class +0 -0
  262. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$18.class +0 -0
  263. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$19.class +0 -0
  264. 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
  265. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$20.class +0 -0
  266. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$21.class +0 -0
  267. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$22.class +0 -0
  268. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$23.class +0 -0
  269. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$24.class +0 -0
  270. 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
  271. 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
  272. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$5.class +0 -0
  273. 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
  274. 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
  275. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$16$$inlined$AsyncFunction$8.class +0 -0
  276. 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
  277. 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
  278. 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
  279. 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
  280. 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
  281. 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
  282. 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
  283. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule.class +0 -0
  284. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationAction.class +0 -0
  285. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationConfig$Companion.class +0 -0
  286. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/NotificationConfig.class +0 -0
  287. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/PermissionUtils.class +0 -0
  288. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver$Companion.class +0 -0
  289. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver$handleRecordingAction$notificationPromise$1.class +0 -0
  290. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingActionReceiver.class +0 -0
  291. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfig$Companion.class +0 -0
  292. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfig.class +0 -0
  293. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/RecordingConfigKt.class +0 -0
  294. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformConfig.class +0 -0
  295. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig$Companion.class +0 -0
  296. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$RenderConfig.class +0 -0
  297. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$Style.class +0 -0
  298. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer$WhenMappings.class +0 -0
  299. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/WaveformRenderer.class +0 -0
  300. package/android/src/main/AndroidManifest.xml +24 -2
  301. package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +76 -1
  302. package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +362 -0
  303. package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +8 -4
  304. package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +477 -261
  305. package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +71 -0
  306. package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +78 -8
  307. package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +70 -0
  308. package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +41 -6
  309. package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +59 -0
  310. package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +138 -1
  311. package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +19 -0
  312. package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +159 -0
  313. package/android/src/main/res/drawable/ic_default_action_icon.xml +16 -0
  314. package/android/src/main/res/drawable/ic_microphone.xml +13 -0
  315. package/android/src/main/res/drawable/ic_pause.xml +10 -0
  316. package/android/src/main/res/drawable/ic_play.xml +10 -0
  317. package/android/src/main/res/drawable/ic_stop.xml +10 -0
  318. package/android/src/main/res/layout/notification_recording.xml +37 -0
  319. package/build/ExpoAudioStream.types.d.ts +36 -0
  320. package/build/ExpoAudioStream.types.d.ts.map +1 -1
  321. package/build/ExpoAudioStream.types.js.map +1 -1
  322. package/build/useAudioRecorder.d.ts.map +1 -1
  323. package/build/useAudioRecorder.js +32 -11
  324. package/build/useAudioRecorder.js.map +1 -1
  325. package/ios/AudioNotificationManager.swift +135 -0
  326. package/ios/AudioStreamManager.swift +387 -13
  327. package/ios/AudioStreamManagerDelegate.swift +4 -0
  328. package/ios/ExpoAudioStreamModule.swift +66 -38
  329. package/ios/NotificationExtension.swift +15 -0
  330. package/ios/RecordingSettings.swift +83 -5
  331. package/package.json +1 -1
  332. package/plugin/build/index.d.ts +1 -3
  333. package/plugin/build/index.js +103 -10
  334. package/plugin/src/index.ts +124 -21
  335. package/publish.sh +36 -3
  336. package/src/ExpoAudioStream.types.ts +108 -13
  337. package/src/useAudioRecorder.tsx +46 -12
  338. package/android/build/.transforms/871e87a512fbb418f6a6523c40225bac/results.bin +0 -1
  339. package/android/build/.transforms/871e87a512fbb418f6a6523c40225bac/transformed/classes/classes_dex/classes.dex +0 -0
  340. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/results.bin +0 -1
  341. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData$AmplitudeRange.dex +0 -0
  342. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData$SpeakerChange.dex +0 -0
  343. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioAnalysisData.dex +0 -0
  344. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioDataEncoder.dex +0 -0
  345. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioFileHandler.dex +0 -0
  346. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioFormatUtils.dex +0 -0
  347. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$AudioData.dex +0 -0
  348. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$Companion.dex +0 -0
  349. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor$extractMFCC$powerSpectrum$2.dex +0 -0
  350. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioProcessor.dex +0 -0
  351. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/AudioRecorderManager.dex +0 -0
  352. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/BuildConfig.dex +0 -0
  353. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/Constants.dex +0 -0
  354. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/DataPoint.dex +0 -0
  355. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/EventSender.dex +0 -0
  356. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$10.dex +0 -0
  357. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$12.dex +0 -0
  358. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.dex +0 -0
  359. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.dex +0 -0
  360. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.dex +0 -0
  361. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.dex +0 -0
  362. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$2.dex +0 -0
  363. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$4.dex +0 -0
  364. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$7.dex +0 -0
  365. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.dex +0 -0
  366. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
  367. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule.dex +0 -0
  368. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/FFT.dex +0 -0
  369. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/Features.dex +0 -0
  370. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/PermissionUtils.dex +0 -0
  371. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/debug_dex/net/siteed/audiostream/RecordingConfig.dex +0 -0
  372. package/android/build/.transforms/99bb16aff51bfafd6c73c1b96e3e0dcf/transformed/debug/desugar_graph.bin +0 -0
  373. package/android/build/.transforms/a758925c83c348fb1544431cf45e6a05/results.bin +0 -1
  374. package/android/build/.transforms/a758925c83c348fb1544431cf45e6a05/transformed/classes/classes_dex/classes.dex +0 -0
  375. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$1.dex +0 -0
  376. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.dex +0 -0
  377. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.dex +0 -0
  378. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.dex +0 -0
  379. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.dex +0 -0
  380. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.dex +0 -0
  381. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$3.dex +0 -0
  382. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$6.dex +0 -0
  383. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.dex +0 -0
  384. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$9.dex +0 -0
  385. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$1.dex +0 -0
  386. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$2.dex +0 -0
  387. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$3.dex +0 -0
  388. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunctionWithPromise$4.dex +0 -0
  389. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$1.dex +0 -0
  390. package/android/build/.transforms/dfac117b512a43872cc8ea7286b996cc/transformed/debug/debug_dex/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$FunctionWithoutArgs$2.dex +0 -0
  391. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.class +0 -0
  392. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.class +0 -0
  393. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.class +0 -0
  394. package/android/build/intermediates/runtime_library_classes_dir/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.class +0 -0
  395. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$13.class +0 -0
  396. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$14.class +0 -0
  397. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$15.class +0 -0
  398. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$16.class +0 -0
  399. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$17.class +0 -0
  400. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$18.class +0 -0
  401. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$5.class +0 -0
  402. package/android/build/tmp/kotlin-classes/debug/net/siteed/audiostream/ExpoAudioStreamModule$definition$lambda$14$$inlined$AsyncFunction$8.class +0 -0
@@ -0,0 +1,135 @@
1
+ class AudioNotificationManager {
2
+ private let notificationCenter = UNUserNotificationCenter.current()
3
+ private let notificationId = "audio_recording_notification"
4
+ private var updateTimer: Timer?
5
+ private var config: NotificationConfig?
6
+ private var currentDuration: TimeInterval = 0
7
+ private var lastUpdateTime: Date = Date()
8
+ private var minUpdateInterval: TimeInterval = 1.0 // Minimum time between updates
9
+
10
+ func initialize(with config: NotificationConfig?) {
11
+ self.config = config
12
+ setupNotificationCategories()
13
+ showInitialNotification()
14
+ }
15
+
16
+ private func setupNotificationCategories() {
17
+ let pauseAction = UNNotificationAction(
18
+ identifier: "PAUSE_RECORDING",
19
+ title: "Pause",
20
+ options: [.foreground]
21
+ )
22
+
23
+ let resumeAction = UNNotificationAction(
24
+ identifier: "RESUME_RECORDING",
25
+ title: "Resume",
26
+ options: [.foreground]
27
+ )
28
+
29
+ let category = UNNotificationCategory(
30
+ identifier: config?.ios?.categoryIdentifier ?? "recording_category",
31
+ actions: [pauseAction, resumeAction],
32
+ intentIdentifiers: [],
33
+ options: [.customDismissAction]
34
+ )
35
+
36
+ notificationCenter.setNotificationCategories([category])
37
+ }
38
+
39
+ func showInitialNotification() {
40
+ updateNotification()
41
+ }
42
+
43
+ func startUpdates(startTime: Date) {
44
+ DispatchQueue.main.async {
45
+ self.updateTimer?.invalidate()
46
+
47
+ self.updateTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
48
+ guard let self = self else { return }
49
+
50
+ let now = Date()
51
+ if now.timeIntervalSince(self.lastUpdateTime) >= self.minUpdateInterval {
52
+ self.updateNotification()
53
+ self.lastUpdateTime = now
54
+ }
55
+ }
56
+ RunLoop.main.add(self.updateTimer!, forMode: .common)
57
+
58
+ self.showInitialNotification()
59
+ }
60
+ }
61
+
62
+ func stopUpdates() {
63
+ DispatchQueue.main.async {
64
+ self.updateTimer?.invalidate()
65
+ self.updateTimer = nil
66
+
67
+ self.notificationCenter.removeDeliveredNotifications(withIdentifiers: [self.notificationId])
68
+ self.notificationCenter.removePendingNotificationRequests(withIdentifiers: [self.notificationId])
69
+ }
70
+ }
71
+
72
+ func updateState(isPaused: Bool) {
73
+ let now = Date()
74
+ if now.timeIntervalSince(lastUpdateTime) >= minUpdateInterval {
75
+ updateNotification(forcePauseState: isPaused)
76
+ lastUpdateTime = now
77
+ }
78
+ }
79
+
80
+ func updateDuration(_ duration: TimeInterval) {
81
+ currentDuration = max(0, duration)
82
+ let now = Date()
83
+ if now.timeIntervalSince(lastUpdateTime) >= minUpdateInterval {
84
+ updateNotification()
85
+ lastUpdateTime = now
86
+ }
87
+ }
88
+
89
+ private func updateNotification(forcePauseState: Bool? = nil) {
90
+ // First, check if we already have a notification
91
+ notificationCenter.getDeliveredNotifications { [weak self] notifications in
92
+ guard let self = self else { return }
93
+
94
+ // If we have a notification and it was recently updated, skip
95
+ if let existing = notifications.first(where: { $0.request.identifier == self.notificationId }),
96
+ Date().timeIntervalSince(self.lastUpdateTime) < self.minUpdateInterval {
97
+ return
98
+ }
99
+
100
+ // Create notification content
101
+ let content = UNMutableNotificationContent()
102
+ content.title = forcePauseState == true ?
103
+ "Recording Paused" :
104
+ (self.config?.title ?? "Recording in Progress")
105
+
106
+ let durationText = self.formatDuration(self.currentDuration)
107
+ let configText = self.config?.text ?? ""
108
+ content.body = configText.isEmpty ? durationText : "\(configText) - \(durationText)"
109
+
110
+ content.categoryIdentifier = self.config?.ios?.categoryIdentifier ?? "recording_category"
111
+ content.sound = nil
112
+
113
+ // Create request
114
+ let request = UNNotificationRequest(
115
+ identifier: self.notificationId,
116
+ content: content,
117
+ trigger: nil
118
+ )
119
+
120
+ // Replace the existing notification
121
+ self.notificationCenter.removeDeliveredNotifications(withIdentifiers: [self.notificationId])
122
+ self.notificationCenter.add(request) { error in
123
+ if let error = error {
124
+ print("Failed to update notification: \(error)")
125
+ }
126
+ }
127
+ }
128
+ }
129
+
130
+ private func formatDuration(_ duration: TimeInterval) -> String {
131
+ let minutes = Int(duration) / 60
132
+ let seconds = Int(duration) % 60
133
+ return String(format: "%02d:%02d", minutes, seconds)
134
+ }
135
+ }
@@ -8,6 +8,9 @@
8
8
  import Foundation
9
9
  import AVFoundation
10
10
  import Accelerate
11
+ import UIKit
12
+ import MediaPlayer
13
+ import UserNotifications
11
14
 
12
15
  // Helper to convert to little-endian byte array
13
16
  extension UInt32 {
@@ -33,6 +36,10 @@ class AudioStreamManager: NSObject {
33
36
  private var audioProcessor: AudioProcessor?
34
37
  private var startTime: Date?
35
38
  private var pauseStartTime: Date?
39
+
40
+ // Wake lock related properties
41
+ private var wasIdleTimerDisabled: Bool = false // Track previous idle timer state
42
+ private var isWakeLockEnabled: Bool = false // Track current wake lock state
36
43
 
37
44
  internal var lastEmissionTime: Date?
38
45
  internal var lastEmittedSize: Int64 = 0
@@ -48,12 +55,48 @@ class AudioStreamManager: NSObject {
48
55
  private var lastBufferTime: AVAudioTime?
49
56
  private var accumulatedData = Data()
50
57
  private var recentData = [Float]() // This property stores the recent audio data
58
+ private var notificationUpdateTimer: Timer?
51
59
 
60
+ private var notificationManager: AudioNotificationManager?
61
+ private var notificationView: MPNowPlayingInfoCenter?
62
+ private var audioSession: AVAudioSession?
63
+ private var notificationObserver: Any?
64
+ private var mediaInfoUpdateTimer: Timer?
65
+ private var remoteCommandCenter: MPRemoteCommandCenter?
66
+
52
67
  weak var delegate: AudioStreamManagerDelegate? // Define the delegate here
53
68
 
54
69
  /// Initializes the AudioStreamManager
55
70
  override init() {
56
71
  super.init()
72
+ // Only keep audio session interruption observer here
73
+ NotificationCenter.default.addObserver(
74
+ self,
75
+ selector: #selector(handleAudioSessionInterruption),
76
+ name: AVAudioSession.interruptionNotification,
77
+ object: nil
78
+ )
79
+ NotificationCenter.default.addObserver(
80
+ self,
81
+ selector: #selector(handleAppDidEnterBackground),
82
+ name: UIApplication.didEnterBackgroundNotification,
83
+ object: nil
84
+ )
85
+ NotificationCenter.default.addObserver(
86
+ self,
87
+ selector: #selector(handleAppWillEnterForeground),
88
+ name: UIApplication.willEnterForegroundNotification,
89
+ object: nil
90
+ )
91
+
92
+ }
93
+
94
+ deinit {
95
+ // Ensure wake lock is disabled when the manager is deallocated
96
+ disableWakeLock()
97
+ if let observer = notificationObserver {
98
+ NotificationCenter.default.removeObserver(observer)
99
+ }
57
100
  }
58
101
 
59
102
  /// Handles audio session interruptions.
@@ -67,7 +110,7 @@ class AudioStreamManager: NSObject {
67
110
 
68
111
  Logger.debug("audio session interruption \(type)")
69
112
  if type == .began {
70
- // Pause your audio recording
113
+ disableWakeLock() // Disable wake lock when audio is interrupted
71
114
  } else if type == .ended {
72
115
  if let optionsValue = info[AVAudioSessionInterruptionOptionKey] as? UInt {
73
116
  let options = AVAudioSession.InterruptionOptions(rawValue: optionsValue)
@@ -75,11 +118,207 @@ class AudioStreamManager: NSObject {
75
118
  // Resume your audio recording
76
119
  Logger.debug("Resume audio recording \(recordingUUID!)")
77
120
  try? AVAudioSession.sharedInstance().setActive(true)
121
+ enableWakeLock() // Re-enable wake lock when audio resumes
78
122
  }
79
123
  }
80
124
  }
81
125
  }
82
126
 
127
+ private func setupNowPlayingInfo() {
128
+ // Configure audio session for background audio
129
+ audioSession = AVAudioSession.sharedInstance()
130
+ do {
131
+ try audioSession?.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth, .mixWithOthers])
132
+ try audioSession?.setActive(true)
133
+ } catch {
134
+ Logger.debug("Failed to configure audio session: \(error)")
135
+ }
136
+
137
+ // Setup Now Playing info
138
+ notificationView = MPNowPlayingInfoCenter.default()
139
+ updateNowPlayingInfo(isPaused: false)
140
+
141
+ // Configure Remote Command Center
142
+ setupRemoteCommandCenter()
143
+
144
+ // Enable remote control events on main thread
145
+ DispatchQueue.main.async {
146
+ UIApplication.shared.beginReceivingRemoteControlEvents()
147
+ }
148
+ }
149
+
150
+ private func setupRemoteCommandCenter() {
151
+ remoteCommandCenter = MPRemoteCommandCenter.shared()
152
+
153
+ // Remove any existing handlers
154
+ remoteCommandCenter?.pauseCommand.removeTarget(nil)
155
+ remoteCommandCenter?.playCommand.removeTarget(nil)
156
+
157
+ // Add pause command handler
158
+ remoteCommandCenter?.pauseCommand.addTarget { [weak self] _ in
159
+ guard let self = self, self.isRecording && !self.isPaused else {
160
+ return .commandFailed
161
+ }
162
+ self.pauseRecording()
163
+ return .success
164
+ }
165
+
166
+ // Add play/resume command handler
167
+ remoteCommandCenter?.playCommand.addTarget { [weak self] _ in
168
+ guard let self = self, self.isRecording && self.isPaused else {
169
+ return .commandFailed
170
+ }
171
+ self.resumeRecording()
172
+ return .success
173
+ }
174
+
175
+ // Enable the commands
176
+ remoteCommandCenter?.pauseCommand.isEnabled = true
177
+ remoteCommandCenter?.playCommand.isEnabled = true
178
+
179
+ // Disable unused commands
180
+ remoteCommandCenter?.nextTrackCommand.isEnabled = false
181
+ remoteCommandCenter?.previousTrackCommand.isEnabled = false
182
+ remoteCommandCenter?.changePlaybackRateCommand.isEnabled = false
183
+ remoteCommandCenter?.seekBackwardCommand.isEnabled = false
184
+ remoteCommandCenter?.seekForwardCommand.isEnabled = false
185
+ }
186
+
187
+ private func updateNowPlayingInfo(isPaused: Bool) {
188
+ var nowPlayingInfo = [String: Any]()
189
+
190
+ // Set media title and artist
191
+ nowPlayingInfo[MPMediaItemPropertyTitle] = recordingSettings?.notification?.title ?? "Recording in Progress"
192
+ nowPlayingInfo[MPMediaItemPropertyArtist] = "Audio Stream"
193
+
194
+ // Set playback state
195
+ nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = isPaused ? 0.0 : 1.0
196
+ nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = currentRecordingDuration()
197
+
198
+ // Add placeholder image if available
199
+ if let image = UIImage(named: "recording_icon") {
200
+ nowPlayingInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size) { size in
201
+ return image
202
+ }
203
+ }
204
+
205
+ // Update the info on main thread
206
+ DispatchQueue.main.async {
207
+ self.notificationView?.nowPlayingInfo = nowPlayingInfo
208
+ }
209
+ }
210
+
211
+ private func currentRecordingDuration() -> TimeInterval {
212
+ guard let startTime = startTime else { return 0 }
213
+ return Date().timeIntervalSince(startTime) - TimeInterval(pausedDuration)
214
+ }
215
+
216
+ private func cleanupNotificationObservers() {
217
+ NotificationCenter.default.removeObserver(self)
218
+ }
219
+
220
+ @objc private func handlePauseNotification(_ notification: Notification) {
221
+ // Only handle if recording and notifications are enabled
222
+ guard isRecording, recordingSettings?.showNotification == true else { return }
223
+ pauseRecording()
224
+ }
225
+
226
+ @objc private func handleResumeNotification(_ notification: Notification) {
227
+ // Only handle if recording and notifications are enabled
228
+ guard isRecording, recordingSettings?.showNotification == true else { return }
229
+ resumeRecording()
230
+ }
231
+
232
+ @objc private func handlePauseAction() {
233
+ pauseRecording()
234
+ updateNotificationState(isPaused: true)
235
+ }
236
+
237
+ @objc private func handleResumeAction() {
238
+ resumeRecording()
239
+ updateNotificationState(isPaused: false)
240
+ }
241
+
242
+ @objc private func handleAppDidEnterBackground(_ notification: Notification) {
243
+ if isRecording {
244
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
245
+ self?.notificationManager?.showInitialNotification()
246
+ }
247
+ }
248
+ }
249
+
250
+ @objc private func handleAppWillEnterForeground(_ notification: Notification) {
251
+ if isRecording {
252
+ notificationManager?.stopUpdates()
253
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
254
+ guard let self = self else { return }
255
+ self.notificationManager?.startUpdates(startTime: self.startTime ?? Date())
256
+ }
257
+ }
258
+ }
259
+
260
+ private func updateNotificationState(isPaused: Bool) {
261
+ // Calculate current duration
262
+ let currentDuration: TimeInterval
263
+ if let startTime = startTime {
264
+ currentDuration = Date().timeIntervalSince(startTime) - TimeInterval(pausedDuration)
265
+ } else {
266
+ currentDuration = 0
267
+ }
268
+
269
+ // Update Now Playing info
270
+ var nowPlayingInfo = notificationView?.nowPlayingInfo ?? [:]
271
+ nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = isPaused ? 0.0 : 1.0
272
+ nowPlayingInfo[MPMediaItemPropertyTitle] = isPaused ?
273
+ "Recording Paused" :
274
+ (recordingSettings?.notification?.title ?? "Recording in Progress")
275
+ nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = currentDuration
276
+ notificationView?.nowPlayingInfo = nowPlayingInfo
277
+
278
+ // Delegate notification update to AudioNotificationManager
279
+ notificationManager?.updateState(isPaused: isPaused)
280
+ }
281
+
282
+ private func updateMediaInfo() {
283
+ guard let startTime = startTime else { return }
284
+
285
+ let currentDuration = Date().timeIntervalSince(startTime) - TimeInterval(pausedDuration)
286
+
287
+ var nowPlayingInfo = notificationView?.nowPlayingInfo ?? [:]
288
+ nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = currentDuration
289
+ nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = isPaused ? 0.0 : 1.0
290
+ notificationView?.nowPlayingInfo = nowPlayingInfo
291
+ }
292
+
293
+ /// Enables the wake lock to prevent screen dimming
294
+ private func enableWakeLock() {
295
+ guard let settings = recordingSettings,
296
+ settings.keepAwake, // Only proceed if keepAwake is true
297
+ !isWakeLockEnabled // Only proceed if wake lock isn't already enabled
298
+ else { return }
299
+
300
+ DispatchQueue.main.async {
301
+ self.wasIdleTimerDisabled = UIApplication.shared.isIdleTimerDisabled
302
+ UIApplication.shared.isIdleTimerDisabled = true
303
+ self.isWakeLockEnabled = true
304
+ Logger.debug("Wake lock enabled")
305
+ }
306
+ }
307
+
308
+ /// Disables the wake lock and restores previous screen dimming state
309
+ private func disableWakeLock() {
310
+ guard let settings = recordingSettings,
311
+ settings.keepAwake, // Only proceed if keepAwake is true
312
+ isWakeLockEnabled // Only proceed if wake lock is currently enabled
313
+ else { return }
314
+
315
+ DispatchQueue.main.async {
316
+ UIApplication.shared.isIdleTimerDisabled = self.wasIdleTimerDisabled
317
+ self.isWakeLockEnabled = false
318
+ Logger.debug("Wake lock disabled")
319
+ }
320
+ }
321
+
83
322
  /// Creates a new recording file.
84
323
  /// - Returns: The URL of the newly created recording file, or nil if creation failed.
85
324
  private func createRecordingFile() -> URL? {
@@ -201,9 +440,6 @@ class AudioStreamManager: NSObject {
201
440
  do {
202
441
  Logger.debug("Debug: Configuring audio session with sample rate: \(settings.sampleRate) Hz")
203
442
 
204
- // Create an audio format with the desired sample rate
205
- let desiredFormat = AVAudioFormat(commonFormat: commonFormat, sampleRate: newSettings.sampleRate, channels: UInt32(newSettings.numberOfChannels), interleaved: true)
206
-
207
443
  // Check if the input node supports the desired format
208
444
  let inputNode = audioEngine.inputNode
209
445
  let hardwareFormat = inputNode.inputFormat(forBus: 0)
@@ -212,7 +448,11 @@ class AudioStreamManager: NSObject {
212
448
  newSettings.sampleRate = session.sampleRate
213
449
  }
214
450
 
215
- try session.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth])
451
+ try session.setCategory(.playAndRecord,
452
+ mode: .default,
453
+ options: [.allowBluetooth, .defaultToSpeaker, .mixWithOthers]
454
+ )
455
+
216
456
  try session.setPreferredSampleRate(settings.sampleRate)
217
457
  try session.setPreferredIOBufferDuration(1024 / settings.sampleRate)
218
458
  try session.setActive(true)
@@ -225,6 +465,7 @@ class AudioStreamManager: NSObject {
225
465
  }
226
466
 
227
467
  recordingSettings = newSettings // Update the class property with the new settings
468
+ enableWakeLock() // Will only enable if keepAwake is true
228
469
  } catch {
229
470
  Logger.debug("Error: Failed to set up audio session with preferred settings: \(error.localizedDescription)")
230
471
  return nil
@@ -267,6 +508,10 @@ class AudioStreamManager: NSObject {
267
508
  return nil
268
509
  }
269
510
 
511
+ if settings.showNotification {
512
+ initializeNotifications()
513
+ }
514
+
270
515
  do {
271
516
  startTime = Date()
272
517
  try audioEngine.start()
@@ -288,25 +533,74 @@ class AudioStreamManager: NSObject {
288
533
 
289
534
  /// Pauses the current audio recording.
290
535
  func pauseRecording() {
291
- guard isRecording && !isPaused else {
292
- Logger.debug("Recording is not in progress or already paused.")
293
- return
294
- }
536
+ guard isRecording && !isPaused else { return }
295
537
 
538
+ disableWakeLock()
296
539
  audioEngine.pause()
297
540
  isPaused = true
298
541
  pauseStartTime = Date()
299
542
 
543
+ updateNowPlayingInfo(isPaused: true)
544
+ notificationManager?.updateState(isPaused: true)
545
+ delegate?.audioStreamManager(self, didPauseRecording: Date())
546
+ delegate?.audioStreamManager(self, didUpdateNotificationState: true)
547
+
300
548
  Logger.debug("Recording paused.")
301
549
  }
302
550
 
551
+ private func initializeNotifications() {
552
+ guard recordingSettings?.showNotification == true else { return }
553
+
554
+ // Setup notification manager if not already initialized
555
+ if notificationManager == nil {
556
+ UNUserNotificationCenter.current().delegate = self
557
+
558
+ notificationManager = AudioNotificationManager()
559
+
560
+ // Request permissions first
561
+ UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
562
+ if granted {
563
+ DispatchQueue.main.async {
564
+ self.notificationManager?.initialize(with: self.recordingSettings?.notification)
565
+ self.setupNowPlayingInfo()
566
+
567
+ // Start media info update timer
568
+ self.mediaInfoUpdateTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
569
+ self?.updateMediaInfo()
570
+ }
571
+
572
+ // Setup notification observers
573
+ NotificationCenter.default.addObserver(
574
+ self,
575
+ selector: #selector(self.handlePauseNotification),
576
+ name: .pauseRecording,
577
+ object: nil
578
+ )
579
+
580
+ NotificationCenter.default.addObserver(
581
+ self,
582
+ selector: #selector(self.handleResumeNotification),
583
+ name: .resumeRecording,
584
+ object: nil
585
+ )
586
+
587
+ // Start updates if recording is already in progress
588
+ if let startTime = self.startTime {
589
+ self.notificationManager?.startUpdates(startTime: startTime)
590
+ }
591
+ }
592
+ } else if let error = error {
593
+ Logger.debug("Failed to get notification permission: \(error.localizedDescription)")
594
+ }
595
+ }
596
+ }
597
+ }
598
+
303
599
  /// Resumes the current audio recording.
304
600
  func resumeRecording() {
305
- guard isRecording && isPaused else {
306
- Logger.debug("Recording is not in progress or not paused.")
307
- return
308
- }
601
+ guard isRecording && isPaused else { return }
309
602
 
603
+ enableWakeLock()
310
604
  audioEngine.prepare()
311
605
  do {
312
606
  try audioEngine.start()
@@ -314,6 +608,12 @@ class AudioStreamManager: NSObject {
314
608
  if let pauseStartTime = pauseStartTime {
315
609
  pausedDuration += Int(Date().timeIntervalSince(pauseStartTime))
316
610
  }
611
+
612
+ updateNowPlayingInfo(isPaused: false)
613
+ notificationManager?.updateState(isPaused: false)
614
+ delegate?.audioStreamManager(self, didResumeRecording: Date())
615
+ delegate?.audioStreamManager(self, didUpdateNotificationState: false)
616
+
317
617
  Logger.debug("Recording resumed.")
318
618
  } catch {
319
619
  Logger.debug("Error: Failed to resume recording: \(error.localizedDescription)")
@@ -347,10 +647,32 @@ class AudioStreamManager: NSObject {
347
647
  /// Stops the current audio recording.
348
648
  /// - Returns: A RecordingResult object if the recording stopped successfully, or nil otherwise.
349
649
  func stopRecording() -> RecordingResult? {
650
+ disableWakeLock() // Will only disable if keepAwake is true
350
651
  audioEngine.stop()
351
652
  audioEngine.inputNode.removeTap(onBus: 0)
352
653
  isRecording = false
353
654
 
655
+ if recordingSettings?.showNotification == true {
656
+ // Stop and clean up timer
657
+ mediaInfoUpdateTimer?.invalidate()
658
+ mediaInfoUpdateTimer = nil
659
+
660
+ // Clean up notification manager
661
+ notificationManager?.stopUpdates()
662
+ notificationManager = nil
663
+
664
+ // Clean up media controls
665
+ DispatchQueue.main.async {
666
+ UIApplication.shared.endReceivingRemoteControlEvents()
667
+ self.remoteCommandCenter?.pauseCommand.isEnabled = false
668
+ self.remoteCommandCenter?.playCommand.isEnabled = false
669
+ self.notificationView?.nowPlayingInfo = nil
670
+ }
671
+
672
+ // Clean up audio session
673
+ try? audioSession?.setActive(false)
674
+ }
675
+
354
676
  guard let fileURL = recordingFileURL, let startTime = startTime, let settings = recordingSettings else {
355
677
  Logger.debug("Recording or file URL is nil.")
356
678
  return nil
@@ -502,6 +824,22 @@ class AudioStreamManager: NSObject {
502
824
  }
503
825
  }
504
826
 
827
+ private func updateNotificationDuration() {
828
+ guard let startTime = startTime,
829
+ recordingSettings?.showNotification == true else { return }
830
+
831
+ let currentDuration = Date().timeIntervalSince(startTime) - TimeInterval(pausedDuration)
832
+
833
+ // Update both notification manager and media player
834
+ notificationManager?.updateDuration(currentDuration)
835
+
836
+ if let notificationView = notificationView {
837
+ var nowPlayingInfo = notificationView.nowPlayingInfo ?? [:]
838
+ nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = currentDuration
839
+ notificationView.nowPlayingInfo = nowPlayingInfo
840
+ }
841
+ }
842
+
505
843
  /// Processes the audio buffer and writes data to the file. Also handles audio processing if enabled.
506
844
  /// - Parameters:
507
845
  /// - buffer: The audio buffer to process.
@@ -553,6 +891,10 @@ class AudioStreamManager: NSObject {
553
891
  totalDataSize += Int64(data.count)
554
892
  // print("Total data size written: \(totalDataSize) bytes") // Debug: Check total data written
555
893
 
894
+ if recordingSettings?.showNotification == true {
895
+ updateNotificationDuration()
896
+ }
897
+
556
898
  let currentTime = Date()
557
899
  if let lastEmissionTime = lastEmissionTime, currentTime.timeIntervalSince(lastEmissionTime) >= emissionInterval {
558
900
  if let startTime = startTime {
@@ -598,3 +940,35 @@ class AudioStreamManager: NSObject {
598
940
  }
599
941
  }
600
942
  }
943
+
944
+ extension AudioStreamManager: UNUserNotificationCenterDelegate {
945
+ func userNotificationCenter(
946
+ _ center: UNUserNotificationCenter,
947
+ didReceive response: UNNotificationResponse,
948
+ withCompletionHandler completionHandler: @escaping () -> Void
949
+ ) {
950
+ switch response.actionIdentifier {
951
+ case "PAUSE_RECORDING":
952
+ pauseRecording()
953
+ case "RESUME_RECORDING":
954
+ resumeRecording()
955
+ default:
956
+ break
957
+ }
958
+ completionHandler()
959
+ }
960
+
961
+ // This is needed to show notifications when app is in foreground
962
+ func userNotificationCenter(
963
+ _ center: UNUserNotificationCenter,
964
+ willPresent notification: UNNotification,
965
+ withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
966
+ ) {
967
+ if #available(iOS 14.0, *) {
968
+ completionHandler([.banner, .sound])
969
+ } else {
970
+ // For iOS 13 and earlier
971
+ completionHandler([.alert, .sound])
972
+ }
973
+ }
974
+ }
@@ -1,4 +1,8 @@
1
1
  protocol AudioStreamManagerDelegate: AnyObject {
2
2
  func audioStreamManager(_ manager: AudioStreamManager, didReceiveAudioData data: Data, recordingTime: TimeInterval, totalDataSize: Int64)
3
3
  func audioStreamManager(_ manager: AudioStreamManager, didReceiveProcessingResult result: AudioAnalysisData?)
4
+
5
+ func audioStreamManager(_ manager: AudioStreamManager, didPauseRecording pauseTime: Date)
6
+ func audioStreamManager(_ manager: AudioStreamManager, didResumeRecording resumeTime: Date)
7
+ func audioStreamManager(_ manager: AudioStreamManager, didUpdateNotificationState isPaused: Bool)
4
8
  }