@siteed/expo-audio-stream 2.1.0 → 2.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/README.md +40 -222
- package/build/index.d.ts +11 -15
- package/build/index.js +44 -14
- package/package.json +49 -110
- package/src/index.ts +18 -32
- package/CHANGELOG.md +0 -206
- package/android/build.gradle +0 -105
- package/android/src/main/AndroidManifest.xml +0 -27
- package/android/src/main/java/net/siteed/audiostream/AudioAnalysisData.kt +0 -166
- package/android/src/main/java/net/siteed/audiostream/AudioDataEncoder.kt +0 -9
- package/android/src/main/java/net/siteed/audiostream/AudioFileHandler.kt +0 -131
- package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +0 -103
- package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +0 -435
- package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +0 -2235
- package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +0 -1437
- package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +0 -152
- package/android/src/main/java/net/siteed/audiostream/AudioTrimmer.kt +0 -1099
- package/android/src/main/java/net/siteed/audiostream/Constants.kt +0 -21
- package/android/src/main/java/net/siteed/audiostream/EventSender.kt +0 -7
- package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +0 -739
- package/android/src/main/java/net/siteed/audiostream/FFT.kt +0 -99
- package/android/src/main/java/net/siteed/audiostream/Features.kt +0 -98
- package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +0 -70
- package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +0 -59
- package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +0 -59
- package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +0 -205
- package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +0 -19
- package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +0 -159
- package/android/src/main/res/drawable/ic_default_action_icon.xml +0 -16
- package/android/src/main/res/drawable/ic_microphone.xml +0 -13
- package/android/src/main/res/drawable/ic_pause.xml +0 -10
- package/android/src/main/res/drawable/ic_play.xml +0 -10
- package/android/src/main/res/drawable/ic_stop.xml +0 -10
- package/android/src/main/res/layout/notification_recording.xml +0 -37
- package/android/src/main/test/java/net/siteed/audiostream/AudioProcessorTest.kt +0 -56
- package/app.plugin.js +0 -1
- package/build/AudioAnalysis/AudioAnalysis.types.d.ts +0 -179
- package/build/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
- package/build/AudioAnalysis/AudioAnalysis.types.js +0 -3
- package/build/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
- package/build/AudioAnalysis/extractAudioAnalysis.d.ts +0 -68
- package/build/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
- package/build/AudioAnalysis/extractAudioAnalysis.js +0 -203
- package/build/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
- package/build/AudioAnalysis/extractAudioData.d.ts +0 -3
- package/build/AudioAnalysis/extractAudioData.d.ts.map +0 -1
- package/build/AudioAnalysis/extractAudioData.js +0 -5
- package/build/AudioAnalysis/extractAudioData.js.map +0 -1
- package/build/AudioAnalysis/extractMelSpectrogram.d.ts +0 -14
- package/build/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
- package/build/AudioAnalysis/extractMelSpectrogram.js +0 -85
- package/build/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
- package/build/AudioAnalysis/extractPreview.d.ts +0 -11
- package/build/AudioAnalysis/extractPreview.d.ts.map +0 -1
- package/build/AudioAnalysis/extractPreview.js +0 -25
- package/build/AudioAnalysis/extractPreview.js.map +0 -1
- package/build/AudioAnalysis/extractWaveform.d.ts +0 -8
- package/build/AudioAnalysis/extractWaveform.d.ts.map +0 -1
- package/build/AudioAnalysis/extractWaveform.js +0 -11
- package/build/AudioAnalysis/extractWaveform.js.map +0 -1
- package/build/AudioRecorder.provider.d.ts +0 -11
- package/build/AudioRecorder.provider.d.ts.map +0 -1
- package/build/AudioRecorder.provider.js +0 -37
- package/build/AudioRecorder.provider.js.map +0 -1
- package/build/ExpoAudioStream.native.d.ts +0 -3
- package/build/ExpoAudioStream.native.d.ts.map +0 -1
- package/build/ExpoAudioStream.native.js +0 -6
- package/build/ExpoAudioStream.native.js.map +0 -1
- package/build/ExpoAudioStream.types.d.ts +0 -532
- package/build/ExpoAudioStream.types.d.ts.map +0 -1
- package/build/ExpoAudioStream.types.js +0 -2
- package/build/ExpoAudioStream.types.js.map +0 -1
- package/build/ExpoAudioStream.web.d.ts +0 -59
- package/build/ExpoAudioStream.web.d.ts.map +0 -1
- package/build/ExpoAudioStream.web.js +0 -285
- package/build/ExpoAudioStream.web.js.map +0 -1
- package/build/ExpoAudioStreamModule.d.ts +0 -3
- package/build/ExpoAudioStreamModule.d.ts.map +0 -1
- package/build/ExpoAudioStreamModule.js +0 -693
- package/build/ExpoAudioStreamModule.js.map +0 -1
- package/build/WebRecorder.web.d.ts +0 -119
- package/build/WebRecorder.web.d.ts.map +0 -1
- package/build/WebRecorder.web.js +0 -436
- package/build/WebRecorder.web.js.map +0 -1
- package/build/constants.d.ts +0 -11
- package/build/constants.d.ts.map +0 -1
- package/build/constants.js +0 -14
- package/build/constants.js.map +0 -1
- package/build/events.d.ts +0 -26
- package/build/events.d.ts.map +0 -1
- package/build/events.js +0 -21
- package/build/events.js.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/index.js.map +0 -1
- package/build/trimAudio.d.ts +0 -25
- package/build/trimAudio.d.ts.map +0 -1
- package/build/trimAudio.js +0 -67
- package/build/trimAudio.js.map +0 -1
- package/build/useAudioRecorder.d.ts +0 -21
- package/build/useAudioRecorder.d.ts.map +0 -1
- package/build/useAudioRecorder.js +0 -427
- package/build/useAudioRecorder.js.map +0 -1
- package/build/utils/BlobFix.d.ts +0 -9
- package/build/utils/BlobFix.d.ts.map +0 -1
- package/build/utils/BlobFix.js +0 -498
- package/build/utils/BlobFix.js.map +0 -1
- package/build/utils/audioProcessing.d.ts +0 -24
- package/build/utils/audioProcessing.d.ts.map +0 -1
- package/build/utils/audioProcessing.js +0 -133
- package/build/utils/audioProcessing.js.map +0 -1
- package/build/utils/concatenateBuffers.d.ts +0 -8
- package/build/utils/concatenateBuffers.d.ts.map +0 -1
- package/build/utils/concatenateBuffers.js +0 -21
- package/build/utils/concatenateBuffers.js.map +0 -1
- package/build/utils/convertPCMToFloat32.d.ts +0 -13
- package/build/utils/convertPCMToFloat32.d.ts.map +0 -1
- package/build/utils/convertPCMToFloat32.js +0 -120
- package/build/utils/convertPCMToFloat32.js.map +0 -1
- package/build/utils/encodingToBitDepth.d.ts +0 -5
- package/build/utils/encodingToBitDepth.d.ts.map +0 -1
- package/build/utils/encodingToBitDepth.js +0 -13
- package/build/utils/encodingToBitDepth.js.map +0 -1
- package/build/utils/getWavFileInfo.d.ts +0 -26
- package/build/utils/getWavFileInfo.d.ts.map +0 -1
- package/build/utils/getWavFileInfo.js +0 -92
- package/build/utils/getWavFileInfo.js.map +0 -1
- package/build/utils/writeWavHeader.d.ts +0 -49
- package/build/utils/writeWavHeader.d.ts.map +0 -1
- package/build/utils/writeWavHeader.js +0 -91
- package/build/utils/writeWavHeader.js.map +0 -1
- package/build/workers/InlineFeaturesExtractor.web.d.ts +0 -2
- package/build/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
- package/build/workers/InlineFeaturesExtractor.web.js +0 -828
- package/build/workers/InlineFeaturesExtractor.web.js.map +0 -1
- package/build/workers/inlineAudioWebWorker.web.d.ts +0 -2
- package/build/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
- package/build/workers/inlineAudioWebWorker.web.js +0 -157
- package/build/workers/inlineAudioWebWorker.web.js.map +0 -1
- package/expo-module.config.json +0 -9
- package/ios/AudioAnalysisData.swift +0 -74
- package/ios/AudioNotificationManager.swift +0 -135
- package/ios/AudioProcessingHelpers.swift +0 -743
- package/ios/AudioProcessor.swift +0 -1313
- package/ios/AudioStreamError.swift +0 -7
- package/ios/AudioStreamManager.swift +0 -1708
- package/ios/AudioStreamManagerDelegate.swift +0 -16
- package/ios/DataPoint.swift +0 -54
- package/ios/DecodingConfig.swift +0 -47
- package/ios/ExpoAudioStream.podspec +0 -27
- package/ios/ExpoAudioStreamModule.swift +0 -805
- package/ios/FFT.swift +0 -62
- package/ios/Features.swift +0 -95
- package/ios/Logger.swift +0 -7
- package/ios/NotificationExtension.swift +0 -15
- package/ios/RecordingResult.swift +0 -22
- package/ios/RecordingSettings.swift +0 -265
- package/ios/WaveformExtractor.swift +0 -105
- package/plugin/build/index.d.ts +0 -21
- package/plugin/build/index.js +0 -191
- package/plugin/src/index.ts +0 -278
- package/plugin/tsconfig.json +0 -10
- package/plugin/tsconfig.tsbuildinfo +0 -1
- package/src/AudioAnalysis/AudioAnalysis.types.ts +0 -202
- package/src/AudioAnalysis/extractAudioAnalysis.ts +0 -333
- package/src/AudioAnalysis/extractAudioData.ts +0 -6
- package/src/AudioAnalysis/extractMelSpectrogram.ts +0 -144
- package/src/AudioAnalysis/extractPreview.ts +0 -34
- package/src/AudioAnalysis/extractWaveform.ts +0 -22
- package/src/AudioRecorder.provider.tsx +0 -54
- package/src/ExpoAudioStream.native.ts +0 -6
- package/src/ExpoAudioStream.types.ts +0 -641
- package/src/ExpoAudioStream.web.ts +0 -359
- package/src/ExpoAudioStreamModule.ts +0 -967
- package/src/WebRecorder.web.ts +0 -580
- package/src/constants.ts +0 -18
- package/src/events.ts +0 -60
- package/src/trimAudio.ts +0 -90
- package/src/useAudioRecorder.tsx +0 -620
- package/src/utils/BlobFix.ts +0 -559
- package/src/utils/audioProcessing.ts +0 -205
- package/src/utils/concatenateBuffers.ts +0 -24
- package/src/utils/convertPCMToFloat32.ts +0 -170
- package/src/utils/encodingToBitDepth.ts +0 -18
- package/src/utils/getWavFileInfo.ts +0 -132
- package/src/utils/writeWavHeader.ts +0 -114
- package/src/workers/InlineFeaturesExtractor.web.tsx +0 -827
- package/src/workers/inlineAudioWebWorker.web.tsx +0 -156
|
@@ -1,152 +0,0 @@
|
|
|
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
|
-
import expo.modules.kotlin.Promise
|
|
12
|
-
import android.app.NotificationChannel
|
|
13
|
-
import android.app.NotificationManager
|
|
14
|
-
import androidx.core.app.NotificationCompat
|
|
15
|
-
|
|
16
|
-
class AudioRecordingService : Service() {
|
|
17
|
-
private val notificationManager by lazy {
|
|
18
|
-
AudioNotificationManager.getInstance(applicationContext)
|
|
19
|
-
}
|
|
20
|
-
private val mainHandler = Handler(Looper.getMainLooper())
|
|
21
|
-
private var isRunning = false
|
|
22
|
-
|
|
23
|
-
override fun onBind(intent: Intent?): IBinder? = null
|
|
24
|
-
|
|
25
|
-
override fun onCreate() {
|
|
26
|
-
super.onCreate()
|
|
27
|
-
Log.d(Constants.TAG, "AudioRecordingService onCreate")
|
|
28
|
-
isRunning = true
|
|
29
|
-
setServiceRunning(true)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
|
33
|
-
Log.d(Constants.TAG, "AudioRecordingService onStartCommand")
|
|
34
|
-
|
|
35
|
-
// Check if service is being started from BOOT_COMPLETED
|
|
36
|
-
val isFromBoot = intent?.action == Intent.ACTION_BOOT_COMPLETED
|
|
37
|
-
|
|
38
|
-
if (!isRunning) {
|
|
39
|
-
isRunning = true
|
|
40
|
-
|
|
41
|
-
// Don't start foreground service if coming from BOOT_COMPLETED on Android 15+
|
|
42
|
-
if (!isFromBoot || Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
43
|
-
// Start as foreground service if keepAwake is true, regardless of notification settings
|
|
44
|
-
val keepAwake = AudioRecorderManager.getInstance()?.getKeepAwakeStatus() ?: true
|
|
45
|
-
if (keepAwake) {
|
|
46
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
47
|
-
// Create a minimal notification channel if needed
|
|
48
|
-
val channel = NotificationChannel(
|
|
49
|
-
"recording_service",
|
|
50
|
-
"Recording Service",
|
|
51
|
-
NotificationManager.IMPORTANCE_LOW
|
|
52
|
-
).apply {
|
|
53
|
-
setSound(null, null)
|
|
54
|
-
enableLights(false)
|
|
55
|
-
enableVibration(false)
|
|
56
|
-
}
|
|
57
|
-
val notificationManager = getSystemService(NotificationManager::class.java)
|
|
58
|
-
notificationManager.createNotificationChannel(channel)
|
|
59
|
-
|
|
60
|
-
// Create minimal silent notification
|
|
61
|
-
val notification = NotificationCompat.Builder(this, "recording_service")
|
|
62
|
-
.setContentTitle("")
|
|
63
|
-
.setContentText("")
|
|
64
|
-
.setSmallIcon(R.drawable.ic_microphone)
|
|
65
|
-
.setOngoing(true)
|
|
66
|
-
.setSound(null)
|
|
67
|
-
.setVibrate(null)
|
|
68
|
-
.setDefaults(0)
|
|
69
|
-
.setPriority(NotificationCompat.PRIORITY_LOW)
|
|
70
|
-
.build()
|
|
71
|
-
|
|
72
|
-
startForeground(1, notification)
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return START_STICKY
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
override fun onDestroy() {
|
|
82
|
-
Log.d(Constants.TAG, "AudioRecordingService onDestroy")
|
|
83
|
-
|
|
84
|
-
stopForeground(STOP_FOREGROUND_REMOVE)
|
|
85
|
-
|
|
86
|
-
isRunning = false
|
|
87
|
-
setServiceRunning(false)
|
|
88
|
-
super.onDestroy()
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
override fun onTaskRemoved(rootIntent: Intent?) {
|
|
92
|
-
super.onTaskRemoved(rootIntent)
|
|
93
|
-
Log.d(Constants.TAG, "AudioRecordingService onTaskRemoved")
|
|
94
|
-
|
|
95
|
-
// Stop recording when app is killed
|
|
96
|
-
AudioRecorderManager.getInstance()?.let { manager ->
|
|
97
|
-
mainHandler.post {
|
|
98
|
-
// Create a simple promise object for internal use
|
|
99
|
-
val promise = object : Promise {
|
|
100
|
-
override fun resolve(value: Any?) {
|
|
101
|
-
Log.d(Constants.TAG, "Successfully stopped recording on task removed")
|
|
102
|
-
cleanup()
|
|
103
|
-
}
|
|
104
|
-
override fun reject(code: String, message: String?, cause: Throwable?) {
|
|
105
|
-
Log.e(Constants.TAG, "Failed to stop recording on task removed: $message")
|
|
106
|
-
cleanup()
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
manager.stopRecording(promise)
|
|
112
|
-
} catch (e: Exception) {
|
|
113
|
-
promise.reject("ERROR", e.message, e)
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
private fun cleanup() {
|
|
121
|
-
stopForeground(STOP_FOREGROUND_REMOVE)
|
|
122
|
-
stopSelf()
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
companion object {
|
|
126
|
-
// Static flag to track if service is running
|
|
127
|
-
private var isServiceRunningStatic = false
|
|
128
|
-
|
|
129
|
-
fun isServiceRunning(): Boolean {
|
|
130
|
-
return isServiceRunningStatic
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
fun setServiceRunning(running: Boolean) {
|
|
134
|
-
isServiceRunningStatic = running
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
fun startService(context: Context) {
|
|
138
|
-
val serviceIntent = Intent(context, AudioRecordingService::class.java)
|
|
139
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
140
|
-
context.startForegroundService(serviceIntent)
|
|
141
|
-
} else {
|
|
142
|
-
context.startService(serviceIntent)
|
|
143
|
-
}
|
|
144
|
-
setServiceRunning(true)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
fun stopService(context: Context) {
|
|
148
|
-
context.stopService(Intent(context, AudioRecordingService::class.java))
|
|
149
|
-
setServiceRunning(false)
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|