-
Notifications
You must be signed in to change notification settings - Fork 1
Fixes: Bugs, Visualizations, and Enhancements over the recorder and player #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kotlinx-datetime now uses kotlin.time for Clock and Instant so wherever they are used it need to marked as experimental time api. In UI level enum classes the associate string resource is not a getter that a constructor. In RecordingCategoryDao.kt need to provide the map column info directly cannot use a typealias. Dependencies and agp is updated to latest version. Added Visibility provider in editor route so that shared element transition works.
As we are to show the recording ui at all condition and only to allow recording when service is bound. Thus, we don't need to prepare recorder text
Rather than reading the amplitudes we instead use the AudioRecord class to load the pcm data, as we have pcm data we are getting the raw bytes of the recorded data we can now display in any ways. Now each of the points is given by RecordedPoint.kt, and we use RecordedPointExt.kt that normalize , pad and others which help to properly set the timeline. Rest the concept is kept same as BufferedAmplitudeReader.kt. The graph content is clipped so no more extra drawing and the timeline is now drawn based in time values no extra conversion.
VoiceRecorderImpl.kt need to be changed a bit in order to use AudioRecord,just a few function call on each of the operation to prepare AudioRecord and to release it. For LocationProvider.kt its changed to Result form rather that resource which is good for flow based api's. RecorderStopWatch.kt simple change using onStart to start the clock. In the service used a debounced version for the timer text.
Previously We only changed the compile sdk for the app module, other android library module configured with ConfigureAndroidLibraryPlugin.kt was still using compile sdk 35 changed that. some dependency in libs.versions.toml is also updated to there latest version.
Corrected the strings for core and recorder , the strings which will be only used by recorder are kept in recorder. Renamed the clock font to actual name. A new font is used. When the recording is stoped the content is saved then only show the intent based notification. NavController initialized via lambda in MainActivity.kt
Rather than a getter we are using a suspending function and not always use runBlocking to get the settings.
A extra fade in animation added when the actual screen comes to view. Updated agp and other dependency to latest version
Categories count will not be pre-calculated and only the selected category and recordings will be used to evaluate the count value. In RecordingCategoryProvider.kt removed unwanted method and removed unwanted withContext block from RecordingsCategoryProviderImpl.kt. As we are calculating the count on go thus no need for count variable for RecordingCategoryModel.kt
To maintain consistency used the same font over the app graph and editor
The MediaCodecCallback.kt or MediaCodecPCMDataDecoder.kt was not being cancelled as cleanUp was not called in viewmodel and along with that we infer steps visualization ie, a small batch is loaded of longer recordings this is better. MediaCodecPCMDataDecoder.kt the whole media codec logic is put into it. Including to evaluate the data is coroutine is active. If the decoder exists we don't create the visualizer again. indicated by DecoderExistsException.kt
Some correction in PlayerTrackDataFlow.kt use of trySend instead of send to ignore suspending in most cases, PlayerToDomain.kt checked if the extension is called from main thread. In PlayerDurationText.kt and RecorderTimerText.kt else block was not present. Removed unwanted lowpassfilter calculation, if needed it can be replaced later.
App is now signed by a unique key not the debug one, properties in developer.properties is now in ApplicationInfo.kt. Updated version number and version code
Using the storage statistics in ui layer was causing a jank , thus moved to data layer in recordings. DeviceTotalStorageModel.kt provides the info for the storage loaded through StorageInfoProvider.kt
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Key Changes
This pull request addresses several issues, refines visualizations, and introduces minor enhancements to improve the user experience and application stability.
Bug Fixes:
Visualization Improvements:
Enhancements & Updates: