WEBVTT

00:00:00.000 --> 00:00:03.090
>> I know the title of the session
and the title description in

00:00:03.090 --> 00:00:08.175
the session thing
makes no correlation,

00:00:08.175 --> 00:00:11.805
but I would love to share
an awesome story with everyone here.

00:00:11.805 --> 00:00:16.545
My name is Sweeky, I work for
Microsoft, I love Xamarin,

00:00:16.545 --> 00:00:20.940
and I got recently
really into Pokemon Go,

00:00:20.940 --> 00:00:23.670
and then got really,
really into Wizards Unite,

00:00:23.670 --> 00:00:25.940
the new Harry Potter
version of Pokemon Go,

00:00:25.940 --> 00:00:29.340
so clearly I really
like mixed reality.

00:00:29.340 --> 00:00:35.055
I've been walking around
the conference area

00:00:35.055 --> 00:00:41.025
for all of yesterday and
dropping blue boxes,

00:00:41.025 --> 00:00:44.240
so I've lost all my blue boxes.

00:00:44.240 --> 00:00:46.610
These aren't just regular blue boxes,

00:00:46.610 --> 00:00:50.435
these are clearly
virtual fake real boxes.

00:00:50.435 --> 00:00:52.100
But they are all over the camp,

00:00:52.100 --> 00:00:54.110
all over the conference area.

00:00:54.110 --> 00:00:57.110
In this session, I'm
going to show you

00:00:57.110 --> 00:01:00.050
how I created the two apps: one that

00:01:00.050 --> 00:01:02.780
drops these boxes and
the second that will

00:01:02.780 --> 00:01:06.050
help all of you, help
me find my boxes.

00:01:06.050 --> 00:01:09.265
Yes, it's a game
because I love games.

00:01:09.265 --> 00:01:12.425
What are we actually
talking about over here?

00:01:12.425 --> 00:01:16.460
This is the cool world
of augmented reality.

00:01:16.460 --> 00:01:19.280
I'm not talking about
VR with a headset on,

00:01:19.280 --> 00:01:21.350
we're talking about
augmented reality,

00:01:21.350 --> 00:01:25.130
so any device with a camera on
it should be able to project

00:01:25.130 --> 00:01:30.160
models in points or locations
where it's supposed to be there.

00:01:30.160 --> 00:01:35.250
So as I have that cool little Jeffer
is showing off over here,

00:01:35.250 --> 00:01:37.670
the way I like to describe it to

00:01:37.670 --> 00:01:39.755
everyone who are not familiar
with how this works,

00:01:39.755 --> 00:01:42.350
it's literally just using
your camera frames as

00:01:42.350 --> 00:01:45.800
a canvas and just
drawing objects on it.

00:01:45.800 --> 00:01:48.575
Now, I'm not the greatest
graphic designer in the world,

00:01:48.575 --> 00:01:51.110
therefore we have blue boxes.

00:01:51.110 --> 00:01:53.450
But if he were much
better at 3D modeling,

00:01:53.450 --> 00:01:56.030
you can put any object

00:01:56.030 --> 00:01:59.820
that i.e, Harry Potter
characters or Pokemon.

00:01:59.930 --> 00:02:03.280
The way the support works right now,

00:02:03.280 --> 00:02:06.335
this is tied into
each native platform.

00:02:06.335 --> 00:02:08.840
So iOS has its own
version that's called

00:02:08.840 --> 00:02:12.505
ARKit and Android has
its own version, that's ARCore.

00:02:12.505 --> 00:02:16.340
These are support native
binding provided to us

00:02:16.340 --> 00:02:20.435
from Android and iOS that
support the whole concept of,

00:02:20.435 --> 00:02:22.970
"Hey, I have a device with a camera.

00:02:22.970 --> 00:02:26.180
It's providing me frames of
information of real-world,

00:02:26.180 --> 00:02:28.340
and now it has enough
data points that

00:02:28.340 --> 00:02:30.635
it can start drawing things on it.

00:02:30.635 --> 00:02:33.845
So this whole section of the stack is

00:02:33.845 --> 00:02:38.660
controlled and powered by
native components basically.

00:02:38.660 --> 00:02:42.190
Now let's step into
the world of mixed reality.

00:02:42.190 --> 00:02:44.450
We've had a bunch of amazing talks

00:02:44.450 --> 00:02:46.865
through the conference
about cognitive services,

00:02:46.865 --> 00:02:52.290
about image services, all
provided by Microsoft.

00:02:52.290 --> 00:02:54.155
In this talk, I'll be talking about

00:02:54.155 --> 00:02:55.610
a another service that's provided

00:02:55.610 --> 00:02:57.700
that's called Azure Spatial Anchors.

00:02:57.700 --> 00:02:59.490
It was demoed at build,

00:02:59.490 --> 00:03:02.300
it's extremely cool and
there's a star next

00:03:02.300 --> 00:03:05.120
to it because it's still in preview,

00:03:05.120 --> 00:03:06.830
but it's available to use right now,

00:03:06.830 --> 00:03:08.240
you get a one-year free subscription,

00:03:08.240 --> 00:03:10.195
you can just set up a free account.

00:03:10.195 --> 00:03:14.685
So what's the point of
Azure Spatial Anchor?

00:03:14.685 --> 00:03:16.880
I just told you that
each native platform has

00:03:16.880 --> 00:03:19.105
its own version and they can do it.

00:03:19.105 --> 00:03:22.935
Where does Azure Spatial
Anchors provide value?

00:03:22.935 --> 00:03:24.990
Well, with Azure Spatial Anchors,

00:03:24.990 --> 00:03:28.830
you can have all of
those precise points of interests,

00:03:28.830 --> 00:03:31.205
but you can share them
across different devices.

00:03:31.205 --> 00:03:35.180
So you can have a team
with a bunch of different,

00:03:35.180 --> 00:03:37.010
one person could be on a HoloLens,

00:03:37.010 --> 00:03:39.350
another one could be using a UWP app,

00:03:39.350 --> 00:03:41.345
another one could be
using an Android phone,

00:03:41.345 --> 00:03:45.275
but then everyone involved
can be able to see

00:03:45.275 --> 00:03:46.970
that rendered 3D model through

00:03:46.970 --> 00:03:50.525
whichever camera they
choose to view it through.

00:03:50.525 --> 00:03:53.260
That's the beauty of
Azure Spatial Anchors.

00:03:53.260 --> 00:03:55.415
It's been really really fun.

00:03:55.415 --> 00:03:59.330
They've had support and there's
already samples available

00:03:59.330 --> 00:04:03.710
online right now that support
native iOS, native Android.

00:04:03.710 --> 00:04:06.505
There's a Unity sample and
there's one for HoloLens.

00:04:06.505 --> 00:04:09.450
But we are in the Xamarin
Dev Summit here,

00:04:09.450 --> 00:04:11.730
we're not at WWWC or something,

00:04:11.730 --> 00:04:14.265
so here's the Xamarin support?

00:04:14.265 --> 00:04:16.085
I've had a lot of people ask me that,

00:04:16.085 --> 00:04:18.620
it sounds like, "Let me go find out."

00:04:18.620 --> 00:04:20.950
Why is there no Xamarin support yet?

00:04:20.950 --> 00:04:22.800
So good news.

00:04:22.800 --> 00:04:24.975
There is Xamarin support.

00:04:24.975 --> 00:04:27.785
They've actually actively
been working on it.

00:04:27.785 --> 00:04:32.550
They just didn't have it
ready to release until now.

00:04:32.550 --> 00:04:35.405
Not a Keynote
announcement. Thank you.

00:04:35.405 --> 00:04:38.120
But I'm super super proud to

00:04:38.120 --> 00:04:41.030
announce there's
this beta bits available.

00:04:41.030 --> 00:04:44.300
Currently, we're limiting
that access only to MVPs.

00:04:44.300 --> 00:04:45.970
I'll have a link up later on,

00:04:45.970 --> 00:04:48.985
anyone who's an MVP in the room
right now or watching online,

00:04:48.985 --> 00:04:51.370
hello online friends,
please go in and sign

00:04:51.370 --> 00:04:54.350
up and we can get you beta
access to these bits.

00:04:54.350 --> 00:04:56.160
But don't be sad,

00:04:56.160 --> 00:04:58.000
I skipped ahead, I was
going to have this at

00:04:58.000 --> 00:05:00.325
the end but I want to
just say I'm too excited.

00:05:00.325 --> 00:05:06.355
We'll have public access for
the Xamarin support in early August.

00:05:06.355 --> 00:05:07.630
So please keep an eye out.

00:05:07.630 --> 00:05:09.670
Everything that I'm showing
today and demoing today

00:05:09.670 --> 00:05:12.285
will be available to
you in early August,

00:05:12.285 --> 00:05:14.030
and I'm doing nothing
fancy, trust me.

00:05:14.030 --> 00:05:17.250
It's really basic but it's so cool.

00:05:17.260 --> 00:05:20.440
Back to the power of where

00:05:20.440 --> 00:05:23.440
Xamarin and Azure Spatial
Anchors could live.

00:05:23.440 --> 00:05:28.330
So the idea would be Xamarin
will have drive the native bits,

00:05:28.330 --> 00:05:31.150
run it on your devices
and the backend.

00:05:31.150 --> 00:05:33.590
The supporting services
can be a Cosmos DB,

00:05:33.590 --> 00:05:36.240
can be Azure App Service.

00:05:36.670 --> 00:05:39.620
You can also extend this based

00:05:39.620 --> 00:05:41.645
on what you're trying
to apply this to.

00:05:41.645 --> 00:05:45.665
You can also have
an Azure AD-based access only.

00:05:45.665 --> 00:05:47.180
There is a lot different, depending

00:05:47.180 --> 00:05:48.935
on what you are trying to achieve,

00:05:48.935 --> 00:05:50.615
it can support it.

00:05:50.615 --> 00:05:53.220
So describe a lot of cool features.

00:05:53.220 --> 00:05:54.975
You have a lot of power here.

00:05:54.975 --> 00:05:56.730
What can you do with it?

00:05:56.730 --> 00:05:59.010
Some ideas, I will be honest,

00:05:59.010 --> 00:06:00.300
the first two points are not me,

00:06:00.300 --> 00:06:03.320
they're from the Spatial
Anchors outside itself,

00:06:03.320 --> 00:06:04.890
but I found it really interesting.

00:06:04.890 --> 00:06:06.530
A shared calendar app.

00:06:06.530 --> 00:06:08.390
If it was me I'd make it a shared

00:06:08.390 --> 00:06:12.020
DevOps task board but let's
do share calendar apps.

00:06:12.020 --> 00:06:14.610
It's super-cool. I love this concept.

00:06:14.680 --> 00:06:20.390
The product design in 3D models
it's talking about IoT devices or

00:06:20.390 --> 00:06:22.850
big factories where
it's hard for people

00:06:22.850 --> 00:06:25.550
to go down to the actual equipment
to see what's going on,

00:06:25.550 --> 00:06:28.595
but they figured out rendered models
which has IoT devices,

00:06:28.595 --> 00:06:30.755
giving back information
and someone sitting

00:06:30.755 --> 00:06:33.110
in an office because they're
able to look at what's going on,

00:06:33.110 --> 00:06:36.080
see readings, and charts and
figure out a plan of action before

00:06:36.080 --> 00:06:39.035
actually going to the model,

00:06:39.035 --> 00:06:42.760
do the actual machine itself.

00:06:42.800 --> 00:06:45.690
Building mixed reality,
and like I said,

00:06:45.690 --> 00:06:47.540
Mixed Reality IoT solutions,

00:06:47.540 --> 00:06:49.520
I'm very excited about this space.

00:06:49.520 --> 00:06:50.990
I don't get to work on it every day,

00:06:50.990 --> 00:06:52.025
that's what I love doing,

00:06:52.025 --> 00:06:53.945
talks like this and let me explore.

00:06:53.945 --> 00:06:56.915
It's awesome the kind of things
you can achieve with this,

00:06:56.915 --> 00:06:59.525
but like I shared before,

00:06:59.525 --> 00:07:01.385
migrate idea for this is

00:07:01.385 --> 00:07:03.380
I want to build
a virtual treasure hunt man,

00:07:03.380 --> 00:07:05.060
and that's why I lost
all my boxes and

00:07:05.060 --> 00:07:07.265
all of you are going to help
me find my boxes today.

00:07:07.265 --> 00:07:10.400
This is version 1. It says
Alpha of my treasure hunt app.

00:07:10.400 --> 00:07:12.470
If this works, I
promise you I'm going

00:07:12.470 --> 00:07:14.630
to have an amazing version
of it out soon.

00:07:14.630 --> 00:07:16.985
We'll all play all over the world.

00:07:16.985 --> 00:07:20.720
I also want to make
my own version of Pokemon Go.

00:07:20.720 --> 00:07:22.430
Did anyone have those on

00:07:22.430 --> 00:07:25.380
virtual pet things? Do
you remember those?

00:07:25.380 --> 00:07:30.450
Now, imagine that with Azure
Spatial Anchors, it'd be so cool.

00:07:30.450 --> 00:07:32.670
You're going to have
your own pet with you-all the

00:07:32.670 --> 00:07:35.400
time: you can check
on it, clean its poo,

00:07:35.400 --> 00:07:37.319
get your friends to clean its poo,

00:07:37.319 --> 00:07:39.410
because it's shared
I can just give you

00:07:39.410 --> 00:07:41.570
access to my pet and you
take care my bet for me.

00:07:41.570 --> 00:07:44.425
I think it's great. I
love it. It's the best.

00:07:44.425 --> 00:07:48.050
So I described my game to you,

00:07:48.050 --> 00:07:49.400
so I'm going to show

00:07:49.400 --> 00:07:51.320
what the code looks like
and I'm going to show,

00:07:51.320 --> 00:07:53.825
hopefully, my Mirroring apps work.

00:07:53.825 --> 00:07:55.550
But if you want to play along

00:07:55.550 --> 00:07:57.625
and you want to help
me find my boxes,

00:07:57.625 --> 00:07:59.990
I'll have the links up again,

00:07:59.990 --> 00:08:02.510
but that's where you can go
to get the Android app or

00:08:02.510 --> 00:08:04.280
the iOS app and you can join in

00:08:04.280 --> 00:08:06.535
the fun and explain
how it works for you,

00:08:06.535 --> 00:08:07.875
because like I said, it's Alpha,

00:08:07.875 --> 00:08:11.155
it's not like the greatest Xamarin
app in the world but it works.

00:08:11.155 --> 00:08:19.380
Let's see how it works. Let me
get our PowerPoint. Let's see.

00:08:19.380 --> 00:08:22.230
So the first thing you
want to see is, okay.

00:08:22.230 --> 00:08:24.815
So what I have opened here

00:08:24.815 --> 00:08:27.290
is MVPs who already

00:08:27.290 --> 00:08:29.660
may have access or when
you will be given access.

00:08:29.660 --> 00:08:32.930
This is like the sample
basic app that's available.

00:08:32.930 --> 00:08:36.750
The way it works is,

00:08:36.750 --> 00:08:41.430
I don't want go into the detail
of the code, I come back, yes.

00:08:41.430 --> 00:08:45.800
Whoa, I had a Donovan Brown
moment. This is amazing.

00:08:46.690 --> 00:08:50.270
Where most of the magic happens is,

00:08:50.270 --> 00:08:51.920
this is, okay, yes,

00:08:51.920 --> 00:08:53.495
it doesn't have my packages, oops,

00:08:53.495 --> 00:08:56.345
but if you ignore
all the red squiggly lines,

00:08:56.345 --> 00:08:59.675
this is literally
all that's going on.

00:08:59.675 --> 00:09:02.150
After you scan the
environment, like I said,

00:09:02.150 --> 00:09:04.745
the native support does
a lot of the work for you.

00:09:04.745 --> 00:09:06.170
Azure Spatial Anchors basically

00:09:06.170 --> 00:09:07.490
just collects all that data and just

00:09:07.490 --> 00:09:08.810
makes it understandable between

00:09:08.810 --> 00:09:10.340
the different platforms
that supports.

00:09:10.340 --> 00:09:15.805
So all you're basically doing is
once you have scanned your area,

00:09:15.805 --> 00:09:18.280
picked up a location
and dropped appoint,

00:09:18.280 --> 00:09:20.680
it calls them anchors.

00:09:20.680 --> 00:09:22.850
It just basically
takes that anchor and

00:09:22.850 --> 00:09:25.025
creates a new Cloud anchor for you,

00:09:25.025 --> 00:09:27.605
and then there's
a second step involved

00:09:27.605 --> 00:09:30.320
in this version of the app
where I save then I

00:09:30.320 --> 00:09:32.840
take that unique ID associated

00:09:32.840 --> 00:09:35.665
with that anchor and some
I save in my Cosmos DB.

00:09:35.665 --> 00:09:37.440
Thereby, I can share those in

00:09:37.440 --> 00:09:38.720
all locations with
you and then you can

00:09:38.720 --> 00:09:40.295
go hunt for those same spots.

00:09:40.295 --> 00:09:45.920
So the API docs implementing
this is super-simple.

00:09:45.920 --> 00:09:48.630
It's really really straightforward.

00:09:49.030 --> 00:09:53.720
If you like your fantasy
exactly what is going on

00:09:53.720 --> 00:10:01.020
with the adding and retrieving
and sending the anchor itself,

00:10:03.310 --> 00:10:06.720
oops, what did I do here?

00:10:08.850 --> 00:10:12.490
Don't touch the screen. All right.

00:10:12.490 --> 00:10:16.330
So literally again, this part of

00:10:16.330 --> 00:10:18.070
the thing literally just grabs

00:10:18.070 --> 00:10:20.260
the response and puts it
in my sharing services,

00:10:20.260 --> 00:10:23.455
grabs that Anchor ID that
I was talking about.

00:10:23.455 --> 00:10:26.360
I'll be very careful here.

00:10:26.400 --> 00:10:30.130
The next bit, like I said,

00:10:30.130 --> 00:10:31.960
Azure absorbers or Cosmos DB,

00:10:31.960 --> 00:10:33.685
whatever your back end wants to be.

00:10:33.685 --> 00:10:36.895
You grab the Anchor ID,

00:10:36.895 --> 00:10:40.300
do all the magics to it
and it's a rest call.

00:10:40.300 --> 00:10:41.980
So it posts it to

00:10:41.980 --> 00:10:45.000
the system and retrieving
literally works the same way.

00:10:45.000 --> 00:10:48.810
So let's call admin and client.

00:10:48.810 --> 00:10:51.930
So the admin that I use is
doing all of the posting

00:10:51.930 --> 00:10:56.100
and the finding aperture which
I've shared with all of you,

00:10:56.100 --> 00:10:59.000
is the one that's going to
go and find these Anchors.

00:10:59.000 --> 00:11:01.915
That's going to do
the retrieving bit.

00:11:01.915 --> 00:11:06.445
What else. I wanted to
show off something else.

00:11:06.445 --> 00:11:10.150
Yes. Now I'll show
off something else.

00:11:10.150 --> 00:11:12.925
So why make my life easy?

00:11:12.925 --> 00:11:15.625
I've been talking about
all this Native support.

00:11:15.625 --> 00:11:17.800
One day I asked myself,

00:11:17.800 --> 00:11:20.575
I wonder if I can do
this in Xamarin.Forms.

00:11:20.575 --> 00:11:23.050
Well, good news.

00:11:23.050 --> 00:11:24.790
You can do this in Xamarin.Forms,

00:11:24.790 --> 00:11:27.220
you just make Native Page Renderers
for each platform,

00:11:27.220 --> 00:11:29.455
because like I said, this
is Native support, right?

00:11:29.455 --> 00:11:32.200
So fun fact,

00:11:32.200 --> 00:11:34.450
the client app that I use to drop

00:11:34.450 --> 00:11:36.670
these Anchors was that sample
that I just showed you.

00:11:36.670 --> 00:11:38.425
So that's all Native,

00:11:38.425 --> 00:11:41.020
it's in Native iOS and Native Android

00:11:41.020 --> 00:11:44.290
but the apps that all
of you have hopefully

00:11:44.290 --> 00:11:47.830
downloaded and will play along
with me are the Xamarin.Forms

00:11:47.830 --> 00:11:52.180
version of what you're literally
seeing on the screen right now.

00:11:52.180 --> 00:11:57.250
So what it's doing is again,
really really simple.

00:11:57.250 --> 00:11:59.230
It's just taking
that same Native logic

00:11:59.230 --> 00:12:01.795
but it's just all happening
inside a Page Renderer.

00:12:01.795 --> 00:12:05.320
I didn't go very complex
with it but like I said,

00:12:05.320 --> 00:12:07.210
since this is like
just an alpha version,

00:12:07.210 --> 00:12:08.770
this is just some what I

00:12:08.770 --> 00:12:10.945
think could be a way
this could be done.

00:12:10.945 --> 00:12:13.375
So all I do is, once
I get the response

00:12:13.375 --> 00:12:18.265
that the user has put in
Anchor IDs, say number 10.

00:12:18.265 --> 00:12:19.990
So I have retrieved all of

00:12:19.990 --> 00:12:21.940
the ASA Anchor information and

00:12:21.940 --> 00:12:24.220
now the system can process
it and be like, okay,

00:12:24.220 --> 00:12:25.960
so this is a spatial Anchor,

00:12:25.960 --> 00:12:28.030
when you're moving the device
and on the screen,

00:12:28.030 --> 00:12:29.530
if it finds this location

00:12:29.530 --> 00:12:31.330
matches where this Anchor
is supposed to be,

00:12:31.330 --> 00:12:32.815
it's going to Render
it on the screen.

00:12:32.815 --> 00:12:35.470
So that's all that's happening
in Anchor looked up.

00:12:35.470 --> 00:12:39.250
So it like looks, it checks,
I've received session,

00:12:39.250 --> 00:12:42.025
I have the frame that I'm
getting from the camera,

00:12:42.025 --> 00:12:44.050
correlates the data it matches,

00:12:44.050 --> 00:12:45.895
it'll generate your Anchor for you.

00:12:45.895 --> 00:12:49.720
So I honestly thought

00:12:49.720 --> 00:12:52.315
this would be a lot more complicated.
I'm going to be very honest.

00:12:52.315 --> 00:12:53.905
I thought I'll have
to do rocket science,

00:12:53.905 --> 00:12:56.230
like figure out ML and go and

00:12:56.230 --> 00:13:00.085
learn what these Anchor points
are and understand,

00:13:00.085 --> 00:13:03.145
it's reading all this frame data,
what do I do with it.

00:13:03.145 --> 00:13:05.185
You don't have to do much.

00:13:05.185 --> 00:13:07.135
The team is amazing.

00:13:07.135 --> 00:13:11.965
All you have to do, just pull in
the awesome [inaudible] package,

00:13:11.965 --> 00:13:13.945
it does all of it for you.

00:13:13.945 --> 00:13:15.670
If you're curious on
how it's working,

00:13:15.670 --> 00:13:17.440
just go explore the package,

00:13:17.440 --> 00:13:20.155
go check out the docs,
checkout the API docs,

00:13:20.155 --> 00:13:22.090
amazing, really, really well done.

00:13:22.090 --> 00:13:25.330
I was able to make all of
these samples by just reading

00:13:25.330 --> 00:13:26.710
the documentation and following

00:13:26.710 --> 00:13:28.645
their Native sample
reports, that's it.

00:13:28.645 --> 00:13:31.240
I didn't do any fancy
rocket science over here.

00:13:31.240 --> 00:13:34.660
I'm not a great Xamarin delve,
all of you guys are.

00:13:34.660 --> 00:13:37.330
It was amazingly simple how I was

00:13:37.330 --> 00:13:39.385
able to implement
this whole thing, I loved it.

00:13:39.385 --> 00:13:43.510
So there's a lot more of
the code and like I said,

00:13:43.510 --> 00:13:45.115
I cannot share these,

00:13:45.115 --> 00:13:47.365
the whole sample report
with you right now.

00:13:47.365 --> 00:13:48.955
But MVPs you can have a look at it.

00:13:48.955 --> 00:13:50.830
But I promise you early August,

00:13:50.830 --> 00:13:52.090
as soon as everything is public,

00:13:52.090 --> 00:13:54.595
this whole report goes public
and you can all pay along.

00:13:54.595 --> 00:13:57.610
Please give me PRs and fix
my random models for me,

00:13:57.610 --> 00:14:00.050
it's my humble request.

00:14:00.150 --> 00:14:04.675
Let me see if there was anything
else that I wanted to show.

00:14:04.675 --> 00:14:07.210
Yeah. So I had this question, right?

00:14:07.210 --> 00:14:09.115
When I was writing
this whole thing, like I said,

00:14:09.115 --> 00:14:11.740
if you're new like me
and have no idea on

00:14:11.740 --> 00:14:14.455
how the ARKit works or ARCore works

00:14:14.455 --> 00:14:17.890
or how a Xamarin support
for ARKit and ARCore is,

00:14:17.890 --> 00:14:21.070
I legit just went and

00:14:21.070 --> 00:14:25.210
read these two blog posts and
I have links to all of this.

00:14:25.210 --> 00:14:27.130
So this is Jon Dick in

00:14:27.130 --> 00:14:29.320
the Xamarin Android at
Xamarin Component Team.

00:14:29.320 --> 00:14:33.355
This is his blog posts on how
Xamarin works with ARCore.

00:14:33.355 --> 00:14:34.705
He walks through the whole thing,

00:14:34.705 --> 00:14:39.070
it's super simple, talks
about how the API basics are.

00:14:39.070 --> 00:14:41.950
Like I said, I love the fact
that was very similar between

00:14:41.950 --> 00:14:43.270
the two platforms and that's where I

00:14:43.270 --> 00:14:44.740
think the understanding
was easy for me.

00:14:44.740 --> 00:14:47.005
But it literally is the sessions

00:14:47.005 --> 00:14:50.260
that is basically all the frames
coming in through the camera.

00:14:50.260 --> 00:14:52.030
Each of the Native scates literally

00:14:52.030 --> 00:14:53.260
just like scans through the area,

00:14:53.260 --> 00:14:54.880
look for flat surfaces
and you can see

00:14:54.880 --> 00:14:56.875
like cool little dots
come up that show you,

00:14:56.875 --> 00:14:57.970
okay, yes it's figured out,

00:14:57.970 --> 00:14:59.830
these are the surfaces.

00:14:59.830 --> 00:15:01.600
So there's the HitTest,

00:15:01.600 --> 00:15:03.940
which is the same in
both basically just does

00:15:03.940 --> 00:15:06.640
a mathematical calculation
within the coordinates,

00:15:06.640 --> 00:15:10.810
to see this is where I'm
supposed to place the Anchor.

00:15:10.810 --> 00:15:13.585
Yeah. It's super simple.

00:15:13.585 --> 00:15:17.995
This was the Android AR
walk-through and we have a,

00:15:17.995 --> 00:15:21.850
let's see if, yes
the website is open for me.

00:15:21.850 --> 00:15:24.985
This is the similar walk through.

00:15:24.985 --> 00:15:27.970
So we have an iOS 11
ARKit blog posts,

00:15:27.970 --> 00:15:29.980
but this is iOS 12 ARKit blog post,

00:15:29.980 --> 00:15:31.990
the updated one and same process.

00:15:31.990 --> 00:15:33.610
Larry walks through the whole thing,

00:15:33.610 --> 00:15:35.560
his sample code is amazing,

00:15:35.560 --> 00:15:38.260
his Rendered model is a lot
more prettier than mine,

00:15:38.260 --> 00:15:40.630
because he actually
got Xamagon's on it.

00:15:40.630 --> 00:15:43.225
If you notice the name of
that app is Xamagon hunt.

00:15:43.225 --> 00:15:46.060
I failed you-all, I
couldn't get my Xamagon on.

00:15:46.060 --> 00:15:49.250
But there are blue boxes,
I promise you.

00:15:50.190 --> 00:15:52.690
Yeah. Again, I literally just read

00:15:52.690 --> 00:15:54.940
these two blog posts and I was
able to implement the whole thing.

00:15:54.940 --> 00:15:56.320
So no rocket science.

00:15:56.320 --> 00:15:59.065
I'm super happy, I hope
it makes you happy.

00:15:59.065 --> 00:16:02.920
Okay. So let me show
you what the app does.

00:16:02.920 --> 00:16:09.325
All right. This is

00:16:09.325 --> 00:16:15.560
the moment of terror for me always.

00:16:24.150 --> 00:16:26.950
This is the first time I'm
doing it with this device,

00:16:26.950 --> 00:16:29.570
so I guess that's why it's.

00:16:31.860 --> 00:16:38.800
Okay. Let's unlock this, all right.

00:16:38.800 --> 00:16:42.595
So this is my personal device,

00:16:42.595 --> 00:16:44.080
so please ignore all the messages my

00:16:44.080 --> 00:16:46.520
mother's is trying to
send to me right now.

00:16:49.680 --> 00:16:52.780
This is the first sample
that I showed you.

00:16:52.780 --> 00:16:54.940
So this is the sample in
the report that will be provided

00:16:54.940 --> 00:16:57.610
as part of the Azure
spatial anchor sample.

00:16:57.610 --> 00:17:00.580
This is in the same format as
all the other native samples,

00:17:00.580 --> 00:17:02.680
so in case you're confused
on what's going on,

00:17:02.680 --> 00:17:03.955
you can always correlate,

00:17:03.955 --> 00:17:05.800
this is how they did
it in Native Android,

00:17:05.800 --> 00:17:08.035
this is what's happening in
the Xamarin Android version.

00:17:08.035 --> 00:17:12.250
So I m going to go
into the shared demo,

00:17:12.250 --> 00:17:14.335
because that's what
we're doing right now.

00:17:14.335 --> 00:17:16.510
Let's see if I can get this to work.

00:17:16.510 --> 00:17:21.880
So I should have
probably rehearsed this,

00:17:21.880 --> 00:17:23.140
I should have tried
this out, shouldn't

00:17:23.140 --> 00:17:25.735
I? Okay, I'm going to hit "Create".

00:17:25.735 --> 00:17:27.640
I have faith. Okay. You can

00:17:27.640 --> 00:17:29.785
see the little progress
bar at the top.

00:17:29.785 --> 00:17:33.835
That little animation goes away.

00:17:33.835 --> 00:17:35.485
Like I said alphabet with me,

00:17:35.485 --> 00:17:37.420
when you move the device it's
supposed to just say like hey,

00:17:37.420 --> 00:17:38.890
move the device around, you know,

00:17:38.890 --> 00:17:41.950
just try to pick up data points
and scan the environments

00:17:41.950 --> 00:17:45.955
so it understands where it
can or cannot place objects.

00:17:45.955 --> 00:17:49.060
No, I reset my whole progress.

00:17:49.060 --> 00:17:53.320
No. Please watch me

00:17:53.320 --> 00:17:57.115
awkwardly not move from
this area. Let me try the table.

00:17:57.115 --> 00:18:03.595
Awesome. Can I place it here?

00:18:03.595 --> 00:18:07.720
No. Can I place it here? All right.

00:18:07.720 --> 00:18:10.465
Giant blue ball right in front of me.

00:18:10.465 --> 00:18:14.785
So the changing in colors is
just to show that yes success.

00:18:14.785 --> 00:18:19.765
Yellow the Native system. Yeah sorry.

00:18:19.765 --> 00:18:22.030
It goes away because it's
done with the process but

00:18:22.030 --> 00:18:24.370
just if you remember
that little yellow ball,

00:18:24.370 --> 00:18:26.170
it was yellow to say
that the Native system

00:18:26.170 --> 00:18:28.150
has dropped the Anchor.

00:18:28.150 --> 00:18:30.325
The green means saving was a success.

00:18:30.325 --> 00:18:32.485
This is Anchor number 12.

00:18:32.485 --> 00:18:36.670
So I'm not going to use this
to look at that anchor.

00:18:36.670 --> 00:18:38.275
We are going to play my game now.

00:18:38.275 --> 00:18:40.300
So let's switch over.

00:18:40.300 --> 00:18:43.010
I'm going to kill this.

00:18:43.620 --> 00:18:46.705
Let's move over to QuickTime.

00:18:46.705 --> 00:18:49.810
Anyone remember the Anchor number.

00:18:49.810 --> 00:18:52.285
Twelve? Twelve, yes.

00:18:52.285 --> 00:18:59.480
Okay. This is what I have to
remember the Anchor numbers.

00:19:00.510 --> 00:19:02.635
You have a device.

00:19:02.635 --> 00:19:04.945
No, you don't have my face.

00:19:04.945 --> 00:19:11.570
Let's go to my phone. All right.

00:19:13.320 --> 00:19:17.335
Interesting. Did I go delete
my own app? No, I did not.

00:19:17.335 --> 00:19:21.925
Okay. Here it is. So
this is Xamagon Hunt.

00:19:21.925 --> 00:19:23.470
If any of you downloaded
it right now,

00:19:23.470 --> 00:19:25.330
this is what you are seeing.

00:19:25.330 --> 00:19:27.310
It's so informative, isn't it?

00:19:27.310 --> 00:19:30.155
It only explains how this game
works. No, it does not.

00:19:30.155 --> 00:19:31.710
The way the game works is,

00:19:31.710 --> 00:19:34.770
if you click on that little thing
that says, "List of Anchors?

00:19:34.770 --> 00:19:37.200
Click Me". If you click in there,

00:19:37.200 --> 00:19:39.165
it goes to my GitHub repo right now.

00:19:39.165 --> 00:19:41.590
If I scroll it down, I have a list of

00:19:41.590 --> 00:19:45.145
Anchors and a little explanation
on how the game works.

00:19:45.145 --> 00:19:47.260
But I'm going to show you how
the game works right now.

00:19:47.260 --> 00:19:50.200
But if you forget, you can
always go there and read it.

00:19:50.200 --> 00:19:54.115
The way it works right now
is you hit "Start" here.

00:19:54.115 --> 00:19:57.550
You see a little text box that
says "Enter Anchor Value".

00:19:57.550 --> 00:19:59.020
So I did number 12 right now,

00:19:59.020 --> 00:20:01.330
so I'm going to go put in number 12,

00:20:01.330 --> 00:20:03.550
and I'm going to "Tap" to locate.

00:20:03.550 --> 00:20:05.110
You can already see
that it will debug

00:20:05.110 --> 00:20:07.570
buttons of ARKit in the background.

00:20:07.570 --> 00:20:09.175
It's already scanning the space.

00:20:09.175 --> 00:20:11.980
So I'm going to hit "Tap
to Locate" and pray to

00:20:11.980 --> 00:20:14.110
all the gods that I know that it

00:20:14.110 --> 00:20:17.215
finds my ball. So let's move this.

00:20:17.215 --> 00:20:21.115
Guys, it found my blue ball,

00:20:21.115 --> 00:20:22.960
it's now turned into a sphere.

00:20:22.960 --> 00:20:24.895
But now, let me see
your ball whatever.

00:20:24.895 --> 00:20:26.695
So this is supposed to be a Xamagon.

00:20:26.695 --> 00:20:29.350
I swear, I tried really, really hard.

00:20:29.350 --> 00:20:31.000
I need to go talk to my sister who

00:20:31.000 --> 00:20:33.580
is actually a graphic designer,
learn how this works.

00:20:33.580 --> 00:20:36.430
But so yeah, that's the game.

00:20:36.430 --> 00:20:38.980
We're all doing it because in real,

00:20:38.980 --> 00:20:40.930
there's no marks on here.

00:20:40.930 --> 00:20:45.295
So apart from how cool
and fancy this looks,

00:20:45.295 --> 00:20:47.470
all I want to highlight is,

00:20:47.470 --> 00:20:49.840
this is the power of
Azure Spatial Anchors.

00:20:49.840 --> 00:20:52.870
So now, imagine all of you
have that app right now,

00:20:52.870 --> 00:20:54.280
you can come up on this stage

00:20:54.280 --> 00:20:56.770
and you can look at this anchor
right now yourself.

00:20:56.770 --> 00:20:59.560
Number 12 is the one on
the speaker's podium.

00:20:59.560 --> 00:21:04.210
So it is really

00:21:04.210 --> 00:21:06.910
cool for all those actual
enterprise applications

00:21:06.910 --> 00:21:08.080
that I was describing about.

00:21:08.080 --> 00:21:11.155
It's really cool to make Virtual
Treasure Hunts for your friends.

00:21:11.155 --> 00:21:14.620
It's really cool to make Pokemon
Go if you want of your own.

00:21:14.620 --> 00:21:16.780
But conceptually, it was really,

00:21:16.780 --> 00:21:18.055
really simple to implement.

00:21:18.055 --> 00:21:20.560
So if I were to just
now look back and

00:21:20.560 --> 00:21:23.695
think what I had to go through
to make this, it wasn't much.

00:21:23.695 --> 00:21:26.185
Go to those Spatial Anchors portal,

00:21:26.185 --> 00:21:28.660
start a new trial,

00:21:28.660 --> 00:21:31.405
open up a new Xamarin project,

00:21:31.405 --> 00:21:33.745
add in the NuGet packages.

00:21:33.745 --> 00:21:36.085
If I were to go by
the native approach,

00:21:36.085 --> 00:21:37.960
which honestly I think was

00:21:37.960 --> 00:21:40.300
much more value than
the Forms Approach was,

00:21:40.300 --> 00:21:43.555
now that I did both approaches
to give you my honest feedback,

00:21:43.555 --> 00:21:46.600
I think the Native Approach
was really, really nice.

00:21:46.600 --> 00:21:49.510
So going there, setup ARKit,

00:21:49.510 --> 00:21:51.295
have it render your frames,

00:21:51.295 --> 00:21:53.050
setup ARCore, have it
render your frames,

00:21:53.050 --> 00:21:56.440
as soon as you can get
Local Anchors working, that's it.

00:21:56.440 --> 00:21:58.030
Hookup Azure Spatial Anchors,

00:21:58.030 --> 00:22:00.910
set up a back-end to
save your anchor points,

00:22:00.910 --> 00:22:02.260
and share with you friends,

00:22:02.260 --> 00:22:05.020
which all of you are now of me.

00:22:05.020 --> 00:22:11.320
So if you now want to genuinely
play the game with me,

00:22:11.320 --> 00:22:15.685
to figure out whether Anchors are
in around the conference space,

00:22:15.685 --> 00:22:18.700
so if you just look at this list,

00:22:18.700 --> 00:22:20.290
I went in and put in the number.

00:22:20.290 --> 00:22:21.310
You just have to go in and put in

00:22:21.310 --> 00:22:23.095
that number and be in that space,

00:22:23.095 --> 00:22:24.775
move the camera around a bit.

00:22:24.775 --> 00:22:27.145
I know of two known issues: Number 1,

00:22:27.145 --> 00:22:28.510
the app can crash sometimes,

00:22:28.510 --> 00:22:32.425
I apologize in advance
if that crashes on you.

00:22:32.425 --> 00:22:34.120
The second issue as seen is,

00:22:34.120 --> 00:22:35.650
if you're too close to the object,

00:22:35.650 --> 00:22:37.045
sometimes it doesn't detect it,

00:22:37.045 --> 00:22:39.340
but that just might have
been me because I can't do

00:22:39.340 --> 00:22:42.355
math and there's a lot of
matrix math you have to do for this.

00:22:42.355 --> 00:22:44.860
So I might have just
picked up a wrong X,

00:22:44.860 --> 00:22:47.380
Y coordinate and that's why
it's not picking it up,

00:22:47.380 --> 00:22:49.900
but just walk around the area.

00:22:49.900 --> 00:22:52.555
So the descriptions are all in there.

00:22:52.555 --> 00:22:55.870
So the Blue Door Cafe was my first,

00:22:55.870 --> 00:22:57.430
first test, literally
the day I landed

00:22:57.430 --> 00:22:59.695
just to see if the concept
works and it did.

00:22:59.695 --> 00:23:02.950
So the other Anchors are all
around the space over here,

00:23:02.950 --> 00:23:04.480
there's two with the Microsoft booth.

00:23:04.480 --> 00:23:06.190
So if you come and find

00:23:06.190 --> 00:23:07.900
them at the booth and come
and show me a screenshot,

00:23:07.900 --> 00:23:09.100
you're going to make me really,

00:23:09.100 --> 00:23:11.995
really happy and I
will appreciate that.

00:23:11.995 --> 00:23:14.785
Yes, so please play the game.

00:23:14.785 --> 00:23:18.310
Like I said, I promised as soon
as a Spatial Anchors is live,

00:23:18.310 --> 00:23:21.085
my code will be live, and
you can all join along.

00:23:21.085 --> 00:23:26.060
I'm going to switch back
to the presentation.

00:23:27.870 --> 00:23:31.630
So key takeaways, because I love when

00:23:31.630 --> 00:23:33.190
everyone else has
these in these slides

00:23:33.190 --> 00:23:35.260
and I want to be
a cool presenter now.

00:23:35.260 --> 00:23:38.020
So the actual Anchor Object.

00:23:38.020 --> 00:23:40.000
Sharing it between the two platforms

00:23:40.000 --> 00:23:42.220
is not complicated
because like I said,

00:23:42.220 --> 00:23:43.570
Spatial Anchors has been really smart

00:23:43.570 --> 00:23:45.190
about just trying to
make our life easy,

00:23:45.190 --> 00:23:48.325
because they try to share it
across a lot of different devices.

00:23:48.325 --> 00:23:51.250
So the two main bits

00:23:51.250 --> 00:23:53.185
you'll constantly be keeping

00:23:53.185 --> 00:23:55.030
track of in your code
is the position,

00:23:55.030 --> 00:23:57.490
so that's literally where
the anchor was dropped.

00:23:57.490 --> 00:24:00.310
Each native platform provides
all this information for you.

00:24:00.310 --> 00:24:02.140
You're not doing
any crazy things to get it.

00:24:02.140 --> 00:24:03.910
It's just something
you have to knowingly

00:24:03.910 --> 00:24:06.565
extract from that local object.

00:24:06.565 --> 00:24:09.475
Just the information,
what you wanted to render

00:24:09.475 --> 00:24:12.925
which can also be shared between
the platform that you want.

00:24:12.925 --> 00:24:15.520
So for me, it's just
the colors change

00:24:15.520 --> 00:24:17.380
based on what state you're in.

00:24:17.380 --> 00:24:19.510
I do yellow, you dropped it,

00:24:19.510 --> 00:24:21.025
it's processing the point.

00:24:21.025 --> 00:24:24.265
Green at success, it's
saved your point.

00:24:24.265 --> 00:24:28.570
Another thing you need to
remember is the Power Platform.

00:24:28.570 --> 00:24:31.450
Like I said, ARKit, ARCore, SceneKit,

00:24:31.450 --> 00:24:35.950
SceneView in Android,

00:24:35.950 --> 00:24:39.265
they already do a lot of
the bulk of the work for you.

00:24:39.265 --> 00:24:41.260
So it's literally just
initializing those views and

00:24:41.260 --> 00:24:44.635
just feeding and
reading data from it.

00:24:44.635 --> 00:24:47.320
Then like I was talking
about, you move around.

00:24:47.320 --> 00:24:49.270
You have to have a minimum amount of

00:24:49.270 --> 00:24:52.120
data before it can
place objects for you,

00:24:52.120 --> 00:24:55.060
so that's a little progress
that was showing up.

00:24:55.060 --> 00:24:56.800
So you move around

00:24:56.800 --> 00:24:58.885
the space that you're in and
you collect all that data,

00:24:58.885 --> 00:25:02.210
then you can place and
remove your object.

00:25:02.490 --> 00:25:05.200
In my ASA Common that I showed you,

00:25:05.200 --> 00:25:06.340
that common shared folder,

00:25:06.340 --> 00:25:07.990
that's where I have
all the rest API calls

00:25:07.990 --> 00:25:10.300
to give the Anchor information

00:25:10.300 --> 00:25:15.235
to Spatial Anchors and also put
it in my Cosmos DB right now.

00:25:15.235 --> 00:25:17.260
Like I said, shared service,

00:25:17.260 --> 00:25:18.310
you can go crazy with it.

00:25:18.310 --> 00:25:19.450
The samples give you

00:25:19.450 --> 00:25:22.795
an app service example
and a Cosmos DB example.

00:25:22.795 --> 00:25:25.255
I literally just did everything
that was in the sample code.

00:25:25.255 --> 00:25:27.595
I have not done anything
special of my own over here.

00:25:27.595 --> 00:25:31.270
This is what will be available
when this goes live.

00:25:31.270 --> 00:25:35.035
So like I said, you can
add a login control

00:25:35.035 --> 00:25:38.605
if you want to do that shared
Azure DevOps board maybe,

00:25:38.605 --> 00:25:40.960
and only give people in
your team access to,

00:25:40.960 --> 00:25:43.030
"Hey, look at what's
going on in the board?"

00:25:43.030 --> 00:25:45.760
Integrated IoT devices.
There's a lot to do,

00:25:45.760 --> 00:25:47.200
this space is amazing.

00:25:47.200 --> 00:25:49.885
So I jumped the gun on this.

00:25:49.885 --> 00:25:52.090
But like I was saying
in the beginning,

00:25:52.090 --> 00:25:54.565
our examined support is coming.

00:25:54.565 --> 00:25:57.010
It will be out early August.

00:25:57.010 --> 00:26:00.340
MVP is again watching online
in the room right now.

00:26:00.340 --> 00:26:03.055
You can go to this aka.ms link,

00:26:03.055 --> 00:26:04.555
it's a form fill out.

00:26:04.555 --> 00:26:06.160
Azure Spatial Anchors team

00:26:06.160 --> 00:26:08.170
will reach out to you
and give you access.

00:26:08.170 --> 00:26:09.820
So you'll get the early data bits

00:26:09.820 --> 00:26:11.590
that's literally what's driving

00:26:11.590 --> 00:26:13.390
these apps right now, that I demoed.

00:26:13.390 --> 00:26:15.700
You'll get access to
that sample code, again,

00:26:15.700 --> 00:26:19.000
which is literally driving
what I showed right now.

00:26:19.000 --> 00:26:22.810
So early August, everybody
else will get access.

00:26:22.810 --> 00:26:24.190
All of this will go live.

00:26:24.190 --> 00:26:27.160
They're working really hard on
the documents and on the sample.

00:26:27.160 --> 00:26:29.290
So MVPs, if you are opting into

00:26:29.290 --> 00:26:31.825
get access, please provide feedback.

00:26:31.825 --> 00:26:33.460
I've been giving
feedback to the team.

00:26:33.460 --> 00:26:34.510
They love hearing feedback,

00:26:34.510 --> 00:26:37.670
they just make everyone's
life a lot better.

00:26:37.830 --> 00:26:40.780
So the public launch for Xamarin.iOS

00:26:40.780 --> 00:26:43.240
and Xamarin.Android
is coming in August.

00:26:43.240 --> 00:26:47.110
So questions? If you just want,

00:26:47.110 --> 00:26:49.730
come up to the mic so
everyone can hear.

00:26:50.490 --> 00:26:53.500
>> Does the SDK provide

00:26:53.500 --> 00:26:55.690
the custom renderers for the view in

00:26:55.690 --> 00:26:58.060
each platform also, or you
have to do that yourself?

00:26:58.060 --> 00:27:01.060
>> So are you talking about that
Forms sample that I was showing?

00:27:01.060 --> 00:27:04.315
>> Yeah, with the dots
in the camera view.

00:27:04.315 --> 00:27:08.020
>> Okay. Got it. So those are part

00:27:08.020 --> 00:27:09.730
of ARCore and ARKit that

00:27:09.730 --> 00:27:11.890
actually get shipped
with Xamarin right now.

00:27:11.890 --> 00:27:15.490
So you don't even need
the Spatial Anchors support.

00:27:15.490 --> 00:27:18.775
If you want to just make
a simple Local AR-based app,

00:27:18.775 --> 00:27:21.550
the two blog posts that I showed,

00:27:21.550 --> 00:27:23.320
they talk about how
we already have that

00:27:23.320 --> 00:27:25.120
baked in Xamarin right now.

00:27:25.120 --> 00:27:28.135
So when you have Xamarin.iOS and
Xamarin.Android in your projects,

00:27:28.135 --> 00:27:31.345
you can literally go
initialize AR view,

00:27:31.345 --> 00:27:33.490
and it'll get all those dots
and everything,

00:27:33.490 --> 00:27:35.785
and you can just start
dropping local Anchors.

00:27:35.785 --> 00:27:39.610
So that whole section of the app
is driven completely by them.

00:27:39.610 --> 00:27:41.665
So it's already in there,

00:27:41.665 --> 00:27:44.360
we have support for it right now.

00:27:44.700 --> 00:27:48.350
Any other questions? Yeah, sure.

00:27:51.630 --> 00:27:55.870
>> Does it use GPS at all
so it can track everything?

00:27:55.870 --> 00:27:57.280
Because I know if
you're in a building,

00:27:57.280 --> 00:27:58.270
I don't know how it would

00:27:58.270 --> 00:27:59.800
differentiate between
the different anchors.

00:27:59.800 --> 00:28:03.070
>> Great question. So I'm not
sure about the intricacies of

00:28:03.070 --> 00:28:07.735
how and what data
the actual ASA system tracks.

00:28:07.735 --> 00:28:10.810
But that Cosmos DB back-end
that I was talking about,

00:28:10.810 --> 00:28:14.635
you could always add in columns
and track that data yourself.

00:28:14.635 --> 00:28:16.780
That's how I would actually
go about with version

00:28:16.780 --> 00:28:19.195
2 of this game and tie it and have.

00:28:19.195 --> 00:28:20.590
So right now, I'm not storing

00:28:20.590 --> 00:28:24.220
GPS location because
I don't want to GDPR,

00:28:24.220 --> 00:28:25.915
I would have to give
all of you privacy,

00:28:25.915 --> 00:28:27.760
"Hey, I'm taking GPS location."

00:28:27.760 --> 00:28:33.220
But I think if I were to have to
recreate a Pokemon Go type game,

00:28:33.220 --> 00:28:35.440
maybe it got at
monkey hunt or something,

00:28:35.440 --> 00:28:38.950
but yeah, I will probably
have track GPS location.

00:28:38.950 --> 00:28:40.960
Then I can actually
give more notification

00:28:40.960 --> 00:28:43.075
than information in the app itself,

00:28:43.075 --> 00:28:45.655
"Oh, you're getting warmer
or you're getting colder."

00:28:45.655 --> 00:28:47.665
This is close because yeah,

00:28:47.665 --> 00:28:51.650
I mean you can always correlate
that data I would think, so yeah.

00:28:52.410 --> 00:28:54.850
>> So when you're
dropping the shapes,

00:28:54.850 --> 00:28:57.400
are you dropping them based on like

00:28:57.400 --> 00:29:01.345
you're physically dropping
the shape with another device?

00:29:01.345 --> 00:29:03.550
So you're dropping the shape with

00:29:03.550 --> 00:29:05.920
another mobile device with
that's running the Xamarin app,

00:29:05.920 --> 00:29:09.250
and then you're catching
the shape with another device.

00:29:09.250 --> 00:29:11.170
Instead of dropping it with the GPS

00:29:11.170 --> 00:29:14.980
and some elevation data
or whatever [inaudible]

00:29:14.980 --> 00:29:17.380
>> Yeah. So that's
Azure Spatial Anchors,

00:29:17.380 --> 00:29:20.830
the service tracks and
figures all that out for you.

00:29:20.830 --> 00:29:23.020
So you don't have to
think about, "Oh,

00:29:23.020 --> 00:29:24.340
for this X and Y coordinates,

00:29:24.340 --> 00:29:26.950
do I also need to
capture depth data?"

00:29:26.950 --> 00:29:30.985
Or, "Is it on the floor versus on
the stage versus on the sail?"

00:29:30.985 --> 00:29:33.385
They figure all that out for you.

00:29:33.385 --> 00:29:36.670
All you're doing and providing
the data system is just the unique,

00:29:36.670 --> 00:29:38.590
they give you
a unique string that they

00:29:38.590 --> 00:29:40.300
attach to each of
these anchor values,

00:29:40.300 --> 00:29:41.935
and that's all you
provide to the service.

00:29:41.935 --> 00:29:44.770
That's just a string and
that retrieve and send

00:29:44.770 --> 00:29:48.115
API call that if you see in
the code, that's all that does.

00:29:48.115 --> 00:29:51.910
So the system does all
of the magics for you.

00:29:51.910 --> 00:29:55.120
You just literally just
in the app itself,

00:29:55.120 --> 00:29:56.665
you're just doing
touches and you just

00:29:56.665 --> 00:29:58.900
track where the user dropped it,

00:29:58.900 --> 00:30:02.150
and then the system
handles all of it for you.

00:30:03.360 --> 00:30:07.150
Awesome. Anymore questions?

00:30:07.150 --> 00:30:09.460
Now, are you are going
to play my game?

00:30:09.460 --> 00:30:10.040
>> Yes.

00:30:10.040 --> 00:30:12.025
>> Yes, awesome. Everyone online,

00:30:12.025 --> 00:30:15.040
I'm going to have a version
up for you very, very soon.

00:30:15.040 --> 00:30:17.290
So again, thank you-all for coming.

00:30:17.290 --> 00:30:18.430
If you have anymore questions,

00:30:18.430 --> 00:30:20.980
you want to discuss
some other cool ideas or how

00:30:20.980 --> 00:30:23.830
I could make this app behave better,

00:30:23.830 --> 00:30:25.465
please come and share it with me.

00:30:25.465 --> 00:30:28.120
I'll have the slides up to share.

00:30:28.120 --> 00:30:31.960
But again, just want to show
that link for MVP access.

00:30:31.960 --> 00:30:33.730
If you want to sign up, please do go

00:30:33.730 --> 00:30:36.130
ahead and we'll get you
access to those data bits.

00:30:36.130 --> 00:30:38.590
Early August, friends, early August,

00:30:38.590 --> 00:30:40.630
everyone will get access
to the Xamarin bits.

00:30:40.630 --> 00:30:43.400
So yeah, thank you so much.

