Skip to content

Commit 4e8c11a

Browse files
fix soundlevel for iOS
1 parent 69460b0 commit 4e8c11a

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

ios/AudioSessionManager.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class AudioSessionManager: AudioSessionManaging {
5353
private var lastBufferTime: AVAudioTime?
5454
private var accumulatedData = Data()
5555
private var recentData = [Float]() // This property stores the recent audio data
56+
private var lastSoundLevel: Float = -160.0 // Track the last calculated sound level
5657

5758
weak var delegate: AudioStreamManagerDelegate? // Define the delegate here
5859

@@ -520,7 +521,7 @@ class AudioSessionManager: AudioSessionManaging {
520521
if !accumulatedData.isEmpty {
521522
let currentTime = Date()
522523
let recordingTime = currentTime.timeIntervalSince(startTime)
523-
delegate?.audioStreamManager(self, didReceiveAudioData: accumulatedData, recordingTime: recordingTime, totalDataSize: totalDataSize)
524+
delegate?.audioStreamManager(self, didReceiveAudioData: accumulatedData, recordingTime: recordingTime, totalDataSize: totalDataSize, soundLevel: lastSoundLevel)
524525
accumulatedData.removeAll()
525526
}
526527

@@ -808,8 +809,12 @@ class AudioSessionManager: AudioSessionManaging {
808809
if let startTime = startTime {
809810
let recordingTime = currentTime.timeIntervalSince(startTime)
810811
let dataToProcess = accumulatedData
812+
813+
// Calculate sound level from the working buffer
814+
let soundLevel = AudioUtils.calculatePowerLevel(from: workingBuffer)
815+
lastSoundLevel = soundLevel
811816

812-
delegate?.audioStreamManager(self, didReceiveAudioData: dataToProcess, recordingTime: recordingTime, totalDataSize: totalDataSize)
817+
delegate?.audioStreamManager(self, didReceiveAudioData: dataToProcess, recordingTime: recordingTime, totalDataSize: totalDataSize, soundLevel: soundLevel)
813818

814819
self.lastEmissionTime = currentTime
815820
self.lastEmittedSize = totalDataSize
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
protocol AudioStreamManagerDelegate: AnyObject {
2-
func audioStreamManager(_ manager: AudioSessionManager, didReceiveAudioData data: Data, recordingTime: TimeInterval, totalDataSize: Int64)
2+
func audioStreamManager(_ manager: AudioSessionManager, didReceiveAudioData data: Data, recordingTime: TimeInterval, totalDataSize: Int64, soundLevel: Float)
33
}

ios/ExpoPlayAudioStreamModule.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,8 @@ public class ExpoPlayAudioStreamModule: Module, AudioStreamManagerDelegate, Micr
460460
/// - data: The received audio data.
461461
/// - recordingTime: The current recording time.
462462
/// - totalDataSize: The total size of the received audio data.
463-
func audioStreamManager(_ manager: AudioSessionManager, didReceiveAudioData data: Data, recordingTime: TimeInterval, totalDataSize: Int64) {
463+
/// - soundLevel: The calculated sound level in dB.
464+
func audioStreamManager(_ manager: AudioSessionManager, didReceiveAudioData data: Data, recordingTime: TimeInterval, totalDataSize: Int64, soundLevel: Float) {
464465
guard let fileURL = manager.recordingFileURL,
465466
let settings = manager.recordingSettings else { return }
466467

@@ -484,7 +485,8 @@ public class ExpoPlayAudioStreamModule: Module, AudioStreamManagerDelegate, Micr
484485
"encoded": encodedData,
485486
"deltaSize": deltaSize,
486487
"totalSize": fileSize,
487-
"mimeType": manager.mimeType
488+
"mimeType": manager.mimeType,
489+
"soundLevel": soundLevel
488490
]
489491
// Emit the event to JavaScript
490492
sendEvent(audioDataEvent, eventBody)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "expo-streamer",
3-
"version": "1.0.6",
3+
"version": "1.0.7",
44
"description": "Realtime Audio Streaming for Expo",
55
"main": "build/index.js",
66
"types": "build/index.d.ts",

0 commit comments

Comments
 (0)