Commit Graph

3858 Commits

Author SHA1 Message Date
TacoTheDank b1faed586d Replace MathUtils.clamp with Kotlin coerceIn 2023-09-19 16:32:37 -04:00
Stypox 725c18eada
Merge pull request #10165 from TeamNewPipe/fix/media-format
Fix downloads of streams with missing MediaFormat
2023-09-19 15:54:12 +02:00
Stypox 992bb5d7be
Simplify retrieveMediaFormatFromContentTypeHeader
Also check for nullity
2023-09-19 15:33:49 +02:00
TobiGr 8f83e39970 Fix three memory leaks
Add documentation to BaseFragment.initViews(View, Bundle) and BaseFragment.initListeners()
2023-09-19 00:13:16 +02:00
TobiGr 64da7a06c0
Fix previous ActionBar title visible for a few miliseconds when opening ChannelFragment 2023-09-18 23:22:32 +02:00
TobiGr 57eaa1bbe1
Apply review
Co-Authored-By:  Audric V <74829229+AudricV@users.noreply.github.com>
2023-09-18 23:22:32 +02:00
TobiGr 109d06b4bb
Deduplicate code to initialize ClickListeners on playlist controls
Add the separate utility class PlayButtonHelper to handle the initialization of the listeners.
The ClickListeners on playlist controls had different behaviours. This commit fixes that.

The commit also refactors the way how the app determines whether it is started for the first time. The previous version was not clean and recent in this PR caused it to fail.
2023-09-18 23:22:32 +02:00
AudricV f2ee3859ab
Hide the upload date element on the About tab
This empty element should be always hidden for this tab, as there is no upload
date available for channels.
2023-09-18 23:22:32 +02:00
AudricV 89dc44be61
Always show the About tab and support having no description 2023-09-18 23:22:32 +02:00
TobiGr 6ab8716e69
Extract actual feed loading code into separate method
Increase readability
2023-09-18 23:22:32 +02:00
TobiGr 5c7c382323
Add missing `@Override` annotations to setupMetadata() implementations 2023-09-18 23:22:32 +02:00
Stypox 78b4b9441e
Update NewPipeExtractor and adapt imports 2023-09-18 23:22:32 +02:00
Stypox 1519527356
Fix loading feed when a channel tab is empty 2023-09-18 23:22:32 +02:00
Stypox 6b3a178f2a
Show snackbar with feed loading errors 2023-09-18 23:22:32 +02:00
Stypox c48e702a50
Improve placeholder channel banner handling
Now the placeholder gets hidden if there is no banner url or the user disabled images, to save space
2023-09-18 23:22:32 +02:00
Stypox 1061bce4f3
Add avatar and bannner URLs to channel About tab 2023-09-18 23:22:32 +02:00
Stypox 013d513450
Add space above channel description (About tab) 2023-09-18 23:22:32 +02:00
ThetaDev 28d952a643
feat: filter fetched channel tabs 2023-09-18 23:22:32 +02:00
ThetaDev 753a92055c
feat: add playlist controls to channel tab 2023-09-18 23:22:32 +02:00
Stypox 371f986773
Fix some code smells 2023-09-18 23:22:32 +02:00
Stypox a1e8b9be4e
Fix channel tabs in main page setting title themselves 2023-09-18 23:22:32 +02:00
Stypox c076a0f771
Channels are now an Info
The previous "main" tab is now just a normal tab returned in getTabs().
Various part of the code that used to handle channels as ListInfo now either take the first (playable, i.e. with streams) tab (e.g. the ChannelTabPlayQueue), or take all of them combined (e.g. the feed).
2023-09-18 23:22:32 +02:00
ThetaDev b5893f3fa3
fix: notification menu option disappears when switching tabs 2023-09-18 23:22:32 +02:00
Stypox e3614cb932
Move channel header to collapsible app bar 2023-09-18 23:22:32 +02:00
ThetaDev 193c3e5b3d
fix: NPE in ChannelFragment::onSaveInstanceState 2023-09-18 23:22:32 +02:00
ThetaDev c03c344f49
refactor: rename ChannelInfo to ChannelAbout
fix: localize about tab name
2023-09-18 23:22:32 +02:00
ThetaDev 25e3031830
cleanup: remove empty constructor from ChannelFragment 2023-09-18 23:22:31 +02:00
ThetaDev 39b4ed082c
refactor: common code from ChannelInfo/Description -> BaseInfoFragment 2023-09-18 23:22:31 +02:00
ThetaDev be548dcb52
fix: channel tab title not being set 2023-09-18 23:22:31 +02:00
ThetaDev 4357a34339
fix: ChannelFragment: save last tab 2023-09-18 23:22:31 +02:00
ThetaDev 2c03ba204e
refactor: adjustments to updated tab extractor API 2023-09-18 23:22:31 +02:00
ThetaDev 2c98d079de
fix: cache channel data 2023-09-18 23:22:31 +02:00
ThetaDev 16cd47fa2e
fix: missing album tab key 2023-09-18 23:22:31 +02:00
ThetaDev 74a8bfba93
feat: add album tab 2023-09-18 23:22:31 +02:00
ThetaDev c929f00456
fix: remember selected channel tab on screen rotation 2023-09-18 23:22:31 +02:00
ThetaDev bb062f07f9
feat: add option to hide channel tabs 2023-09-18 23:22:31 +02:00
ThetaDev 4859ab67d4
feat: prettier channel info page 2023-09-18 23:22:31 +02:00
ThetaDev 6d84d19520
fix: handle unsupported content 2023-09-18 23:22:31 +02:00
ThetaDev 8627efd0a1
fix: get notified menu option on all tabs 2023-09-18 23:22:31 +02:00
ThetaDev 6d13cf5e71
feat: add channel tabs 2023-09-18 23:22:31 +02:00
Rishab Aggarwal 7e2ab0d384
Improved downloading experience (#10407)
* added LoadingDialog for improving download experience

* [LoadingDialog] Apply some review comments and make title customizable.

* removed permission handling from loading Dialog

* fix checks

* remove <p> Tag from first sentence

---------

Co-authored-by: rishabaggarwal <Rishabaggarwal@sharechat.com>
Co-authored-by: TobiGr <tobigr@users.noreply.github.com>
2023-09-18 05:24:03 +05:30
TobiGr 19640d5e7c Add documentation to increase maintainablilty
Rename a variable
2023-09-18 01:45:53 +02:00
Edward d1a82a85cd Include a high-resolution option in the default resolution settings. 2023-09-18 01:15:22 +02:00
TobiGr f2c2f1735e Replace RuntimeException with IOException
The RuntimeException was not explicitly declared and thus not caught at every call of this constructor. This change ensures that this possible exception is handled by the dedicated error handlers.
2023-09-17 15:31:19 +02:00
TobiGr 4e41e12bd2 Small code and doc improvements
Remove unnecessary else-branch and use Collections.isEmpty().
Add doc comment for splitFilename()
2023-09-17 15:31:19 +02:00
Isira Seneviratne 6df808f266 Use Path in the download helper classes. 2023-09-17 14:50:26 +02:00
AudricV 2d16a06bc4
Show play queue button in main player when there is one stream 2023-08-30 19:45:53 +02:00
TobiGr 68957d3880 Fix grammar in JDoc 2023-08-22 16:23:22 +02:00
TobiGr 62f0abee47 Simplify MainActivity.tabSelected(MenuItem)
Rename variables and skip iterations if kiosk was found.
2023-08-19 21:58:44 +02:00
TobiGr db5ed48dbb Fix some sonar warnings and make some smaller improvements 2023-08-14 23:09:50 +02:00
TobiGr ba84e7eead Display "Unknown quality" if quality is unknown and not MediaFormat name 2023-08-14 23:06:32 +02:00
TobiGr e51067177e Add tests for new methods retrieving MediaFormats
Fix failing tests
2023-08-14 23:06:32 +02:00
TobiGr f3859ed710 Retrieve MediaFormat for streams that could not be extracted by the extractor 2023-08-14 23:06:32 +02:00
TobiGr 0db12e5561 Rename StreamSizeWrapper to StreamInfoWrapper 2023-08-14 22:48:39 +02:00
Stypox bef79e77aa
Update app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java 2023-08-06 10:07:13 +02:00
TobiGr 32f74273f0 Adjust empty state message for ListInfoFragments depending on Info stream type
Show "no streams" for SoundClound.
Show "no live streams" for MeidaCCCLiveStreamKiosk.
Otherwise show "no videos"
2023-08-05 03:50:28 +02:00
TobiGr c69bcaafbb Fixed some Sonar warnings 2023-08-03 12:02:08 +02:00
J-Stutzmann c06d61a83c Made audio-focus calls respect mute state. 2023-08-02 23:44:23 -04:00
TobiGr bc4f0c699f Ignore false positive inspection 2023-08-02 20:44:30 +02:00
TobiGr d6a1170ddb Replace settings migration with automatic check for device blacklist version 2023-07-31 23:00:54 +02:00
TobiGr 40d102fcb5 Disable media tunneling by default on new devices
Sony BRAVIA_VH1, BRAVIA_VH2, BRAVIA_ATV2, BRAVIA_ATV3_4K
Phillips 4K (O)LED TV (PH7M_EU_5596)
Panasonic 4KTV-JUP (TX_50JXW834)
Bouygtel4K (HMB9213NW)
2023-07-29 22:08:51 +02:00
TobiGr 1db73370a7 Ensure that imports handle disabling media tunneling correctly
Store in preferences whether media tunneling was disabled automatically.
Show info in ExoPlayer settings if media tunneling was disabled autmatically.
2023-07-29 22:08:51 +02:00
TobiGr 8b63b437d8 Disable media tunneling if the device is known for not supporting it
Revert removing the Utils related to media tunneling.
2023-07-29 14:13:03 +02:00
TobiGr 78e577d260 Make some constants private and annotate params 2023-07-29 14:13:03 +02:00
Tobi 3edd4c012d
Merge pull request #10195 from AudricV/player_refactor-renderers-activation-or-deactivation
Refactor Player.useVideoSource logic and improve its comments
2023-07-22 14:12:35 +02:00
Isira Seneviratne c658f28b02
Merge pull request #10078 from Isira-Seneviratne/Improve_feed_notifications
Improve new stream notifications
2023-07-20 06:39:19 +05:30
AudricV 5ab3a4a9e0
Refactor Player.useVideoSource logic and improve its comments
- don't check for isAudioOnly == !videoEnabled, as this prevents enabling again
video and text tracks renderers in some cases;
- when reloading play queue manager if that's needed, disable or enable video
and text tracks renderers, as they may need to be enabled again in some cases
like starting a video in main player, opening play queue, switching to
background player on it and switching back to main player;
- disable or enable video renderers also for streams with AUDIO_STREAM
StreamType, as doing so doesn't raise any issue and simplifies code;
- reword and move some comments to make them easier to understand.
2023-07-19 22:52:18 +02:00
Isira Seneviratne cb00c57009 Set channel icon for stream notifications 2023-07-19 05:52:59 +05:30
Tobi cd2884d412
Merge pull request #10235 from TacoTheDank/bumpRoom
Update AndroidX Room library
2023-07-18 22:35:30 +02:00
Tobi 471137093a
Merge pull request #9719 from Marius1501/tabs_on_bottom
Added bottom main-tabs feature
2023-07-18 22:03:47 +02:00
TacoTheDank a01e59e9db Update AndroidX Room library 2023-07-17 21:09:44 -04:00
Tobi 43ef852117
Merge pull request #10230 from TeamNewPipe/fix/offline-stream-chooser
[Download] Fix audio stream selection
2023-07-17 23:47:21 +02:00
TobiGr eeec6fd002 Replace null check with use of NotificationManagerCompat.from 2023-07-17 01:28:55 +02:00
Isira Seneviratne 795bc82c7f Show number of new streams in the collapsed summary notification. 2023-07-17 01:28:55 +02:00
Isira Seneviratne 7742c40ac0 Create individual stream notifications for convenience on Android 7.0 and later. 2023-07-17 01:28:55 +02:00
Stypox 5d6158ea76
No need to manually mark fragment as destroyed for LeakCanary
It already does so automatically.
2023-07-14 20:48:05 +02:00
Stypox 00257e969e
Fix PlayerService leakead by Binder instance
Also see https://stackoverflow.com/q/63787707
2023-07-14 18:34:20 +02:00
TobiGr 6b7ffbba4c [Download] Fix audio stream selection
Closes #10180
2023-07-14 17:06:12 +02:00
Koitharu 01b46edf1a
Fix crash after feed update 2023-07-14 11:41:52 +03:00
Stypox f8599d17c2
Merge pull request #10085 from TacoTheDank/bumpLeakCanary
Update LeakCanary library
2023-07-12 19:05:38 +02:00
TacoTheDank c1f0a945c0 Clean up AlertDialogs 2023-07-11 21:54:10 -04:00
TacoTheDank db7de05f2b Update LeakCanary library 2023-07-11 20:32:29 -04:00
Stypox 10c42de2f1
Fix uploader and subchannel avatars swapped 2023-05-03 10:35:28 +02:00
Stypox 2315b082ff
Merge pull request #9937 from Theta-Dev/alang-selector
Add support for multiple audio tracks
2023-05-02 10:07:21 +02:00
AudricV 023f6166ab
Add Open in browser button to audio external players dialog
This change makes the dialog consistent with the video one.
2023-05-02 00:18:46 +02:00
AudricV d89a3c6c4d
Remove "default" from audio track already present message
We don't know if, on muxed video streams we get for all services which support
multiple audio languages, that the audio language returned is the original one
or not, even if it should be the case.

In order to avoid saying potential false information, this word has been
removed from the string resource (ID and value) and the corresponding layout ID
in the download dialog.
2023-05-02 00:11:09 +02:00
ThetaDev fb00ee8cf9
[YouTube] Improve download speed (#9948) 2023-05-01 19:26:42 +02:00
ThetaDev 22671ca16c fix: audio stream cache key, code fmt 2023-05-01 00:04:04 +02:00
ThetaDev 4e837e838d
fix docs in app/src/main/java/org/schabi/newpipe/util/Localization.java
Co-authored-by: Audric V. <74829229+AudricV@users.noreply.github.com>
2023-05-01 00:02:37 +02:00
ThetaDev c377ffbce8 Merge branch 'dev' of github.com:TeamNewPipe/NewPipe into alang-selector 2023-04-21 23:32:33 +02:00
ThetaDev b567d428ad fix: small codestyle fixes 2023-04-21 23:15:37 +02:00
ThetaDev 2edc223e77 Merge branch 'dev' into alang-selector 2023-04-17 23:01:07 +02:00
TobiGr e18a6b09f8 Apply new itag filter only to YouTube streams 2023-04-17 13:10:29 +02:00
TobiGr f8c3ec4be7 Use a whitelist to filter all streams retrieved by the extractor.
NewPipe Extractor now extracts all YouTube Itags and therefore only those which can be handled by the player need to be retrieved from the list of all available streams.
2023-04-17 13:00:11 +02:00
Stypox ba3afd1e35
Merge pull request #10021 from Isira-Seneviratne/PendingIntentCompat
Switch to AndroidX's PendingIntentCompat.
2023-04-14 14:20:47 +02:00
Isira Seneviratne acebabd028 Use AndroidX's PendingIntentCompat class. 2023-04-13 10:53:46 +05:30
AudricV 787758a436
[Android 6+] Add ability to always use ExoPlayer's MediaVideoCodecRenderer setOutputSurface workaround
As some devices not present in ExoPlayer's list may not implement
MediaCodec.setOutputSurface(Surface) properly, this workaround could be useful
on these devices.

It forces ExoPlayer to fall back on releasing and re-instantiating video codec
instances, which is always used on Android 5 and lower due to addition of this
method in Android 6.

To do so, a CustomMediaCodecVideoRenderer, based on ExoPlayer's
MediaVideoCodecRenderer which always return true for the
codecNeedsSetOutputSurfaceWorkaround method has been added, which is used in
CustomRenderersFactory, a class based on DefaultRenderersFactory which always
returns our CustomMediaCodecVideoRenderer as the video renderers.

CustomRenderersFactory replaces DefaultRenderersFactory in the player, in the
case this setting is enabled.
2023-04-10 17:39:27 +02:00
AudricV a6ff85a208
Move media tunneling setting to ExoPlayer settings and make this setting available on release builds
Media tunneling may be not supported by more devices than the ones we
whitelisted before.

As a matter of fact, the list of devices on which media tunneling is disabled
could be not maintainable in the future, especially if the list of devices
grows more and more.

A preferable solution is to allow users to configure this setting themselves,
allowing them to not wait for their device(s) to be whitelisted in a future
NewPipe update.

This solution has been applied in this commit and works on every build type.

The corresponding preference in the debug settings has been of course removed
and the code used to prevent media tunneling activation on specific devices has
been removed.
2023-04-10 17:37:30 +02:00
AudricV 41da8fc05f
Add ability to use ExoPlayer's decoder fallback option
This option could help to avoid decoder initialization issues, which falls back
to lower-priority decoders if decoder initialization fails. This may result in
poor playback performance than when using primary decoders.

It is disabled by default, but can be enabled in ExoPlayer settings.
2023-04-10 17:37:30 +02:00
AudricV a4a9957a15
Add ExoPlayerSettingsFragment and move playback load interval size setting into it
This fragment has been added into SettingsResourceRegistry, to allow searches
in its options.

It has been placed at the place of the previous playback load interval size
setting (so in Video and Audio settings).
2023-04-10 17:37:30 +02:00