#HoloLens – #URHOSharp Template para proyectos en Visual Studio 2015

Hola !

Post rápido de domingo que hoy he terminado muerto después de la media maratón de las cataratas del Niágara. Gracias a Egor Bogatob (@egorbo)  ya tenemos un template específico para crear proyectos UWP para Hololens con URHOSharp.

holo-urhosharp-vs-template-02

Si bien el tipo de proyecto es Universal Windows Platform, la forma en la que se inicia el mismo es diferente a la que tenemos en la plantilla de Visual Studio. En este caso, tenemos que crear una clase de tipo HoloApplication e instanciar la misma desde el Main() de nuestra app.

clipboard02

Hay más detalles a tener en cuenta, como el modelo que se usar para poder inicializar los elementos 3D o animaciones que usaremos en la App para Hololens. Pero bueno, no es momento de hablar de esto … post rápido !

Saludos @ Toronto

El Bruno

References

#Windows10 – Device Portal Wrapper en #NuGet y #GitHub

Hola !

Hace algún tiempo escribí sobre las capacidades de Device Portal, en especial para Hololens. En mi caso, acciones como el monitoring remoto, la capacidad de desplegar apps y poder reinicar un device, son muy útiles en el día a día como developer.

Hoy me entero gracias al blog de Windows Developer, que el proyecto “Windows Device Portal Wrapper” ya está lo suficientemente maduro como para que esté publicado en GitHub y como un paquete Nuget.

Lo interesante de este proyecto, es que provee una capa de los servicios REST sobre los que se apoya el Device Portal. Este proyecto está creado en C# y se puede utilizar desde apps WPF o UWP.

La app de ejemplo que se incluye en el proyecto, nos muestra como conectar a un device remoto, y una vez conectados como interactuar con el mismo. Por ejemplo para reiniciarlo o para obtener la información de red del device.

Clipboard01.png

Navegando un poco más, me encuentro con que devices como Hololens o XBoxOne poseen servicios especiales para cada uno. Por ejemplo, en las Device Portal API de Hololens (link), encontramos operaciones para comenzar, detener o descargar una grabación holográfica.

clipboard02

La verdad es que el momento de lanzamiento es perfecto, ya que hay 2 o 3 tareas que creo que puedo automatizar gracias a estas APIs y que me ahorrarán algo de tiempo en el futuro.

Saludos @ Toronto

El Bruno

References

#Hololens – HoloToolkit Sharing: compartir Hologramas entre diferentes devices (Post 1 de N o lo que me cueste hacerlo funcionar …)

Hola !

Ahora que he encontrado un 2do set de Hololens para trabajar aquí en Toronto, llega el momento de volver a Unity3D y a HoloToolkit. Dentro del mismo, es momento de probar una de las features menos documentadas que hay: Sharing Holograms.

Una vez que hemos importado (de la forma correcta) el paquete de HoloToolkit Unity, podemos ver dentro de los Assets la carpeta Sharing.

Clipboard03.jpg

Este es el elemento que debemos agregar a nuestro proyecto de Unity para que el mismo tenga capacidades de “Sharing” con otras apps en Hololens. En las propiedades de este elemento vemos que el mismo utiliza un par de clases interesantes:

  • SharingStage.cs
  • SharingSessionTracker.cs
  • AutoJoinSession.cs
  • CustomMessages.cs

clipboard05

Como siempre, al faltar documentación relevante, os recomiendo ver el código de las mismas ya que es la forma más simple de comprender cómo funciona esta funcionalidad. Por ahora solo remarcar las propiedades de [Sharing Stage]

  • Client Role: define el tipo de cliente para una app de Sharing. Segun la documentación de la clase C#:

/// Set whether this app should be a Primary or Secondary client.
/// Primary: Connects directly to the Session Server, can create/join/leave sessions
/// Secondary: Connects to a Primary client. Cannot do any session management

  • Server Address y Server Port: La dirección IP y puerto del servidor que se utiliza para coordinar el sharing de información entre varios devices
  • Auto Discover Server: Solo con habilitar este check, nuestra app debería poder descubrir automáticamente un Sharing Server en la misma subnet. En mi caso, y tal vez por las restricciones de mi red local, no he podido descubrirlo automáticamente, por lo que he tenido que configurar a mano la dirección IP y el puerto.

Después de leer todo esto, llega el momento de preguntarse donde está Sharing Service. El server es un exe escondido en las entrañas del paquete de HoloToolkit.

$\HoloToolkit-Unity-master\External\HoloToolkit\Sharing\Server\SharingService.exe

Ahora ya podemos lanzar el executable y tener nuestro Sharing Service Up and Running.

Nota: Hay una opción para lanzar Sharing Service desde el menú de Unity. No he conseguido que funcione.

clipboard07

Ahora bien, más novedades, existen 2 formas de lanzar el Sharing Service

  • local, funcionando en modo app
  • servicio, funcionando como un servicio de Windows

clipboard09

Para este ejemplo lanzaré la app en modo local. En este momento podemos ver lo siguiente en la consola de comando

Clipboard11.jpg

C:\Hololens\Sharing\Server>SharingService.exe -local
Running Sharing Service locally. Enter ‘q’ to quit.
SharingService: ** Logging Session Began at 23:24:59, 10-6-2016
SharingService: ***********************************
SharingService: ****** Sharing Service OnStart ******
SharingService: ***********************************
SharingService: Server Info:
Build Version: 1.1.0.0
Schema Version: 15
SharingService: Listening for session list connections on port 20602 of all network devices of the local machine.
SharingService: Local IP addresses are:
SharingService: 172.16.80.1
SharingService: 192.168.0.19
SharingService: 169.254.80.80
SharingService: Created Session “Default” with ID 0 on port 20601

Cuando lanzamos una app creada que utilize el Asset de Sharing, con los valores correctamente configurados, podremos ver que el server detecta una nueva sesión y comienza a mostrar logs sobre la misma.

clipboard14

Pues bien, en el siguiente post sobre Sharing espero poder mostrar como 2 apps comparten y trabajan sobre un mismo holograma!

Saludos @ Toronto

El Bruno

References

#Windows10 – Virtual Machines with all the tools you need to create #UWP Apps (you only need a Windows 10 Pro licence)

Hello!

I’ve got some amazing and funny plans for today: publish a video about Hololens development or edit and publish a new podcast for NTN. However, some time ago I make a big mistake installing my Windows 10 Dev environment and now I have to pay the price to reinstall everything from scratch.

clipboard02

So before start I remember a few days ago I read an article in the blog of Windows that I thought that it could save me a few minutes:

The Windows Development Team released a series of Virtual Machines with Windows 10 Pro and all the tools necessary to create Universal Windows Platform Apps, updated September 30, 2016.

And the truth is that while I could configure my computer in a weird way to take advantage of these VMs, my experience tell me is best to install the OS and tools from scratch.

So, after my monthly backup Sunday start the process and it’s a shame because besides saving me the Windows 10 installation, also the following software you may have installed in one step:

Bonus: The VMs come ready to be used in different virtualization platforms: Hyper-V, Parallels, VirtualBox, and VMWare.

Greetings @ Toronto

El Bruno

References

#Windows10 – Virtual Machines para crear #UWP Apps listas para ser utilizadas! (solo necesitas una licencia de Windows 10 Pro)

Hola !

Entre los planes para hoy tenía pensado en publicar un vídeo sobre desarrollo con Hololens o un nuevo podcast para NTN. Sin embargo, hace un tiempo no hice bien los deberes instalando Windows 10 y hoy me toca pagar el precio de volver a instalar todo desde cero.

clipboard02

Hace unos días leí una noticia en el blog de Windows que pensé que podría ahorrarme unos minutos:

El lanzamiento de una serie de Virtual Machines con Windows 10 Pro y todas las herramientas necesarias para crear Universal Windows Platform Apps, actualizadas al 30 de Septiembre de 2016.

Y la verdad es que si bien podría configurar mi ordenador en un modo raro para poder aprovechar estas VMs, lo mejor es instalar el SO y las herramientas desde cero.

Así que, después de mi domingo de backup mensual comienzo el proceso y es una pena porque además de ahorrarme la instalación de Windows 10, también podría tener instalado en un paso el siguiente software:

Bonus: Las VMs vienen preparadas para ser utilizadas por varias plataformas de virtualización : Hyper-V, Parallels, VirtualBox, & VMWare.

Saludos @ Toronto

El Bruno

References

#Icons – Download Visual Studio Image Library for free

Hello!

Today I was asked where to get some Office icons, and I remembered some MSDN link where we can find the complete collection of icons and images for Microsoft Visual Studio, Microsoft Windows, Office System, and other Microsoft apps.

After search the download link I was shocked by the size difference in the latest version. For example:

  • The version of VS2011 Image Library.zip, 19.4 MB
  • The version of VS2013 Image Library.zip, 285.6 MB
  • The version of VS2015 Image Library.zip, 2.9 GB

After download the version of VS2015 I found: each icon has different sizes and versions: png, svg and XAML!

 

clipboard02

Xaml versions seems to be created with AiToXaml or some similar tool to export Adobe Illustrator to Xaml.

And, as final comment, the PDF file with the complete list of icons has a size of + 30MBs. There are 4222 icons of various sizes and various formats. An ideal complement to SyncFusion MetroStudio ((and no, don’t have the icon of Hololens)

Greetings @ Toronto

El Bruno

References

#Icons – Descarga Visual Studio Image Library gratis

Hola !

Hoy me preguntaron dónde conseguir algunos de los iconos de las apps de Office, y me acordé de que en MSDN estaba la colección completa de iconos e imágenes de Microsoft Visual Studio, Microsoft Windows, Office System y otras apps.

Después de buscar el link de descarga me llamó la atención la diferencia de tamaño de la última versión. Por ejemplo:

  • La versión de VS2011 Image Library.zip, 19.4 MB
  • La versión de VS2013 Image Library.zip, 285.6 MB
  • La versión de VS2015 Image Library.zip, 2.9 GB

Después de descargar la versión de VS2015 me encontré con que cada icono tiene diferentes tamaños y versiones. Por ejemplo en png, svg y xaml!

clipboard02

Las versiones de Xaml nos dejan claro que han sido creadas con AiToXaml o alguna herramienta similar para exportar de Adobe Illustrator a Xaml.

Finalmente comentar que el pdf con el listado completo de iconos tiene un tamaño de +30MBs con lo que la colección es completa, bastante completa. Son 4222 iconos de varios tamaños y varios formatos. Un complemento ideal para MetroStudio de SyncFusion (Y no, no tienen el icono de Hololens)

Saludos @ Toronto

El Bruno

References

#Hololens – Some APIs will work, other no, and there is no easy way to find it :S

Hello!

It is time to begin to share some experiences developing for Hololens. This post is related to UWP Apps, general base for all devices in Windows 10 family.

While have a base common of features in all the devices, for some features is a good practice to validate if the functionalities are implemented or not in each type of device.

As well, according to the article [Dynamically detecting features with API contracts (10 by 10)], the right way to do this is using the ApiInformation class. The example shared bu the Windows Dev Center team is very easy to read and understand:

using Windows.Foundation.Metadata;

if (ApiInformation.IsTypePresent(“Windows.Media.Playlists.Playlist”))
{
await myAwesomePlaylist.SaveAsAsync( … );
}

The code is self explanatory, if we can use the APIs of Playlist, we have everything ready to go on. In the Hololens scenario, this works very well. Some features like Print or Share, that are not directly available on the platform.
However, we must be careful here. In example: What happens if we want to access the camera from the Hololens and use the CameraCaptureUI class? This class we have an option to see in time real the feed of the camera and take a photo on this.

Note: I know is an inconsistency to use this in the Hololens. Camera will always show what they are seeing. However as an example for the post it comes great!

So, if we use CameraCaptureUI we’ll have the following steps in Hololens:

  • The API CameraCaptureUI will be returned as available in Hololens
  • When we use it, Windows 10 will suggests us to download an app from the Store for this
  • What?

Here is a live sample:

2016 08 23 Hololens CameraCaptureUi

Using this sample code:

Clipboard02

So, for this scenario, validate the availability of an API is not working. Here comes the time of go for an ungly solution

Use AnalyticsInfo.VersionInfo.DeviceFamily to see the type of device where the app is running. In the case of the Hololens this property returns “Windows.Holographic”.

This solution works. And I know, I add a BIG NOTE: As soon as UWP has a better way to validate this type of scenarios, this feature and evidence must be eliminated!

Clipboard06

A kitten and 2 unicorns less thanks to 5 lines of code! Sorry about that 😦

Greetings @ Toronto

El Bruno

References

#Hololens – Validando APIs que funcionan pero que no funcionan :S

Hola !

Es momento de comenzar a compartir algunas experiencias desarrollando para Hololens. Este caso es relacionado con UWP Apps, la base general de apps para todos los devices Windows 10.

Si bien tenemos una base común de features en todos los devices, para algunas cosas es recomendable validar si las funcionalidades están implementadas o no en un tipo especial de dispositivo.

Pues bien, según el artículo [Dynamically detecting features with API contracts (10 by 10)], la forma correcta de hacer esto es utilizando la clase ApiInformation. El ejemplo que nos comparte el equipo de Windows Dev Center es el siguiente:

using Windows.Foundation.Metadata;

if (ApiInformation.IsTypePresent(“Windows.Media.Playlists.Playlist”))
{
await myAwesomePlaylist.SaveAsAsync( … );
}

El código es bastante auto explicativo, si podemos utilizar las APIs de Playlist, pues … tenemos todo listo para seguir. En el caso de las Hololens, esto funciona muy bien, con opciones como Print o Share, que directamente no están disponibles en la plataforma.

Sin embargo, no es oro todo lo que reluce. ¿Qué sucede si queremos acceder a la cámara de las Hololens y utilizar la clase CameraCaptureUI? Esta clase nos brinda una opción para poder ver en tiempo real el feed de la cámara y sacar una foto sobre el mismo.

Aclaración: Es una incoherencia usar esto en las Hololens, lo sé. La cámara mostrará siempre lo que estemos viendo. Sin embargo como ejemplo para el post me viene genial!

Pues bien, cuando utilizamos CameraCaptureUI tenemos el siguiente funcionamiento en las Hololens:

  • La API CameraCaptureUI está disponible en Hololens
  • Al momento de utilizarla, Windows 10 nos sugiere la opción de descargar una app de la Store para esto
  • What ???

Aquí en funcionamiento:

2016 08 23 Hololens CameraCaptureUi

Sobre este código:

Clipboard02

O sea que, en este caso, validar la disponibilidad de una API no sirve. Llega el momento de utilizar una mala práctica

Utilizar AnalyticsInfo.VersionInfo.DeviceFamily para ver el tipo de dispositivo en el que se está corriendo la App. En el caso de las Hololens esta propiedad retorna “Windows.Holographic“.

Esta solución es una de las posibles, y por ahora la que funciona. Eso sí, apuntando que en cuanto UWP posea una mejor forma de validar este tipo de escenarios, esta función y  sus pruebas deben ser eliminadas!

Clipboard06

Un gatito y 2 unicornios menos gracias a 5 líneas de código !

Saludos @ Toronto

El Bruno

References

#VS2015 – UWP Community Toolkit nice help and assets if you are developing #Windows10 Apps

Hello!

Now is time to make a brain backup (as @davidsb used to said).I.E. I’ve used this a couple of times and I always have to look again when I need it back: so UWP Community Toolkit you deserve your own post.

The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. The project is open source and can be accessed on GitHub, and also can be downloaded as NuGet package in any of its various features:

 

image

As always the best way to explain this is via source code. For example, the following lines of code we help to detect if are connected to internet, and also it are doing from a line of data (usually from a smartphone)

image

Other options are the work with services like Twitter, Facebook or Bing. UWP Community Toolkit provides us with a series of helpers that help us to reduce the number of lines of code that we often need to interact with these services.

image

Another interesting aspect of the Toolkit is Visual capabilities that our apps are not offered. To get a better view of this, you can install  UWP Community Toolkit Sample App from the MS Store

image

And in this view the features and capabilities that we can add to our apps.

image

Finally and by way of example, I leave the links to features that today provides the toolkit on GitHub.

Animations
Controls
Code Helpers
Services
Notifications

Greetings @ Toronto

El Bruno

References