Microsoft's dual-screen Surface devices for Windows (Neo) and Android (Duo) come out later this year, but how will devs write or re-write their apps to support them?
The question leads to others. Should we think of Neo and Duo as similar devices, even though they run different operating systems? Or do they have little in common beyond the Surface branding?
Surface Neo will run most Windows applications and Surface Duo should run most Android applications, if you can live with them running on one of the two screens, and provided that Microsoft can work around issues with screen spanning for apps that are not designed to work that way. In other words, Windows users will expect their stuff to run on Neo, Android users on Duo, and they will not expect the same applications on both.
For Windows, Microsoft is adding specific dual-screen support to its core application frameworks. This includes a TwoPaneView control, an ApplicationView.GetSpanningRects function for Universal Windows Platform (UWP) applications, and a new GetContentRects function for Win32 applications. Both GetSpanningRects and GetContentRects will inform you how your application is being displayed, whether in one or two panes.
The concept of the TwoPaneView is simple. Within this control, you define two panes, one of which is primary. If the application is on one pane, only the primary is displayed. If it spans two panes, the second comes to life as well.
There is also the Wonder Bar to think about. This is a multi-purpose region that appears when you use a dual-screen device like a laptop. On the Neo, a keyboard folds over part of the lower screen but leaves an area of the display still in view. This can be a trackpad, used for typing suggestions, or it can display a minimal version of your app.
When used like a laptop, an area of the Surface Neo lower display becomes a "wonder bar" with a variety of uses
On Android, for which the Surface Duo SDK has already been provided (in preview), Microsoft suggests using the support for foldable devices which Google added to Android 10. There are also APIs specific to Surface Duo which deal with the awkward display mask – an area of the screen that exists virtually but not physically, covering the hinge area. Further, there is an isAppSpanned function to reveal whether your app is displayed across two screens. Before calling a Surface-specific API, you need to check that the app is actually running on a Surface.
Despite the huge differences between Windows and Android, Microsoft is trying to get developers to think of Surface dual-screen devices as a category for which they should build or optimise their applications, and is encouraging cross-platform development to this end.
The Windows 10X emulator device portal shows detailed information about the state of the operating system
Microsoft has emulators for both the Surface Neo and Duo, and the former (though buggy) is impressive. A flyout lets you tilt and swivel the virtual device with a 3D image of how it looks. There is also a Windows Device Portal, which gives you detailed information on the state of the operating system, including a file explorer, list of running processes, device manager, network diagnostics, performance tracing and more.
Microsoft CEO Satya Nadella said last year that the operating system is "no longer the most important layer for us." That may not be the feeling throughout Microsoft, a company whose success was built on Windows.
There is no traditional desktop in Windows 10X. This image shows the Start menu on the left, pulled up to full screen, and the Settings application on the right
Surface Duo, for all its attractions, feels like an admission of defeat, though it helps the company put its own stamp on Google's operating system. Surface Neo, on the other hand, is a bold new push and seems like a last chance for Windows on mobile devices (just about – it has two 9" screens) after the abandonment of Windows Phone. Windows 10X is Windows without a desktop, locked down for security, and optimised for UWP applications, though Win32 desktop applications will run in an isolated container.
The use of dual screens on Windows is nothing new, but this is different, moving beyond simply having two screens for convenience towards creating applications that are designed to take advantage of the form factor. It will not be easy to persuade Android developers to do extra work just for Surface Duo. On the Windows side, meanwhile, developers are weary of new directions from Microsoft that run into the sand a year or two later.
That said, compatibility with existing applications means there will be plenty of stuff that will run on both devices, and it looks like Surface Neo in particular will be fun to try, and with potential for excellent mobile productivity. It may fall flat, but it is the most interesting new Windows initiative for years. ®