* use Java I/O (classic way) on older android versions
* use Storage Access Framework on newer android versions (Android Lollipop or later)
* both changes have the external SD Card write permission
* add option to ask the save path on each download
* warn the user if the save paths are not defined, this only happens on the first NewPipe run (Android Lollipop or later)
* implement socket timeout error
* use 128k buffer size for copy
* use NewPipe HTTP user agent in the downloads
* automatically recover downloads with network errors that are queued
* 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)
* full support for Directory API (Android Lollipop or later)
* best effort to handle any kind errors (missing file, revoked permissions, etc) and recover the download
* implemented directory choosing
* fix download database version upgrading
* misc. cleanup
* do not release permission on the old save path (if the user change the download directory) under SAF api
* 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
Main changes:
* correctly check the available space (CircularFile.java)
* misc cleanup (CircularFile.java)
* use the "Error Reporter" for non-http errors
* rewrite network state checking and add better support for API 21 (Lollipop) or higher
* implement "metered networks"
* add buttons in "Downloads" activity to start/pause all pending downloads, ignoring the queue flag or if the network is "metered"
* add workaround for VPN connections and/or network switching. Example: switching WiFi to 3G
* rewrite DataReader ¡Webm muxer is now 57% more faster!
* rewrite CircularFile, use file buffers instead of memory buffers. Less troubles in low-end devices
* fix missing offset for KaxCluster (WebMWriter.java), manifested as no thumbnails on file explorers
Download queue:
* remember queue status, unless the user pause the download (un-queue)
* semi-automatic downloads, between networks. Effective if the user create a new download or the downloads activity is starts
* allow enqueue failed downloads
* new option, queue limit, enabled by default. Used to allow one or multiple downloads at same time
Miscellaneous:
* fix crash while selecting details/error menu (mistake on MissionFragment.java)
* misc serialize changes (DownloadMission.java)
* minor UI tweaks
* allow overwrite paused downloads
* fix wrong icons for grid/list button in downloads
* add share option
* implement #2006
* correct misspelled word in strings.xml (es) (cmn)
* fix MissionAdapter crash during device shutdown
New Mp4Muxer + required changes:
* new mp4 muxer (from dash only) with this, muxing on Android 7 is possible now!!!
* re-work in SharpStream
* drop mp4 dash muxer
* misc changes: add warning in SecondaryStreamHelper.java,
* strip m4a DASH files to normal m4a format (youtube only)
Fix storage issues:
* warn to the user if is choosing a "read only" download directory (for external SD Cards), useless is rooted :)
* "write proof" allow post-processing resuming only if the device ran out of space
* implement "insufficient storage" error for downloads
Remove strings which have been deleted from the English strings file during development, but were translated via Weblate, which failed to pull and push our upstream repo.
* use bold style in status (mission_item_linear.xml)
* fix download attemps not begin updated
* dont stop the queue if a download fails
* implement partial wake-lock & wifi-lock
* show notifications for failed downloads
* ¿proper bitmap dispose? (DownloadManagerService.java)
* improve buffer filling (CircularFile.java)
* [Mp4Dash] increment reserved space from 2MiB to 15MiB. This is expensive but useful for devices with low ram
* [WebM] use 2MiB of reserved space
* fix debug warning if one thread is used
* fix wrong download speed when the activity is suspended
* Fix "Queue" menu item that appears in post-processing errors
* fix mission length dont being updated (missing commit)
Post-processing infrastructure
* remove interfaces with one implementation
* fix download resources with unknow length
* marquee style for ProgressDrawable
* "view details" option in mission context menu
* notification for finished downloads
* postprocessing infrastructure: sub-missions, circular file, layers for layers of abstractions for Java IO streams
* Mp4 muxing (only DASH brand)
* WebM muxing
* Captions downloading
* alert dialog for overwrite existing downloads finished or not.
Misc changes
* delete SQLiteDownloadDataSource.java
* delete DownloadMissionSQLiteHelper.java
* implement Localization from #114
Misc fixes (this branch)
* restore old mission listeners variables. Prevents registered listeners get de-referenced on low-end devices
* DownloadManagerService.checkForRunningMission() now return false if the mission has a error.
* use Intent.FLAG_ACTIVITY_NEW_TASK when launching an activity from gigaget threads (apparently it is required in old versions of android)
More changes
* proper error handling "infrastructure"
* queue instead of multiple downloads
* move serialized pending downloads (.giga files) to app data
* stop downloads when swicthing to mobile network (never works, see 2nd point)
* save the thread count for next downloads
* a lot of incoherences fixed
* delete DownloadManagerTest.java (too many changes to keep this file updated)
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)
* ugly workaround for the details_view_layout problem on older devices
* removed "display button on the left side" option since it's not nececeay anymore.
- added play video button for better lefthand support
- wrote codepart to darkon5s listitem improvements
- set minimum api level to 15 (Android 4.0.3 support)
- updated to sdk level 23 including the new support libs