This week, we got the 1.5.0
stable release of Media3:
androidx.media3:media3-cast:1.5.0
androidx.media3:media3-common:1.5.0
androidx.media3:media3-common-ktx:1.5.0
androidx.media3:media3-container:1.5.0
androidx.media3:media3-database:1.5.0
androidx.media3:media3-datasource:1.5.0
androidx.media3:media3-datasource-cronet:1.5.0
androidx.media3:media3-datasource-okhttp:1.5.0
androidx.media3:media3-datasource-rtmp:1.5.0
androidx.media3:media3-decoder:1.5.0
androidx.media3:media3-effect:1.5.0
androidx.media3:media3-exoplayer:1.5.0
androidx.media3:media3-exoplayer-dash:1.5.0
androidx.media3:media3-exoplayer-hls:1.5.0
androidx.media3:media3-exoplayer-ima:1.5.0
androidx.media3:media3-exoplayer-midi:1.5.0
androidx.media3:media3-exoplayer-rtsp:1.5.0
androidx.media3:media3-exoplayer-smoothstreaming:1.5.0
androidx.media3:media3-exoplayer-workmanager:1.5.0
androidx.media3:media3-extractor:1.5.0
androidx.media3:media3-muxer:1.5.0
androidx.media3:media3-session:1.5.0
androidx.media3:media3-test-utils:1.5.0
androidx.media3:media3-test-utils-robolectric:1.5.0
androidx.media3:media3-transformer:1.5.0
androidx.media3:media3-ui:1.5.0
androidx.media3:media3-ui-leanback:1.5.0
—Nov 27, 2024
This week is for Media3 and a bit of Test:
androidx.media3:media3-cast:1.5.0-rc01
androidx.media3:media3-cast:1.5.0-rc02
androidx.media3:media3-common:1.5.0-rc01
androidx.media3:media3-common:1.5.0-rc02
androidx.media3:media3-common-ktx:1.5.0-rc01
androidx.media3:media3-common-ktx:1.5.0-rc02
androidx.media3:media3-container:1.5.0-rc01
androidx.media3:media3-container:1.5.0-rc02
androidx.media3:media3-database:1.5.0-rc01
androidx.media3:media3-database:1.5.0-rc02
androidx.media3:media3-datasource:1.5.0-rc01
androidx.media3:media3-datasource:1.5.0-rc02
androidx.media3:media3-datasource-cronet:1.5.0-rc01
androidx.media3:media3-datasource-cronet:1.5.0-rc02
androidx.media3:media3-datasource-okhttp:1.5.0-rc01
androidx.media3:media3-datasource-okhttp:1.5.0-rc02
androidx.media3:media3-datasource-rtmp:1.5.0-rc01
androidx.media3:media3-datasource-rtmp:1.5.0-rc02
androidx.media3:media3-decoder:1.5.0-rc01
androidx.media3:media3-decoder:1.5.0-rc02
androidx.media3:media3-effect:1.5.0-rc01
androidx.media3:media3-effect:1.5.0-rc02
androidx.media3:media3-exoplayer:1.5.0-rc01
androidx.media3:media3-exoplayer:1.5.0-rc02
androidx.media3:media3-exoplayer-dash:1.5.0-rc01
androidx.media3:media3-exoplayer-dash:1.5.0-rc02
androidx.media3:media3-exoplayer-hls:1.5.0-rc01
androidx.media3:media3-exoplayer-hls:1.5.0-rc02
androidx.media3:media3-exoplayer-ima:1.5.0-rc01
androidx.media3:media3-exoplayer-ima:1.5.0-rc02
androidx.media3:media3-exoplayer-midi:1.5.0-rc01
androidx.media3:media3-exoplayer-midi:1.5.0-rc02
androidx.media3:media3-exoplayer-rtsp:1.5.0-rc01
androidx.media3:media3-exoplayer-rtsp:1.5.0-rc02
androidx.media3:media3-exoplayer-smoothstreaming:1.5.0-rc01
androidx.media3:media3-exoplayer-smoothstreaming:1.5.0-rc02
androidx.media3:media3-exoplayer-workmanager:1.5.0-rc01
androidx.media3:media3-exoplayer-workmanager:1.5.0-rc02
androidx.media3:media3-extractor:1.5.0-rc01
androidx.media3:media3-extractor:1.5.0-rc02
androidx.media3:media3-muxer:1.5.0-rc01
androidx.media3:media3-muxer:1.5.0-rc02
androidx.media3:media3-session:1.5.0-rc01
androidx.media3:media3-session:1.5.0-rc02
androidx.media3:media3-test-utils:1.5.0-rc01
androidx.media3:media3-test-utils:1.5.0-rc02
androidx.media3:media3-test-utils-robolectric:1.5.0-rc01
androidx.media3:media3-test-utils-robolectric:1.5.0-rc02
androidx.media3:media3-transformer:1.5.0-rc01
androidx.media3:media3-transformer:1.5.0-rc02
androidx.media3:media3-ui:1.5.0-rc01
androidx.media3:media3-ui:1.5.0-rc02
androidx.media3:media3-ui-leanback:1.5.0-rc01
androidx.media3:media3-ui-leanback:1.5.0-rc02
androidx.test:orchestrator:1.6.0-alpha01
androidx.test.services:storage:1.6.0-alpha01
androidx.test.services:test-services:1.6.0-alpha01
—Nov 20, 2024
The good news is: the API differences report that was broken when
I wrote about Android 16 DP1 yesterday
has been repaired! As a result, we get access to insights like this from
the docs for AppFunctionService
:
Abstract base class to provide app functions to the system
…and this in the docs for AppFunctionManager
:
Provides app functions related functionalities.
App function is a specific piece of functionality that an app offers to the system. These functionalities can be integrated into various system features.
🙄
While the rest of the documentation on “app functions” is sparse, some of my guesses were accurate.
App functions are tied into app search, as the object representing
a specific function request
points to a GenericDocument
from the app search area. And, developers should be able to create
subclasses of AppFunctionService
to handle app function requests. This is a bound service,
defended by BIND_APP_FUNCTION_SERVICE
so that only a system process can bind to it.
There is mention of an “App Functions SDK”:
In most cases this identifier should come from the ID automatically generated by the AppFunctions SDK
There is also mention of EXECUTE_APP_FUNCTIONS_TRUSTED
and EXECUTE_APP_FUNCTIONS
that are not
in the Android SDK yet. With luck, these point to future areas with more information about what
this is all about.
—Nov 20, 2024
Wow, it’s February again already?
*checks calendar*
No, Google is just changing the timeframe for major Android releases.
As is outlined in the Android 16 DP1 blog post,
Google is moving to having a major and a minor release each calendar year. The major release
has been moved earlier in the year to better align with device manufacturer timetables.
The minor release, planned for late 2025, “will include new developer APIs” but should not
“include planned behavior changes that could affect apps”.
So, What’s In the API Differences Report?
Fans of these “random musings” posts know that I pore through the API differences report to help
provide detail beyond what the release notes state and to identify other changes that Google
is not talking about yet.
That is not working out so well this time around.
Simply put, the API differences report
is largely broken. Links lead to 404s or call out API additions that do not show up in the actual
documentation. It could be that they changed the scope of DP1 and failed to regenerate the API
differences report. Or, it could be that the API differences report is correct and they failed
to publish the documentation updates. My guess is that it is the former, given the mix of what
is working and what is not.
I may publish a follow-on post with more if the API differences report starts behaving more normally.
OK, What Can You Tell Us?
The biggest area of change surrounds the photo picker. As is noted in the release notes:
The developer preview includes new APIs that enable apps to embed the photo picker into their view hierarchy. This allows it to feel like a more integrated part of the app while still leveraging the process isolation that allows users to select media without the app needing overly broad permissions.
What is interesting to me is that they are using SurfaceControlViewHost
for this.
The actual UI will be rendered by a separate process, but you can control where that UI gets
rendered on your screen, wrap it in your own UI, etc. Google debuted this system
four years ago,
and I have been waiting for it to get put to use — it might be applied elsewhere, but this
is the first that I recall seeing.
The other big area of possible change is something called “app functions”. This is a bit of a
“negative space” analysis, as this is the biggest area that is missing from the API differences
report. For example, there is a new android.app.appfunctions
package…
and there is no documentation for it,
despite a link to that page from the API differences report. But, what I can infer is:
Given those two, I’ll guess that the app search functionality will gain some sort of “quick actions”
UI, where developers can publish operations (“app functions”) that can be performed on search results for their
app. What would be even more interesting is if developers could offer actions on any search results.
UPDATE 2024-11-20: The docs are better now!
Is There Much Else of Note?
The release notes and
blog post
mention changes to Health Connect and Privacy Sandbox. If you use either of those, you may want
to investigate further.
Beyond that:
Little else seems like it has changed in areas that might be commonly used. Ad Services might
qualify, but I have never used it, so I cannot really cover it here.
That’s It?
Even if we assume that the broken documentation points to changes, this is a surprisingly small
major release. Since there is only one more developer preview, and API changes should start fading
out after a Beta 1 release, Android 16 might be a bit sparse in terms of developer-facing changes.
Since they had ~3 months chopped off the development schedule, this seems reasonable. It may be that
DP2 will turn out to be much larger.
For user-facing changes, as always, pay attention to Mishaal Rahman,
who does excellent work covering those!
—Nov 19, 2024