[MUSIC PLAYING] CHET HAASE: Hey [CLAPPING] DAN SANDLER: Hey everybody Welcome back to What’s New in Android I’m Dan Sandler from the System UI team CHET HAASE: I’m Chet Haase from the Android Toolkit team ROMAIN GUY: And I’m Romain Guy from– I still don’t have a name for my team So from the Android team [LAUGHTER] And you may remember us from other talks, such as What’s New in Android 2017, What’s New in Android 2016, What’s New in Android 2015, What’s New in Android 2014 Not What’s New in Android 2013 CHET HAASE: We don’t talk about that one ROMAIN GUY: We don’t talk about that one DAN SANDLER: You know, that was the time that we had Jelly Bean two years in a row It was brilliant We didn’t have to redo the logo or anything [LAUGHTER] ROMAIN GUY: But now– CHET HAASE: What’s New in Android, what I like to call the Android keynote Nobody else does But I like to call it that Because this is where we talk to you about all of the developer stuff going on in the Android platform In particular, let’s talk about Android P. Specifically, let’s talk today about– oh, hang on Android APIs [LAUGHTER] ROMAIN GUY: All right, first we’ll start with distribution You saw in the keynote we introduced the dynamic ad bundles [? Tor’s ?] demo was pretty clear It’s pretty easy for you All you have to do is click your different menu when you build your application And we’re going to save you some space It’s going to be faster and easier for your users to download your app And I’m sure you have a lot of questions about it So we have a couple of talks this afternoon, at 5:00 PM and 6:00 PM Go there if you want answers, because we don’t have them CHET HAASE: So you’re going to see a slide a whole lot like this through the rest of the talk I feel like the main function we serve in this talk is to tell you the other talks to go to We’re like the appendix We’re like the index for the rest of the content DAN SANDLER: I mean, we’re like obsolete, like vestigial Is that what it is? CHET HAASE: I don’t like to think about that ROMAIN GUY: Yeah Let’s be clear A lot of people back at work have done all the hard work We just get to go on stage and talk about their hard work CHET HAASE: So speaking of that, let’s talk about Android Jetpack We heard Steph talk about this in the developer keynote This is a set of components, as well as guidance on how to build better Android applications All of you are familiar with most of what is in Android Jetpack already What we’re doing is adding to it over time with stuff that’s going to make it even better And we’re also improving it over time One of the major steps that we’re taking is what I like to think of as a refactor, because it’s a refactor My favorite thing about the support library is how the package names embed the release number in them So, for example, we support things like v4 Actually we don’t support v4 anymore We have a min SDK of at least 14 now But it’s in the package name Isn’t that a little bit silly? So we’re doing away with that We’re doing a whole lot of tedious renaming And we’re also providing tools to make it easier for you to do the similar refactoring that you’re going to need to do in your application, as well as in Android Studio Everything is being renamed to something more appropriate called Androidx If you want to know more about the details of that, the renaming, as well as doing more modular, more fine-grained splits to make sure that you don’t drag in too much stuff, go to the talk Learn what’s new in Android Support Library Also, there was an article that was posted on the Android Developers blog about a half hour ago Check that out for more of the details there Let’s talk about Android Test, which is part of this new Jetpack thing going on Android Test is the ATSL stuff, the Espresso stuff that hopefully you were already using really good ways to test your application Now, they provide first class Kotlin support, as well as more elegant APIs for reducing a lot of the boilerplate Here’s a simple example We used to have a way of asserting, which, A, was not necessarily obvious in the parameters you were passing Also, unobvious in the order of the parameters that you were passing And then it would give you an error message that also didn’t really help very much So we have something a little more sensible now You can assert that it’s actually working on the visible property And the error message gives you something more that you can work with a little bit better Go to the Frictionless Android Testing talk for more information about that stuff Jetpack architecture is about the architecture components that were announced last year at I/O and then iterated with feedback from the community, and finally went 1.0 in the fall So we have the release parts of those, which includes all the Lifecycle stuff, and the ViewModel stuff, as well as the Room, the persistent data model stuff, and LiveData So hopefully you are using that stuff already, at least in your new applications And what we also have is recently we released the paging library for doing asynchronous data paging into RecyclerView That was alpha, then beta, because that’s how those things work And now it’s 1.0 this week So please start using that And we also talked in the developer keynote about a couple of new things that you should check out soon WorkManager is currently in preview There’s going to be a talk about it

It’s about job scheduling, but job scheduling in a way where we handle all the cases back in previous releases, instead of you having to use specific approaches, depending on what version and device that you’re on Also, navigation It turns out that up versus back is a hard problem for applications to solve We are making that much easier And we’re integrating with the tool to make it even easier yet So go to all these talks There’s an overview talk, as well as specific talks on Navigation Controller and WorkManager, and also a talk on RecyclerView and Paging Me? Again? ROMAIN GUY: It says your name on the slide CHET HAASE: I keep building suspense into this thing What’s going to happen next? Who’s he going to hand the clicker to? It’s still mine DAN SANDLER: It’s still you CHET HAASE: OK Let’s talk about battery This is one of the ongoing efforts in Android to help the users, because it turns out battery is really important We’re all power users Unfortunately, we just keep using the power So what can we do about it? We can create these app standby buckets We’re going to monitor the usage of applications, and see how actively the user is using it, and then make determinations about how much access that application has to ongoing things in the system which are going to take up more battery We also had background restrictions that the user has the ability to kick in in settings So if an application is behaving badly, let’s say holding wake locks for long periods of time, or waking up constantly, or accessing services way more than they should when it’s not on a charger, then we’ll note that and expose that in settings And then the user can take some action on that if they deem that necessary Go to the battery session on Thursday morning to learn more of the details there ROMAIN GUY: So one of the things that we’ve been focusing on with Android P is privacy Maybe that’s what it stands for So one of the things we’ve done is that when your app is in the background, it doesn’t have access to the microphone anymore It doesn’t have access to the camera anymore And it doesn’t have access to the sensor kind of So you won’t receive the data from the sensors automatically You can manually pull from the sensors, and you’ll get batch updates, but the best thing to do if you want to get access to the sensor data is to keep a foreground service running instead So no more microphone No more camera for you I think I’ve heard in the past that some apps were trying to stay alive in memory by playing a white noise or keeping the microphone on Don’t do that anymore It’s not OK Kotlin– it’s this little thing we announced last year So we are busy We want to make it better for all the Kotlin developers out there I’m sure there’s a lot of you here today So some of the things we’ve been doing, the R team has been really busy with D8, R8, and ART itself They’ve been looking at the byte code generated by the Kotlin compiler They’ve analyzed some of the byte code patterns that were different from the ones generated by the Java programming language compiler And they’ve been optimizing for those patterns We’ve also been adding a lot of nullability annotations to our Java APIs, both in the core libraries, so libcore, and our support libraries to make it easier for you to use the platform APIs when you’re in Kotlin And finally, we launched on GitHub a new library called Android KTX It’s a set of Kotlin extensions for existing platform APIs And the goal here is to try to take advantage of some of the Kotlin language features to make existing APIs easier to use They’re already easier to use just by using Kotlin, but with the extension they get even better And I want to thank the community, because we’ve received dozens of pull requests, and also bugs and feature requests from you And we’ve accepted a bunch of them So if you have ideas, if you have things that you would like to see in Android KTX, please go to GitHub, and we’ll take a look at your PR And this is an example of the kind of code you can write with KTX If you want to create a bitmap, you don’t have to specify its ARGB anymore You can call applyCanvas, which automatically creates the canvas for you It becomes this And at the bottom you can see, for instance, the destructuring assignment for color integer So you don’t have to do any shifting or masking of the int into bytes We’ll take care of that for you There is a talk by Jack Wharton on Thursday at 10:30 AM He’s going to go through most of the extensions He’s going to talk about the philosophy behind the extensions, how we write them, what are the kind of extensions that we want to see in that library that we’re not looking for in that library So before you do all the work and send a PR, go attend that talk to understand what we’re looking for CHET HAASE: We already talked about the Android Test stuff that is part of Jetpack earlier That’s probably a better, more holistic way to test your application But if there is a specific situation in which you find it necessary or helpful to mock the framework– and I don’t mean ridicule it, because that wouldn’t be nice– then it is possible to do that in easier ways now in Mockito We are not changing the framework, but we’re actually integrating changes into Mockito itself So you can now mock final methods And soon you should be able to mock static methods [CLAPPING] [CHEERING] ROMAIN GUY: And Chet is making that face because he doesn’t understand why that is so interesting to you [LAUGHTER] CHET HAASE: And system created objects like activity,

eventually Working on that internally, but it should be on the way eventually A background text measurement This is part of a bunch of smaller changes that we made in the text area It turns out that measurement is really expensive So most applications do text And I would bet that the text operations in your application are some of the most expensive going on in the UI thread, which can contribute to jank Wouldn’t it be nicer if you could offload that to a background thread so that by the time you actually need to render the text, or perform those operations on the UI thread, most of the hard work was done for you? So the observation is that 80% to 90% of the operations that are necessary for actually displaying text happen in text measurement Well, we’ve made it possible and much easier to actually perform this as a background operation So we have a class called pre-computed text And you can query that And you can say, I want you to pre-measure this And then you can set that text that’s spannable on the text view later whenever you want So you do it in background threads, like this You say create this thing And then you can set that on the text view later when you actually need it Should be much faster Magnifier is something that if you’re using the preview releases you might see, if you select some text, it pops up this little bar up above it It makes it easier to manipulate the cursor That’s really great for text, but the other cool thing about it is that it’s also available for your applications for any other use case So there’s an API that allows you to pop up this magnifier for whatever happens to be in your view So you can show this, and dismiss it, and use it for your stuff as well So core functionality that we want in the system user interface But also useful APIs for developers to use for their own purposes I don’t know if you’ve worked with your design department, and they’ve specified something about text in your UI, and, OK, well, I want this aligned this many dips away from the top And I want the baseline on the bottom this many dips away from the bottom And then you have this interspersed vertical alignment stuff going on And then you sort of puzzle with this for a while And you basically futz with padding in all kinds of different configurations to sort of get it to where they wanted to get it We have worked with that and created some new attributes, and methods, and properties for you to use that make that much easier So we allow you to just pass us the information about the baseline alignment calculations that you would like to perform And then we’ll futz with padding on your behalf Smart Linkify I think of this as being Linkify, but smarter So we already have the ability to ask for links in a block of text, and it’ll detect things like phone numbers and addresses But we also have the ability, through machine learning models, and stuff that you’ve seen through smart text selection, to detect other entities We can do the same thing with Linkify It takes a little bit potentially longer So you do this off thread So you would basically generate the links off thread, and then set it on your text view later, using code similar to this There’s a text talk on Wednesday evening So please go to that for more details about all of this, as well as more ROMAIN GUY: So location Now you can take advantage of a new package, android.net.wifi.rtt It’s the WiFi round trip time API It requires compatible hardware on your phone It also requires a compatible access point And it allows you to find a precise location indoors for the user’s device You need to request the Find Location permission And you don’t need to connect to the access point So if you’re building an application that requires locating the user inside a big building, you can take advantage of this API in Android P CHET HAASE: Accessibility has some improvements for navigation through the app So it’s easier for you to declare these functional blocks It makes it easier for accessible users to understand how things are being grouped on the screen There’s an important talk on accessibility right now? No, that’s tomorrow OK Hopefully it’s tomorrow I’m not sure that’s correct ROMAIN GUY: It’s tomorrow or 40 minutes ago CHET HAASE: OK All right DAN SANDLER: It’s on YouTube CHET HAASE: Yes, it is Eventually Like now Yeah I think I got the day wrong Sorry about that It’s now If you’re in the wrong talk, I invite you to go to the other one [LAUGHTER] ROMAIN GUY: Oh, my turn Security New API in Android P, the Unified BiometricDialog So we deprecated the FingerprintManager because there are more ways to authenticate yourself with your body than just with a fingerprint Could be your eyes Could be whatever else that device manufacturers will think of next So now we have a single UI for all devices and all means of authentication We also have stronger protections for private keys And very important in your application, if you’re using the API, Build.SERIAL, it doesn’t work anymore The API is still there But it basically returns bogus data So you cannot rely on it at all anymore CHET HAASE: Various changes in Enterprise Just a couple of them that are interesting We made it easier to work with work profile apps or different profile apps by having these different tabs that you can associate with them so they’re not all mixed together, but you can actually have these whole sections

of these different profiles Also, you’re allowed to lock packages to a specific task You could have a launcher with just a minimum set of a group or a single application That works in combination with the ability to have ephemeral users, which now gives you kiosk mode So you will no longer have experiences like I had on a recent flight, as you can see from my blurry picture, where you see a movie and you wonder what operating system is running under that So you swipe from the bottom of the screen You see the ICS navigation bar And then you press on the recent tasks, and you swipe the movie away, and you confuse the heck out of the system ROMAIN GUY: I have to admit, that’s what I try every time I’m on a plane these days And it works a surprising number of times DAN SANDLER: Homework for all of you CHET HAASE: This is like fun for Android engineers This is what we do ROMAIN GUY: Hopefully this is not linked to the plane navigation DAN SANDLER: Now? Is it OK? Can I talk now? Is that all right? CHET HAASE: Very briefly DAN SANDLER: Very briefly All right Let’s talk about actually a lot of the system UI stuff typically gets shown at one of the keynotes that precedes What’s New in Android So you’ve all seen a lot of the great stuff that users are getting I’m going to talk to you about some of the stuff that as developers you might be interested in The first one is display cutouts, a.k.a.– well, there are other names for it These are coming to the ecosystem all over the place And so as a developer, you need to know where it’s safe to draw and where it isn’t When you get your window insets on viewWindowInset, something or other, you get DisplayCutout object, which gives you all kinds of interesting data about the cutout But you’re probably going to want to use something called windowLayoutInDisplayCutoutMode on your window So there’s the basic way, which is, I never want to overlap the cutout Just leave a black bar at the top or the bottom Whatever I’m not all that interested A little more advanced would be display cutout mode default, which is, if you were already going to clear the status bar just fine, we’ll let the app window draw underneath the cutout as well So you’ll get the nice action bar color extending through the status bar and extending underneath the cutout Better still, or more advanced still is shortEdges cutout mode, which means essentially any time there’s a cutout on the short edges of the device, and we’re in portrait, I will just draw underneath You don’t have to do anything special And in that situation you do need to look at the display cutout and ask it for the safe insets Essentially, well, OK, I’m drawing everywhere But you tell me what single rectangle of the screen is safest to draw in And then finally, the cosmic version of this You can do shortEdges, but you can actually get the bounds of the cutout as a region So you will get the exact set of rectangles that are unavailable to you on the screen so you can display UI in the corners if the corners are available Or if there’s a corner cutout, you can move things out of the way so that it’s visible in the center of the display This is the most advanced version of it And you can put the electrical tape away, because you can actually simulate notches now in developer options on your device This is really, really exciting Slices actually was what we were calling it internally And we liked it so much we just kept it You’ve seen Slices now in a couple of keynotes It’s essentially something that we’ve discovered and learned about on system UI and in the toolkit over many years of dealing with remote views for app widgets dealing with notifications Essentially the problem of getting content from your app into some other place So Slices is our new approach to remote content that you can actually use to project UI into your own app, or into other apps that support it It’s very structured This is not sort of, here’s a canvas, or an absolute layout Go nuts with it We give you a structure to fill out, and a whole bunch of very flexible templates in which to populate that data with some display hints so that the receiving end of the slice, the slice host, kind of knows what to do with it These are interactive These are updateable This is meant to be something that holds rich UI Sliders, controls, live information, possibly videos, things that actually feel like real UI, as opposed to a snapshot of something happening in a distant process somewhere Slices are addressable by content URI And this is how they’re passed around the system, and how they’re passed along to app indexing to be shown in context like search And then finally, Slices is entirely inside the support library It’s entirely in Jetpack So it’s backwards compatible You can use Slices all the way back to API 19 There’s a great talk about Slices tomorrow bright and early, building interactive results for Google Search Come to find out more about how all this technology works and how you can build your own Related to Slices is Actions You can think of these as shortcuts with parameters Romain likes to think of them as visible intent This is essentially a deep link into your app with some additional payload It’s not just a link to music It’s linked to the particular album, or something like that And you saw these as well in the keynotes, showing up in a predictive space inside our app launching experience, actions you define in an actions XML file that goes into your APK or app bundle And that too can get registered with app indexing so that search results and predictive features

can show those actions And there’s a talk about this too, Thursday, slightly less early in the morning Integrating your Android apps with the Google Assistant Notifications There was a lot of great stuff about digital wellness and controlling notifications that you saw in the keynote And I’m very excited about it in P. I’m going to talk about some of the developer stuff, though, that we have in here We asked users what notifications are most important to them Users love messages So we focused our energy in enhancing the messaging style API You can do inline images now You can do participant images, and attach other metadata about the participant And we finally now have UI for smart reply, which we’ve had on Android Wear for years So when you use RemoteInput.setChoices, those will now appear as chips right in the notification so you can respond instantly in the middle of a chat without leaving the notification shade And there’s tons of other stuff as usual I had one other slide that we added about 10 minutes ago to this deck about notifications And I’m just going to let that sit on the screen for a little while [CLAPPING] So if you’re doing something in the background, the user still needs to know But Android P does a much better job of allowing notifications that you may already have running testify to that background activity, including things like overlaying windows So with that, talk about the runtime, Romain ROMAIN GUY: So probably one of the most important things for you as an Android developer is to understand our deprecation policy It was announced a few weeks ago Soon we will require all the applications to target some of the newest API levels And we’re doing that to make sure that we can keep the security level of Android as high as possible, as well as performance, and a lot of other nice things So what does it mean for you? As of August this year, new applications published on the Play Store will have to target API level 26 And as of November this year, any update to an existing application that you publish on the Play Store will have to target API 26 And you can expect those numbers to go up over time If you have native code in your application, we’ve been supporting 32-bit and 64-bit for a few years now We will make 64-bit APIs required as of August of next year You’ll still be able to ship 32-bit support in your application, but we will ask you to ship 64-bit as well One of the reasons to ship 64-bit on 64-bit devices is that you get better performance and much better code out of it If you want to know more about the deprecation policy, there is a talk on Thursday afternoon And I’m sure you’ll have a lot of questions for the folks there App compatibility If you’ve tried the developer preview in P, you might have noticed something different if you’re one of those naughty applications that uses some of our private APIs On Android we have two types of private APIs, the APIs that are actually marked private And then there’s this weird @hide thing that we use in our source code It’s a Java Doc tag that we process especially to indicate that this is a public API for us Not for you Just for us And we’re a bit jealous because a lot of you are using them So from now on, a lot of those APIs will trigger warnings in one form or another It might be toast, or it might be logs when you make an illegal call For some of these APIs we need to hear from you that you need those APIs for your application to keep working Sometimes it’s just an oversight We didn’t make the API public It’s just because we didn’t think about it So please go to this URL, and let us know if there’s an API that you think should be made public We might say yes We might also say no We have three types of lists I won’t go into too much detail here But basically, if an API falls into the blacklist, you will not be able to call it ever I’m not sure if we have anything in the blacklist right now But those will evolve over time So, again, let us know what APIs you need CHET HAASE: This is one of the important reasons This is why we ship previews We need you to go out there and try your applications on the previews, because this is the time to find out when there’s problems that either you can fix before the real release is out there, or you can let us know if it’s a problem that we need to work on instead ROMAIN GUY: And that’s Chet trying to increase his engagement with his podcast So there’s this podcast called ADB, Android Developer Backstage And in episode 89, they had– who did you have in the episode? CHET HAASE: Brian Carlstrom ROMAIN GUY: Brian Carlstrom And they talked about this app compatibility issue, and what it means for you So go listen to it NDK The release 17 of the NDK brings a lot of very interesting things So, first of all, the neural networks APIs that were part of API level 27 We also have a new shared memory API if you do a lot of JNI More importantly, we have finally ASAN, the address sanitizer to make sure your code doesn’t scribble all over the memory Now you don’t need a rooted device anymore to use it And we also have an undefined behavior sanitizer It can be very difficult to detect undefined behaviors in your C or C++ code So now there’s a tool for that We finally removed support for the deprecated APIs So if you still use ARMv5 or MIPS, MIPS 32-bit or 64-bit, support is gone You should not be shipping those anymore In the upcoming release, release 18, we will remove GCC So the GCC compiler was deprecated last year

Now everything is compiled with Clang in the NDK We think we gave enough time So GCC is going away So if you’re still using it, maybe you should not be in this talk You should go fix your code [LAUGHTER] And finally, we added support for the simpleperf CPU profiler And we also have support in Android Studio for native profiling So you don’t even have to type anything in the terminal Graphics and media The camera APIs are getting better and better We’ve added a lot of things that we were using ourselves in the camera applications For instance, we give you access to the timestamps of the optical image stabilization So if you want to build the kind of stabilization we’ve built in the video recording part of the camera application, now you can If your app is doing a lot of selfies and using the display as a flash, you can tell the camera that you’re doing that so you can adapt the exposure accordingly We have support for USB cameras I haven’t seen any use for it, but I’ve heard some of you ask about it So now it’s available Multi-camera support There are some phones coming out out there with multiple cameras in the back, or in the front I suppose And now we can expose them as a logical camera that contains more than one stream of data ImageDecoder I’m sure a lot of you are familiar with BitmapFactory And if you’re not fond of that API, trust me, we’re not either So there’s a new one called ImageDecoder It’s part of Android P. The idea is to make it not only easier to decode images, but also to make it possible to decode animated images So ImageDecoder can decode bitmaps, but also drawables, including animated drawables CHET HAASE: There’s this new thing called animated GIFs I don’t know All the kids are using them It’s possible to actually load those now ROMAIN GUY: So there are a few concepts that you have to learn when you learn ImageDecoder And we’re going to go through them in an example So we have the concept of the source We have the concept of the post processor, and finally, the header listener So this is what the API looks like First, you have to call createSource on the ImageDecoder The source can be an asset It could be a file descriptor It can be many different things And the goal here is that once you create a source, you can decode multiple images from the same source This is particularly useful if you want to build thumbnails You can decode the same source once at high resolution, once at lower resolution, or even intermediate resolutions And that can be done from multiple worker threads Then you can call decodeBitmap You pass the source And you can optionally pass a header listener So the header listener, we have a lambda It gives you back the decoder itself, the metadata about the image and the source And it’s inside the header listener that you can set the options So in BitmapFactory you had bitmapfactory.options that you had to pass through Decode Here you have to wait for the header listener to be invoked CHET HAASE: We should point out too, that set target size, that’s kind of a fundamental difference where the old bitmap– DAN SANDLER: It’s up there for them CHET HAASE: No I know I see that It’s right there it [INTERPOSING VOICES] CHET HAASE: That’s a huge difference Like before, if you wanted the right target size, you needed to work with, what? In density? As well as? ROMAIN GUY: In sample size, in density, and do a lot of trickery CHET HAASE: We didn’t know how they worked either ROMAIN GUY: Yeah [LAUGHTER] CHET HAASE: So a lot easier now ROMAIN GUY: Yeah Usually our answer was, figure it out Anyways, so now you can just tell us what size you want the bitmap to be in And we’ll take care of it, finally And you can also set the post processor So the post processor is something with a simple interface It gives you a canvas so you can draw on the bitmap right after it’s decoded so you can add a header, like your title, or some metadata on it Media We are adding support in the platform for the HDR profile of VP9 so you can play HDR videos in your applications YouTube was doing it, but they had their own way of decoding videos If you own a device that doesn’t support HDR, the playback will be in low dynamic range instead But on a device that’s capable, like a Pixel 2, you will be able to see the HDR stream in all its glory We’re also adding support, and bear with me, cause it’s a little bit confusing, a format called HEIF Yeah It rolls off the tongue The High Efficiency Image Format So it’s based on HEVC, which was also called H.265 And the filename extension is commonly HEIC I don’t know why they used different letters But that’s what they did So we have to deal with it So it is a container And it can store multiple images So you can use it to store a single image with higher quality and higher compression ratios than JPEG, for instance JPEG is a lot easier to say I like JPEG But you can also sew multiple images if you want animated images or short movies This is part of the support library, or, I guess, Jetpack now And this is not part of the compressed API that you find on bitmap Because it’s a container, it works differently So this is what it looks like You have to create a builder You have to tell us the path where you want to output the file You have to give us in advance the width and the height of the image And the source of the image can come from a bitmap But it can also come from a surface So you don’t necessarily have, for instance, if you’re doing GR rendering, or if you’re doing video playback, you can include that directly as an image You don’t have to go through an intermediate bitmap And then when you call writer to choose,

you can add multiple bitmaps In this case, we’re adding only one And when you call stop, we write it out CHET HAASE: I should point out too that even though it’s spelled HEIC, it’s pronounced GIF [LAUGHTER] All right DAN SANDLER: Go ROMAIN GUY: What are you still doing here? Vulkan So this is the slide that I’m excited about Very few of you will be And I’m sure you will be super excited by things like subgroup ops and YCrCb formats More seriously, anybody who’s building middleware, for instance, the Unity engine, the Orion engine, or if you’re building games, Vulkan is a low level graphics API that gives you a lot more control over the GPU so you get higher performance code And Vulkan 1.1 adds new capabilities that were not possible in OpenGL But it also closes the gap with OpenGL So, for instance, the support of protected content We were not able to play back protected content in Vulkan before So that will unlock a lot of things, like video players, for instance Neural networks APIs They are not technically part of P. I mean, they are part of P, but we announced them in API level 27 You might have missed that It’s a C API that’s designed for machine learning It’s also a fairly low level API It’s meant for basically playback of trained models So things like TensorFlow are built on top of your neural network API So you would use TensorFlow to do all the learning And the neural network APIs can do basically the inference on device The interesting thing is that we’re also unlocking the access to the DSP that we use on Pixel 2 so you can get hardware accelerated machine learning effectively on select devices ARCore you just saw in the developer keynote A couple months ago we introduced ARCore 1.0 And they just announced ARCore 1.2 This takes care of tracking things in the real world The problem is that you had to write a lot of OpenGL code And it’s not always pleasant So to makes your life easier, we’re introducing support in the emulator So when you create an AVD, you can specify a virtual camera stream for the back camera, and you get the full 3D scene And it works in any view that displays the camera stream And using the keyboard and the mouse, you can just navigate around the UI You even get patterns on that fake TV screen so you can do image recognition and pattern tracking, that kind of stuff It’s available today Also we have Sceneform So they already talked about it in the dev keynote I won’t talk about it too much I will only say, this is what I’ve been working on for the past few months So I still don’t have a name, because we did that to Daydream But anyway, that’s what I was up to And if you want to know more about Sceneform, there is a talk tomorrow afternoon at 5:30 PM And we’re going to talk about the underlying tech and how to use the API And finally, Chrome OS on Pixelbook, you can now run Linux applications on your Chromebook And in particular, you can run Android Studio I believe there are some limitations But one of the things you can do is run your Android apps as apps on Chrome OS So you can use Chrome OS as a full blown Android development platform, I guess whenever it’s available [CLAPPING] Many, many more sessions today, tomorrow, and Thursday You know, I said earlier, there’s a lot of folks back home who have been doing all the hard work We’re just talking about it So thank you very much to all the engineering teams, and the PMs, and the designers, and tech writers, everyone who made this possible We didn’t do anything We’re just here to hear you be happy CHET HAASE: Some of us did even less ROMAIN GUY: Yes And that’s it for today So thank you very much DAN SANDLER: See you at the Sandbox office hours Bring your questions CHET HAASE: Yes We have Framework office hours There is Android Sandbox running all week DAN SANDLER: We’ve done our best to bring as many people from our teams here to be able to talk to you about these new features, these new APIs as possible, because we know you can’t get that anywhere else besides Google I/O CHET HAASE: And also there’s an overflow area I can’t remember where it is exactly Most of the speakers from Android sessions will make their way afterwards So if you can’t get your question answered at the session, you should be able to find them after that, like us there now Thank you [CLAPPING] [MUSIC PLAYING]