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
If only some chapters have images the other chapters don't display
anything but reserve space for the image.
Now those chapters display the image of the episode. If no chapters have
images no images will be displayed (just like before).
Before 5218e06904, deleting an item
loaded its state from the database again. Now it stores the state
of that object. markItemPlayed() did not reset the object's playback
position, so when auto-delete was enabled, the position was overwritten again.
GitHub switched their MacOS runners to ARM, which makes the Android emulator fail to start. Since we introduced the CI workflow, GitHub upgraded the Ubuntu runners as well, now supporting hardware acceleration. This means we no longer need MacOS. The Ubuntu runner is also about 2 times faster.
GitHub switched their MacOS runners to ARM, which makes the Android emulator fail to start. Since we introduced the CI workflow, GitHub upgraded the Ubuntu runners as well, now supporting hardware acceleration. This means we no longer need MacOS. The Ubuntu runner is also about 2 times faster.
Before when refreshing any feed(s) without network the refresh indicator
stayed indefinitely.
This was also the case if you were on mobile, trying to refresh a need
and in the popup selected "don't update over mobile".
Till 5713b18267 many classes like FeedItem
used to inherit from FeedComponent which provided those two methods.
However since that commit the component no longer exists and now the
classes need to implement it on their own. Without this, ArrayList.remove breaks.
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.