- remove duplicated string (name) and avoid potential duplicate (autoplay_never_description -> Never, autoplay_always_description -> Always because they are just "Always" or "Never"). Fixes#4268
- leakCanary string removed (fixes#4233)
* migrate few annotations to androidx
* mission recovery: better error handling (except StreamExtractor.getErrorMessage() method always returns an error)
* post-processing: more detailed progress
[file specific changes]
DownloadMission.java
* remove redundant/boilerplate code (again)
* make few variables volatile
* better file "length" approximation
* use "done" variable to count the amount of bytes downloaded (simplify percent calc in UI code)
Postprocessing.java
* if case of error use "ERROR_POSTPROCESSING" instead of "ERROR_UNKNOWN_EXCEPTION"
* simplify source stream init
DownloadManager.java
* move all "service message sending" code to DownloadMission
* remove not implemented method "notifyUserPendingDownloads()" also his unused strings
DownloadManagerService.java
* use START_STICKY instead of START_NOT_STICKY
* simplify addMissionEventListener()/removeMissionEventListener() methods (always are called from the main thread)
Deleter.java
* better method definition
MissionAdapter.java
* better method definition
* code cleanup
* the UI is now refreshed every 750ms
* simplify download progress calculation
* indicates if the download is actually recovering
* smooth download speed measure
* show estimated remain time
MainFragment.java:
* check if viewPager is null (issued by "Apply changes" feature of Android Studio)
* replace "In queue" to "Pending" in the downloads header to avoid confusions (all languages)
* use 29bits Clusters size to support huge video resolutions (fixes#2291) (WebmWriter.java)
* add missing changes to WebmMuxer.java (i forget select the audio track)
* re-work finished mission database
* re-work DownloadMission and bump it Serializable version
* keep the classic Java IO API
* SAF Tree API support on Android Lollipop or higher
* add wrapper for SAF stream opening
* implement Closeable in SharpStream to replace the dispose() method
* do required changes for this API:
** remove any file creation logic from DownloadInitializer
** make PostProcessing Serializable and reduce the number of iterations
** update all strings.xml files
** storage helpers: StoredDirectoryHelper & StoredFileHelper
** best effort to handle any kind of SAF errors/exceptions
Translated using Weblate (Swedish)
Currently translated at 100.0% (383 of 383 strings)
Translated using Weblate (Chinese (Mandarin))
Currently translated at 27.4% (105 of 383 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 97.1% (372 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Arabic)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Basque)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Dutch)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Spanish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Catalan)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Turkish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Swedish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (French)
Currently translated at 97,1% (372 of 383 strings)
Translated using Weblate (French)
Currently translated at 97,1% (372 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Arabic)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Basque)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Dutch)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Spanish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Catalan)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Swedish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Turkish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Estonian)
Currently translated at 91.6% (351 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)