- Syntaxe error in flutter_sound_web.podspec #509
- Little mistake in the Podspec file name for flutter_sound_web #509
- Flutter Sound is supported by Flutter Web. You can play with this live demo on the web (still cannot record with Safari or any web browser on iOS : thank you Apple). You can read this. Issues : #494, #468 and #297
- Fix a syntax error in the TauEngine build.gradle 499
- English in the UI widget is now configurable 498
- On Android : Flutter Sound is now a wrapper around
TauEngine
- Add a new example doing Speech-To-Text. Thanks to @jtkeyva :-) . #210
- Publication on JCenter
- On iOS, Flutter Sound use now a Pod library :
TauEngine
- On iOS :
startPlayer()
from a remote URL returned too early (before downloading the file) - The loop example, (from the recorder to the player) has now a delay < 1 sec. #479 and #90
- Fix compilation errors of the examples in LITE flavor #483
- Playback from a remote URL #470
- Volume control with the volume buttons, on Android. #457
- Re-design the modules architecture to be Google recommandations compliant. (We use a new dependency :
flutter_sound_platform_interface
) openAudioSessionWithUI
is now deprecated. Use the parameterwithUI
inopenAudioSession()
instead.- Upgrade "recase" version dependency (thanks to @CRJFisher) #471
- Little bug in the Demo App : 48000 is not a valid Sample rate for AAC/ADTS #460
- Modification to the Widget Recorder UI, to be homogeneous with the Widget Player UI
- Fix two severe bugs on Android in openAudioSessionWithUI and startPlayerFromTrack : those two functions returned too early instead of a future. #425
- On iOS, the device did not go to sleep when idle, with the Flutter Sound default parameters. #439
- startPlayer() and startPlayerFromTrack() return a Future to the record duration instead of a void.
- Flutter Sound FULL is now linked (again) with mobile-ffmpeg-audio 4.3.1.LTS. Please, look to the migration guide
- Fix a concurrency bug between
whenFinished()
andupdateProgress()
#441 - Android : minAndroidSdk is 18. (Tested on a SDK 18 emulator). SDK 18 is fine for the FlutterSoundPlayer, but the FlutterSoundRecorder needs at least 23. #400
- New helper API verb : pcmToWave() to add a WAVE header in front of a Raw PCM record
- New helper API verb : pcmToWaveBuffer() to add a WAVE header in front of a Raw PCM buffer
- New helper API verb : waveToPCM() to remove a WAVE header in front of a Wave record
- New helper API verb : waveToPCMBuffer() to remove a WAVE header in front of a Wave buffer
- startRecorder() can now record Raw PCM Integers/Linear 16 files, both on iOS and Android (Look to a PCM discussion, here)
- startplayer() can now play Raw PCM Integers/Linear 16 files, both on iOS and Android (Look to a PCM discussion, here)
- Fix concurrency bug, when the App does a
stopRecorder()
orpauseRecorder()
duringrecorderTicker()
processing, #443 - Fix a bug when we keep the device in pause mode on the iOS lock screen more than 30 seconds #451
- Recording PCM-Linear 16 to a live Stream (many, many, many requesters). Here a GettingStarted notice
- Playback PCM-Linear 16 from a live Stream (many, many, many requesters). Here a GettingStarted notice
- Fix various bugs in UI Widget #407
- Add a button Pause/Resume in UI Widget Recorder
- Add a button Pause/Resume in UI Widget Player
- Add a semaphore so that the App cannot do several call to Flutter Sound at the same time #374
- On iOS : the "NowPlaying" info on the lockscreen is removed when the sound is finished or when the App does a
stopPlayer()
. Add parameterremoveUIWhenStopped
tostartPlayerFromTrack()
. (iOS only). - On iOS : the "NowPlaying" progress bar on the lockscreen is uptodated when the App does a
seekToPlayer()
#364 - On iOS : Add parameter
defaultPauseResume
tostartPlayerFromTrack()
. (iOS only). - On iOS : Add API verb
getProgress()
. (iOS only). - On iOS : Add API verb
getPlayerState()
. (iOS only). - On iOS : Add API verb
nowPlaying()
. (iOS only). - On iOS : Add API verb
setUIProgressBar()
. (iOS only). #376 - Fixes bug #380, #385
- Fixes bug "AudioFlags and AudioSource not work as expect " #366, #372, #381
- New parameters in the
SoundPlayerUI
constructors for specifying colors, text style and slider style. #397
Error returns from iOS in FlutterSoundPlayer.m was wrong : #350
- Flutter Sound V5 is published under the LGPL license.
- New API documentation
- Changed the global enums names to CamelCase, to be conform with Google recommandations
- Remove the OS dependant parameters from startRecorder()
- Add a new parameter to
startPlayer()
: the Audio Focus requested - Support of new codecs, both for Android and iOS.
- Remove the authorization request from
startRecorder()
- Remove the NULL posted when the player or the recorder is closed.
- The Audio Focus is NOT automaticaly abandoned between two
startPlayer()
or twostartRecorder()
- Patch to avoid problems when the App does a
stopPlayer()
during astartPlayer()
#374
- Error returns from iOS in FlutterSoundPlayer.m was wrong : #350
- Fix as bug in the Focus gain, on iOS #324
- Fix a bug in
resumeRecorder()
on Android : the dbPeak Stream was not restored after a resume() - Fix a bug in
resumeRecorder()
: the returned value was sometimes a boolean instead of a String.
- Check the Initialization Status, before accessing Flutter Sound Modules #307
- Fixes : Pausing a recording doesn't 'pause' the duration. #278
- Fix a crash that we had when accessing the global variable AndroidActivity from
BackGroundAudioSerice.java
#317
- "s.static_framework = true" in flutter_sound.podspec
- Adds pedantic lints and major refactoring of example with bug fixes. #279
- Native code is directely linked with FFmpeg. Flutter Sound App does not need any more to depends on flutter_ffmpeg #265 and #273
- Add a new parameter in the Track structure : albumArtFile
- A new flutter plugin is born :
flutter_sound_lite
#291 - Adds a new parameter
whenPaused:
to thestartPlayerFromTrack()
function. #314 - Fix bug for displaying a remote albumArt on Android. #290
- Trying to catch Android crash during a dirty Timer. #289
- Trying to fix the Android crash when AndroidActivity is null #296
- Fix a bug ('async') when the app forget to initalize its Flutter Sound module. #287
- Codec PCM for recorder on iOS
- Optional argument
requestPermission
beforestartRecorder()
so that the App can control itself the recording permissions. #283
- Fix a bug when initializing for Flutter Embedded V1 on Android #267
- Add _removePlayerCallback, _removeRecorderCallback() and _removeDbPeakCallback() inside release() #248
- Fix conflict with permission_handler 5.x.x #274
- On iOS,
setMeteringEnabled:YES
is called duringsetDbLevelEnabled()
#252, #251 - The call to
initialize()
is now optional #271 - README : #265
- Fix README : #268
- Change dependecies in range
permission_handler: ">=4.0.0 <5.0.0" flutter_ffmpeg: ">=0.2.0 <1.0.0"
- The
isRecording
variable is false when the recorder is paused #266
- Flutter Sound depends on permission_handler: ^4.4.0 #263
- flutter_sound modules are re-entrant #250 and #232
- We can open several
FlutterSoundPlayer
at the same time - We can open several
FlutterSoundRecorder
at the same time
- We can open several
- Add new API verbs : #244
- flutterSoundHelper.getLastFFmpegReturnCode()
- flutterSoundHelper.getLastFFmpegCommandOutput()
- flutterSoundHelper.FFmpegGetMediaInformation() which return info on the given record
- flutterSoundHelper.duration() which return the number of milli-seconds for the given record
- Add new API verbs : ##242
- FlutterSoundRecorder.pauseRecorder()
- FlutterSoundRecorder.resumeRecorder()
- flutter_sound is now compatible with permission_handler 5.x.x #259
- API to control the
audiofocus
#219 - API to set the
audio-category
(i.e. duck-others) #219 - AndroidX and Android embbeded-V2 support #203
- Add a parameter to
startPlayer
to specify a callback when the song is finished #215 - License is now LGPL 3.0 instead of MIT
- bugfix #254
- Module
flauto
for controlling flutter_sound from the lock-screen 219 and #243Highly honor Larpoux, bsutton, salvatore373 🎉!
- Handle custom audio path from path_provider.
- OGG/OPUS support on iOS #199
- Add compatibility for android sdk 19.
- Add
androidx
compatibility. - Resolve #193
- Restore default
startRecorder
- Restore default
- Fix issue #175
- add functions . isEncoderSupported(t_CODEC codec); . isDecoderSupported(t_CODEC codec);
- add property 'audioState'
- check if codec is really supported before doing 'startRecorder'
- modify the example app : disable buttons when the button is not compatible with the current state
- in the example, add sound assets encoded with the various encoder
- modify the example to play from assets
- modify the example to allow selection of various codec
- startPlayerFromBuffer, to play from a buffer #170
- Set android default encoding option to
AAC
. - Fix android default poor sound.
- Postfix
GetDirectoryType
to avoid conflicts #147
- Set android recorder encoder default value to
AndroidEncoder.DEFAULT
.
- Use
NSCachesDirectory
instead ofNSTemporaryDirectory
#141
- Resolve #129
- Resolve few issues on
ios
record path. - Resolve issue
playing
status so player can resume. - Resolve #134
- Resolve #135
- Stopped recording generating infinite db values #131
- Improved db calcs #123
- Fixed 'mediaplayer went away with unhandled events' bug #104
- Fixed 'mediaplayer went away with unhandled events' bug #83
- AndroidX compatibility improved #68
- iOS: Fixes for seekToPlayer #72
- iOS: Setup configuration for using bluetooth microphone recording input #73
- Android: Adds a single threaded command scheduler for all recording related commands.
- Switch source & target compability to Java 8
- Bump gradle plugin version dependencies
- Support db/meter #41
- Show wrong recorder timer text #47
- Add ability to specify Android & iOS encoder #49
- Adjust db range and fix nullable check in ios #59
- Android: Recording operations on a separate command queue #66
- Android: Remove reference to non-AndroidX classes which improves compatibility
- Fixed sound distorting when playing recorded audio again. Issue #14.
- Fixed
seekToPlayer
for android. Issue #10.
- Expose recorder
sampleRate
andnumChannel
. - Do not append
tmp
when filePath provided inios
. - Resolve
regression
issue in1.2.3
which caused in1.2.2
. - Reduce the size of audio file in
1.2.4
. Related #26. - Fixed
recording
issue in android in1.2.5
. - Changed
seekToPlayer
to place exactsecs
instead adding it. - Fix file URI for recording and playing in iOS.
- Released 1.1.0 with beautiful logo from mansa.
- Improved readme.
- Resolve #7.
- Fixed missing break in switch statement.
- Reimport
intl
which is needed to format date in Dart.
- Implemented
setVolume
method. - Specific error messages given in android.
- Manage ios player thread when audio is not loaded.
- Safer handling of progressUpdate in ios when audio is invalid.
- Fixed bug in platform specific code.
- Fixed pug in
seekToPlayer
inios
.
- Added license.
- Released preview version for audio
recorder
andplayer
.