Android documentation:
> If your app is on a device that runs API level 19 or higher,
> you don't need to declare this permission to read and write files
> in your application-specific directories.
AntennaPod supports API 21+, so the permission is completely irrelevant.
Removing it to "clean up" our permissions list on F-Droid.
When podcasts use dynamic ad insertion and the media file changes
between different network requests, users might experience jumps.
Now, try to basically download the whole episode as soon as one
hits the play button. That should avoid most of the jumps.
Basically reverts 186de76d95
The OkHttp backend sometimes causes issues when servers cut the connection.
We had this happen after 1000s (about 17 minutes) for many users after upgrading OkHttp.
Removes proxy support for streaming.
Previously the MediaSession object created in PlaybackService in onCreate would
be completely empty. This seemed to confuse Android Auto, and prevented it from
restarting playback.
Filling the MediaSession object using the data from the player state at
onCreate resolves this problem.
This is documented in Android Auto docs[1], albeit indirectly and somewhat
confusingly.
Also move the setSessionToken call to the end of onCreate handler to ensure
that the media session has already been completely filled by the time the
session token is made available to the framework. There is no evidence that
this is required; however intuitively, this is likely the trigger for the
framework to start querying the media session.
The change was tested both with Desktop Head Unit and with a real vehicle.
[1] https://developer.android.com/training/cars/media/#initial-playback-state
When playback is started while an Android Auto projection is active, we want to
prevent automatic sleep timer from starting.
Note: the androidx.car.app library has not seen a full release since 1.2.0. We opted to use a release candidate here, which has a downgraded minSdk requirement, compatible with the current minSdk of AntennaPod at the time this dependency is introduced.
When the position saver ticks while the service is just about to be
stopped, it might happen that we first reset the position and then
set it to the end again. This works around this.
- Run Checkstyle with gradle to make it easier for users
- No longer needs different configuration for new code
- Exclude current violations
- Fix some violations that somehow couldn't be specified in the exclusion file
- Print SpotBugs/Lint/Checkstly violations in GitHub format
- Then the CI run gets annotated on the web UI