If you are one of the many people who are interested in Developing for the HoloLens, this deck will walk through all details publically available as of 1/20/2016. Learn about the path that Microsoft has taken to reach the Universal Windows Platform (UWP) which includes Xbox and HoloLens. Learn about the different techniques and tooling Microsoft has provided for Adaptive UI. Finally, learn about the HoloLens, it's hardware, input, how it works, and examples of companies already taking advantage of its power.
Boost Fertility New Invention Ups Success Rates.pdf
Develop hololens
1.
2.
3. Easy for users to
get & stay current
Unified core
and app platform
Windows Phone 7.5
Windows Phone 8
Windows
Phone 8.1
Windows 8
Xbox One
Windows on Devices
Xbox 360
Windows 8.1
Windows 10
Converged
OS kernel
Converged
app model
4. Phone Small Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-OnesPhablet Large Tablet
Classic
Laptop
Xbox IoTSurface Hub Holographic
Windows 10
5. One Store +
One Dev Center
Reuse
Existing
CodeOne SDK +
Tooling
Adaptive
User Interface
Natural
User Inputs
One Universal Windows Platform
7. Windows 10
operating system
Bridging technologies
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
languages
HTML
DirectX
XAML
C++
.Net
languages
MFCWFWPF
.Net
runtime
8. One Windows
Desktop
SKU
PC
2 in 1
Mobile
SKU
Tablet
Phablet
Phone
Xbox
SKU
Xbox
IoT
SKU
Band
IoT headless
SKU
Raspberry
Pi
Home
Automation
Surface Hub
SKU
Surface Hub
Holographic
SKU
HoloLens
16. Phone
Viewing Distance: 16.3”
Tablets and 2 in 1
Viewing Distance:
20”
Small and Large Laptops
Viewing Distance:
24.5”
Small and Large Desktop Monitors
Viewing Distance:
28”
TV
Viewing Distance:
84”
5” 8” 13”
24. Augmented Reality
Augmented Reality is the
integration of digital
information with live video or
the user’s environment in real
time. AR takes an existing
picture and blends new
information into it.
25.
26.
27. Input
Different gestures are defined or create your own
Microphones gather voice commands
Adjust your view/screen through gaze
33. var api = "Windows.Phone.UI.Input.HardwareButtons";
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(api))
{
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= CameraButtonPressed;
}
Microsoft has been working to converge its client operating system and developer platforms for a long time.
In Windows Phone 7, the operating system was based on Windows CE, a great operating system for small, handheld devices, but different from the OS on ‘big’ Windows. When Windows Phone 8 was launched, we swapped out Windows CE and base it on the Windows NT kernel instead, same as our PCs. We did a similar thing with Xbox One.
But it wasn’t until Windows 8.1/Windows Phone 8.1 that we really delivered on a converged developer platform. You can build universal 8.1 apps that share a very high percentage of code and where you program against the same APIs.
With Windows 10, we’ve taken that even further and for the first time allow developers to create a single app that can run across all devices running Windows 10. Windows 10 brings developers a unified core OS across all devices and a single app platform.
Windows 10 runs on a wide variety of devices, from phones with a 4.5” screen, through phablets, tablets, PCs, laptops, convertibles such as the Surface, on desktops and All-in-ones, to the Xbox in your living room and right up to giant 84” screens such as our team collaboration device, the Surface Hub. And it also takes in very tiny cheap computers such as the Raspberry Pi 2, and innovative hardware such as the Hololens.
We’ve divided this broad range of hardware into different device families – as developers you will likely build apps that target one or more device families.
<click>
We have small devices and IoT, phones and small tablets are in the Mobile device family, large tablets and PCs in the PC (or as we more usually call it, Desktop) family, the Xbox, Surface Hub (or ‘Team’) and finally the Hololens
<click>
And all of these device families run the same developer platform – the Universal Windows Platform. You can build a single app that can run across all these device families using a single SDK and distribute apps through a single store.
Of course, with this diversity of devices, what we are *not* saying is that you should create one app that kind of works adequately across all these devices. No, we want you to create apps that shine on each device family, so we’ve added APIs, controls and tools to help you build an adaptive UI.
This diagram illustrates how it works:
<Click> Each device family runs the same core OS
<Click> Your app is built upon the UWP and that is common across all device families.
<Click> When you add a reference to an extension SDK, you are making those APIs available to be called by your application code – but those APIs are only usable at runtime on the matching device family
<Click> Although, when you add a reference to an extension SDK, the metadata for those APIs are loaded into your project, so the C# compiler and Visual Studio Intellisense works correctly when you reference those APIs during the app development process.
So let’s take a look at the different ways you can build apps for Windows 10.
<click>
First of all there are the ‘traditional’ ways of building apps for Windows desktop, using tools such as WPF, MFC and full .NET. These are what we term ‘CWA’ (Classic Windows Apps) and are still a great way of building apps for Windows desktop. Although, note that we are working on some tools, called Project ‘Centennial’ that will allow CWAs to be packaged for distribution through the Windows Store – more on that later.
<click>
Then, we’ve got the new UWP, which is based on the Windows Runtime APIs that we used for building Windows Store apps in Windows 8.x and Windows Phone 8.1. Here you can use HTML and JavaScript to create universal Windows apps, or XAML and C#/VB or C++, or you can use DirectX and one of the many popular middleware packages to create games. And these all build upon the UWP APIs and can run across all Windows 10 devices.
<click>
Finally, we’ve got a number of bridging technologies. We want to enable developers to use whichever technologies they are comfortable with, and help them to create Windows apps. So we’ve got eh Windows Bridge for iOS, the Windows Bridge for Android, hosted Web Apps to help web sites to be discoverable through the Windows Store and to call UWP APIs, and a Bridge for classical Windows Apps. More on all of those soon.
Let’s take a look again at the device families. As we said before, we are dividing Windows 10 into broad groupings of similar devices, called device families.
And while all these device families offer a distinctive user experience to the end user, they all run the same app platform so you can create apps that run across a broad range of these device families.
This commonality is a strength – but what we are *not* saying is that you have to create some kind of ‘lowest common denominator’ app that works adequately across devices. We want you to create apps that shine on each device and offer the best possible user experience to end-users of your app.
But before talking about the device family specific APIs, let’s talk about adaptive UI – how you can create a great UI for your app that adapts to whichever screen size and orientation it is running on.
When you are thinking of adaptive design, you want to build your page layouts using responsive design techniques – so no fixed widths, but instead having content that flows and can automatically adjust to relatively minor changes, such as the difference I screen size between a 4.5” screen and a 5” screen.
Many of the built-in controls have basic responsiveness built in. So they know when the user is using mouse & keyboard, and when they are using touch, and modify their layout accordingly, displaying larger hit areas for touch.
But you will also need to adjust your page layouts for big changes, such as the difference in screen size between a phone and a PC. Here, features such as Visual States can be a great help.
And you may also want to employ tailored design techniques, where instead of retaining the same basic page content and adjusting layout for different screens, you create a tailored experience that is more appropriate to the device and the way the user is likely to want to interact with it.
Here is an example of responsive design:
On the large screen on the right, we take full advantage of the size of the window the app is running in, we lay out the control buttons in a line, and we place the thumbnail of the people making the call off to the right.
On the small phone screen, it’s essentially the same, but the image is cropped, and the large red End Call button has been placed underneath the other buttons, while the thumbnail moves up the page to just above the call control buttons.
Adaptive controls are great, and responsive layout will get you a long way, but we know there will be cases where the app designer wants to do something more custom or more tailored than the adaptive controls will allow.
This desire might be motivated by hardware differences. For example, an app that will run on an Xbox might want to create some customizations for navigation using a game controller.
Or it might be motivated by screen size and usability. A designer might want to position a menu at the bottom of a phone screen to make it more usable with a single hand.
For these cases, we enable developers to create what we call a tailored user experience. In this case, the code is the same, but the developer creates custom XAML to deliver the desired design on the right device or in the right set of conditions.
Tailored design goes beyond Adaptive UX
Developers can create custom experiences for certain devices
The code is the same, but custom XAML can deliver the experience a developer wants
Every Windows 10 app designer needs to think about adaptive UI and how their app will appear on different screens. Even if you start out by thinking of an app that you only want to release on Phone, so you think only of screen layouts appropriate for phone screens, well your app can still end up running on a big screen.
The exciting Continuum feature is coming to Windows Phone, where the new generation of phones can be connected to an external screen and a Bluetooth keyboard and mouse and can be used just like a full PC! So all of a sudden, your app designed for phone can be running on a big monitor. You will want to ensure that the user experience in that case is a great one!
The effective pixel system takes into account a number of factors and allows you to layout your pages without having to adjust for the device type or the physical screen resolution.
One factor that determines how large the system will render an item on a particular screen is the scaling algorithm. This takes into account the typical viewing distance of a class of device – a phone is typically held close to the eyes, whereas tablets are held further back, PCs/laptops further back again, and Surface Hub is typically viewed across a room. The scaling algorithm ensures that when you size some UI feature using effective pixels, it will have the same perceivable size regardless if which device it is displayed upon.
Video – This has audio track.
Alternatively, turn off sound and make your own spoken commentary over the video.
When you think of the broad range of screen sizes available across all Windows 10 devices, from 4.5” phones up to the 84” Surface Hub, it can seem daunting to create an adaptive UI that will work well across all of these.
Our advice is to target a few key scenarios:
5” phone in portrait
8” tablet in portrait and landscape
13” laptop/PC in landscape
If you focus on these key targets, and use adaptive layout techniques such as Grid layout and controls that can wrap and flow output such as the TextBlock with Wrapping set to true, then you should find that you will end up with good results across all the targeted devices and also on those intermediaries.
You can then target additional screens such as large monitors, Surface Hub or Xbox if it makes sense for your app.
As you think about what to show on different screens, you will often decide to show more content on larger displays where screen size is not as constrained as on a small screen such as a phone.
A great example is the Mail app. On a desktop display, this adopts a three column layout, with a navigation pane on the left, listing to its right and then perhaps something like a preview pane on the right side of the screen.
As we move down to a phablet or tablet, the layout shrinks to a two-column design. Here, the navigation panel is no longer on the primary layout but has been hidden away and is accessible by a ‘hamburger’ button. The mail listing and the preview pane remains though.
Move down again to a phone display and now the Mail app shrinks again to a one-column layout. The primary screen shows the mail listing, but then to read a mail message, the user taps on an entry in the list and a new page opens to allow reading of the full message.
When you define a visual sate, you give it a name, and you change properties of the controls on your UI, such as visibility or sizes. These changes can be applied together when a particular named visual state is applied.
You can now define the trigger that causes a visual state to be activated directly in XAML.
Adaptive visual states allow you to change the visual state in response to changes in the width of the window based on MinWindowWidth or MinWindowHeight.
The other innovation in UWP around Visual States is Setters.
Prior to UWP, all property changes to controls applied within a visual state had to be defined in a storyboard. While you can still do this, a much simpler syntax can now be used for those properties that just need to change from one value to another, and do not need a timeline or gradual transition that is possible by using a storyboard.
Another key tool in the arsenal of developers of adaptive XAML UI is the RelativePanel.
RelativePanel is a constraint based layout container that you can use to create UIs by expressing spatial relationships between elements. Using RelativePanel’s attached properties, you can position a UI element relative to another UI element (A is RelativePanel.Below B) as well as relative to the panel (A is RelativePanel.AlignTopWithPanel).
It is particularly valuable when applying visual states in response to window size changes. It makes it very easy to reposition content on the page as the window size increases or decreases.
See demo notes on github
Think of the Yellow First Down Marker in an NFL Football Game
Augmented Reality is the integration of digital information with live video or the user’s environment in real time. AR takes an existing picture and blends new information into it.
See demo notes on github
Visual Studio 2015 comes in a number of editions that serve the needs of different groups of developers.
Visual Studio Enterprise with MSDN is an Enterprise grade solution with advanced capabilities for teams working on projects of any size or complexity, including advanced testing and DevOps.
Visual Studio Professional with MSDN offers professional developer tools and services for individual developers or small teams.
Visual Studio Community is a free, full-featured and extensible tool for developers building non-enterprise applications.
There is a different approach for development for Windows 10 devices. A developer license is no longer required for each device that you want to use to develop, install or test your app. You just enable a device once for these tasks from the settings for the device. That's it. No more renewing your developer licenses every 30 or 90 days!
You can easily developer unlock any Windows 10 PC/laptop/tablet or Phone just by going to System Settings to allow you to deploy apps to the device directly from Visual Studio and carry out on-device debugging and testing, or just for sideloading apps that have not been certified by the Windows Store.
Although the majority of the APIs you need for a UWP app are in the common API set, we also make available device family-specific APIs. We release these as Platform Extension SDKs. You can add a reference to these extension SDKsin exactly the same way as any other reference library.
Like the UWP itself, these extension SDKs are versioned and may be released and updated independently of the UWP and the OS.
So, we’ve got these device family-specific APIs that your app code can use, but they are only usable at runtime on specific device families. How do we make sure these APIs are called only at the appropriate time?
The answer is to ‘gate’ calls to any API in an extension SDK with runtime checks to verify that a particular API is available to use. You do this using methods of the Windows.Foundation.Metadata.ApiInformation API. The most common method to use is IsTypePresent() which is a runtime check that the named API is actually loaded and usable wherever the app happens to be running.
So, on top of the UWP, you build your universal Windows app.
Unlike in Windows 8.1, where a universal 8.1 app creates separate binaries for PC and for Phone, with UWP it truly is a single app package that can run on any UWP device.
The runtime on each device family is able to run UWP apps whatever the device.
And it’s a big API!
Here’s just a sample of some of the feature areas that UWP APIs cover.
As you build apps against the UWP, you will find that the vast majority of the things you want to enable can be achieved by APIs that are in the UWP – and therefore available across all Windows 10 devices. We do have a way of calling device family-specific APIs, and we’ll come onto that shortly. But most of what you need can be found in the UWP.
Finally, for any questions on how to build apps for Windows 10, and for access to the Dev Center, or to take part in the forums, go to our home on the web: dev.windows.com.
Here you will find tutorials, samples, getting started guides and access to the full documentation.
Everything you need to help you create great UWP apps for Windows 10!
See demo notes on github
Similar totheMinecraft experience on HoloLens, Project XRay also looks incredible -- particularly because you can turn most any room into your own gaming canvas. Here, though, you're wearing a holographic weapon on your arm, which you'll need to defend yourself from an attack of flying robots. Once they crawl out of the walls, you can shoot lasers at them -- yes, lasers. "Holograms behave just like real objects; they can interact with environments and with each other," said the Microsoft representative on stage about Project XRay.
Scientists at NASA’s Jet Propulsion Laboratory will soon be exploring Mars using holograms of Mars Rover images. They will work as if they can walk on the surface of Mars, an experience previously impossible. As a result, they will be able to learn at a faster pace than ever before.
Learning comes alive when flat illustrations become 3D images students explore, alter, and examine from every angle. Microsoft HoloLens is helping Case Western Reserve and the Cleveland Clinic transform teaching for the future.
Microsoft HoloLens and Autodesk Fusion 360 are helping improve collaboration across the entire product development process, enabling engineers and designers to iterate together in real-time. Faster prototyping, more confident decisions, and more efficient cooperation are the future of product design.
Volvo Cars is renowned for safety, design and its Swedish vision of luxury. Volvo puts people at the center of everything it does. From giving customers a sensor’s vantage point to configuring cars in entirely new ways, Microsoft HoloLens brings its cutting edge car features to life in ways never before possible.
Dassault Systèmes, the 3DEXPERIENCE Company, provides business and people with virtual universes to imagine sustainable innovations. Its collaborative solutions transform how products are designed, produced, and supported in all industries worldwide
Unity Technologies are the creators of Unity, the powerful, accessible, and affordable end-to-end development platform used by over 700,000 monthly active developers to create rich interactive experiences and connect with passionate audiences.
Sketchfab is a platform to publish and find the best 3D content, usable for 3D embeds, VR/AR, 3D printing and more. Sketchfab is integrated with all major 3D creation tools and publishing platforms, and the fastest growing 3D repository.
See demo notes on github
Windows 10 offers an unprecedented opportunity for developers: the same core operating system across all Windows 10 devices, a common app platform, a single dev center where the developer can manage their app submissions for all Windows 10 devices, and a single Windows Store for app deployment, including special access for Businesses and Education.