This sample of using SpectatorView is very similar to the live code demo presented at //BUILD 2019 conference.
In order to run the demo, you will need at least two MR/AR capable devices. You should ideally use a HoloLens or HoloLens 2 device to host and interact with the shared application experience. You can then use a mobile device to view the application experience. Once you have the devices ready, follow the instructions below.
ARKit Note: If you wish to run the experience on an iOS device with ARKit, download the ARKit repository, unzip it, and copy the contents of the
Unity-Technologies-unity-arkit-plugin-94e47eae5954/Assets
folder to/samples/Build2019Demo.Unity/Assets/
.
These instructions assume that a HoloLens 2 device will be used to host the shared experience and that an Android phone will be used to spectate the shared experience. For iOS, replace references to Android with iOS.
- Run
tools/Scripts/SetupRepository.bat
(tools/Scripts/SetupRepository.sh
on Mac) to setup your local version of the code base. This script will obtain the external dependencies required for building this project.
- Connect your devices to the same WiFi network.
- Obtain and write down your HoloLens's IP Address (This can be found in the settings menu).
- Ensure you have created an Azure Spatial Anchors account.
- Open the Build2019Demo.Unity project in Unity.
- If requested, import the TextMeshPro Essentials.
- Open the
Finished_Scene
sample scene. - Open SpectatorView settings by going to the menu
SpectatorView > Edit Settings
.
- Replace
ENTER_ACCOUNT_ID
andENTER_ACCOUNT_KEY
with your Account Id and Account Key obtained when setting up your Azure Spatial Anchors account.
- Build UWP Player containing
Demo/Scenes/Finished_Scene.unity
scene, and deploy this application to the HoloLens 2 device. - Launch the
SpectatorView.Build2019Demo
on the HoloLens 2, and wait for the experience to start.
- Export Android Player containing
MixedReality-SpectatorView/SpectatorView/Scenes/SpectatorView.Android.unity
scene to an Android Studio solution. - Open the Android Studio solution and change the main activity in the AndroidManifest.xml file to
Microsoft.MixedReality.SpectatorView.Unity.ScreenRecorderActivity
. - Update the AndroidManifest.xml in Android Studio to contain
android.permission.CAMERA
,android.permission.INTERNET
,android.permission.RECORD_AUDIO
andandroid.permission.WRITE_EXTERNAL_STORAGE
uses-permissions. - Build the Android Studio solution and deploy this application to the spectating Android device.
- Launch the
SpectatorView.Build2019Demo
on the Android device and connect to the HoloLens device by specifying the HoloLens's IP Address.
Note 1: Building iOS version requires an special step after exporting the Unity project to xCode, see the official instructions. You will need to use the
SpectatorView.iOS.unity
scene compared to theSpectatorView.Android.unity
.
Note 2: Additional setup instructions for spectating with mobile devices can be found here.
The demo consists of a simple experience with a buttons panel and a slider, configured for spectation by another device using SpectatorView functionality. The Unity project structure contains:
- ARKit: This folder is not checked-in by default, but it's needed to run the experience on ARKit iOS device; see the ARKit Note above.
- AzureSpatialAnchors: This folder contains the Azure Spatial Anchors (ASA) plugin referenced from the submodule added at
/external/Azure-Spatial-Anchors-Samples/
; the source is hosted on GitHub. - Demo: Demo assets and prefabs for the simple experience.
- GoogleARCore: This folder contains the ARCore SDK referenced from the submodule added at
/external/ARCore-Unity-SDK/
; the source is hosted on GitHub. - MixedReality-SpectatorView: Spectator View assets symlinked from
/src/SpectatorView.Unity/Assets
- MixedRealityToolkit-Unity: MixedRealityToolkit-Unity assets symlinked from the common submodule located at
/external/MixedRealityToolkit-Unity/Assets
- Plugins: This folder contains parts of the ASA plugin that need to be in this location.
The MixedRealityToolkit-Unity project introduces some dependencies on System.Numerics.* types that can cause errors when building the UWP player. That going said, although these errors are generated during the build, they do not prevent the build from succeeding. Its suggested to ignore these errors when building the sample application for the time being.
For more information on troubleshooting other build issues, checkout the Troubleshooting
section in our detailed setup steps here.