Surface Duo Blog

Test Kit Annotations update

Hello Android developers! We are excited to announce an update for the foldable Test Kit library. Test Kit provides utility methods and classes that help you write instrumented tests for large screen and foldable devices. This update adds annotations which are useful for creating tests for one posture at a time. Now, instead of ...

Making a gamepad for my Flutter game

Did you know that building games in Flutter is just as easy as building apps? There is even a game engine built on top of it called Flame. Today we are first going to explore building a simple game with Flame and then enhance the game for dual-screen and foldable devices. This space themed game will use an on-screen gamepad controller as ...

Drag and drop library for Jetpack Compose

Hello Compose developers! This week, we are excited to announce the release of DragAndDrop, a new utility library that will help you easily add interactive drag and drop capabilities to your app in Compose, following Google’s Drag and drop guidelines. It is the newest addition to Microsoft’s Compose SDK. On dual-screen ...

droidcon San Francisco recap

Hello Android developers, Earlier this year the Surface Duo team attended our first in-person conference for the year at droidcon in San Francisco! It was great to meet Android developers from all over the world, demonstrate the features of Surface Duo, and chat about building apps for foldable and large screen devices. We’...

Notifications on the Glance Bar

Hello Android developers! This week we are talking about the Surface Duo 2 Glance Bar feature. If you are wondering what the Glance Bar feature is and how anyone can benefit from it, let’s dive into it together to learn more. What is the Glance Bar Feature? The Glance Bar feature displays notifications of BUCKET_PEOPLE ...

Responsive layouts in Flutter with TwoPane

Welcome to another Flutter update. This time we will dive into TwoPane, tell you how to get it from pub.dev and focus on the types of layouts you can build with it. Before we get to examples, we will first see what parameters it exposes. This widget has cousins in other frameworks, making its context interesting to explore. Let us first ...