The Cross device SDK simplifies the development of rich and engaging multi-device experiences. This SDK is part of our larger multi-device development toolkit that includes emulator support, profiling, and more. The Cross device SDK enables the following core functionality:
- Device discovery and authorization
- Secure connections and data transfers
- Multi-device sessions
Some examples of applications and experiences that you can build using this SDK include multiplayer gaming, seamless switching between devices in productivity apps, and group food ordering.
When developing the Cross device SDK, we followed three basic principles to create an abstraction layer that safely and respectfully accelerates the development of multi-device apps and experiences. Those principles are:
- Ubiquitous: The SDK should work on every device possible, starting with phones and tablets.
- Modular: Developers should be able to mix the SDK with other solutions.
- Empowering: The SDK does not restrict you to specific cross-device experiences, but rather allows you to build your own features and experiences.
When discussing cross-device use cases, we consider two main categories: personal and communal experiences.
Personal experiences are built around a single user identity on multiple devices, such as mobile phones, watches, TVs, and/or cars. These experiences help users more effectively connect the various devices they own. For instance:
- Complete a movie rental or purchase on your TV by using your phone to enter your form of payment.
- Start reading a long article on your phone and finish reading it on your tablet without losing your place.
Communal experiences are enjoyed between a user and others around them. For example:
- Share a map location as a passenger directly with your friend’s car.
- Share your Sunday bike route with others that you’re biking with.
- Collect items for a group food order without passing your phone around.
- Take a group vote for the next TV show to watch together.
Media and other experiences
There are also multi-device experiences, such as continuous media controls and authentication, that could prompt discovering devices and passing data between participants. For these use cases, we have existing frameworks and SDKs that might be a better fit:
- Cast SDK for media casting to other devices.
- Media sessions for continuous playback.
- Block Store for authentication.
- Companion Device Manager for discovering and pairing companion devices such as fitness trackers or headphones.
Together with the Cross device SDK, these APIs and technologies allow you to build unique and seamless multi-device user experiences in your apps.
Developer Preview limitations
As this is a Developer Preview version of the SDK, note the following:
- The API surfaces are subject to change.
- The Cross device SDK is NOT to be used in production applications.
Currently supported platforms and surfaces are limited to Android mobile and tablet devices.
We encourage you to share your feedback and suggestions. Please submit bug reports here.
How it works
The Cross device SDK is a software abstraction layer that enables both platform-driven and developer-driven multi-device experiences by leveraging various wireless technologies such as Bluetooth, Wi-Fi, and ultra-wideband. This abstraction allows developers to focus on the most important parts of the user experience while the SDK handles underlying aspects of platform capabilities, device discovery, authentication, and compatibility.
For most application developers, we recommend using the Multi-Device Sessions API. This API allows app user experiences to be transferred to or shared with other devices. However, if you need more granularity or customization for your cross-device experiences, the standalone Device Discovery and Secure Connections APIs are available.
The Cross device SDK is open-source and will be available for different Android surfaces and non-Android ecosystem devices (Chrome OS, Windows, iOS). The goal of the SDK is to leverage existing technologies and platform capabilities while simplifying the development of multi-device experiences for app developers.