El documento presenta una introducción a Xamarin y Azure Storage y Cognitive Services. Se discute cómo Xamarin permite crear aplicaciones móviles nativas compartiendo código entre plataformas. También se muestra cómo Azure Storage puede usarse para almacenar y recuperar imágenes y cómo los servicios cognitivos pueden analizar imágenes y proporcionar descripciones. Finalmente, se incluyen ejemplos de código de Xamarin para cámara, almacenamiento y servicios cognitivos.
3. @enriqueaguilar
Xamarin Classic
(Xamarin.iOS – Xamarin.Android)
Xamarin.iOS Xamarin.AndroidNative User InterfacesNative API Access Native Performance
Apps with interactions that require native behavior
Apps that use many platform-specific APIs
Apps where custom UI is more importante than code
sharing
“Xamarin Classic (iOS - Android) is for Quality
Applications in very competitive markets”
Miguel De Icaza
Fuente:
https://www.xamstatic.com/dist/images/pages/vs-
download/android-features@2x-mpXl2sxz.png
4. @enriqueaguilar
Xamarin.Forms
(iOS – Android - Windows)
Build native UIs for iOS, Android and Windows from a single, shared C# codebase.
Apps where code sharing is more important than
custom UI
Developers comfortable with XAML
Apps that require little platform-specific functionality
5. @enriqueaguilar
C# Swift
iOS UI
XIB (Storyboard)
Objective C
Xamarin Classic
(iOS – Android)
Java C#
Android UI
AXML
“Anything you can do in Objective-C, Swift and Java can be done in C# with Xamarin”
6.
7. Almacenamiento Azure
Ideal para la Administración del
Centro de Datos:
• Gama de soluciones para cada
necesidad.
• La escalabilidad que nunca
sobrepasará.
• Flexible a medida que cambian las
necesidades.
• Costos más bajos y pago solo por lo
que necesita.
8.
9. Xamarin y Azure Storage
Aplicación de iOS que
toma una foto y la envia a
Azure Storage.
Aplicación de Android que
baja la imagen subida al
Azure Storage.
1
2
3
4
iOS Android
10. Código Xamarin.iOS – Azure Storage Blob
string archivoLocal;
AVCaptureDevice dispositivodeCaptura;
AVCaptureSession sesiondeCaptura;
AVCaptureDeviceInput entradaDispositivo;
AVCaptureStillImageOutput salidaImagen;
AVCaptureVideoPreviewLayer preview;
string ruta;
byte[] arregloJpg;
async Task autorizacionCamara()
{
var estatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video);
if (estatus != AVAuthorizationStatus.Authorized)
{
await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video);
}
}
using System;
using UIKit;
using System.Drawing;
using System.Threading.Tasks;
using AVFoundation;
using Foundation;
using System.IO;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
11. Código Xamarin.iOS – Azure Storage Blob
string archivoLocal;
AVCaptureDevice dispositivodeCaptura;
AVCaptureSession sesiondeCaptura;
AVCaptureDeviceInput entradaDispositivo;
AVCaptureStillImageOutput salidaImagen;
AVCaptureVideoPreviewLayer preview;
string ruta;
byte[] arregloJpg;
async Task autorizacionCamara()
{
var estatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video);
if (estatus != AVAuthorizationStatus.Authorized)
{
await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video);
}
}
using System;
using UIKit;
using System.Drawing;
using System.Threading.Tasks;
using AVFoundation;
using Foundation;
using System.IO;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
12. Código Xamarin.iOS – Azure Storage Blob
string archivoLocal;
AVCaptureDevice dispositivodeCaptura;
AVCaptureSession sesiondeCaptura;
AVCaptureDeviceInput entradaDispositivo;
AVCaptureStillImageOutput salidaImagen;
AVCaptureVideoPreviewLayer preview;
string ruta;
byte[] arregloJpg;
async Task autorizacionCamara()
{
var estatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video);
if (estatus != AVAuthorizationStatus.Authorized)
{
await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video);
}
}
using System;
using UIKit;
using System.Drawing;
using System.Threading.Tasks;
using AVFoundation;
using Foundation;
using System.IO;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
13. public void ConfiguracionCamara()
{
sesiondeCaptura = new AVCaptureSession();
preview = new AVCaptureVideoPreviewLayer(sesiondeCaptura)
{
Frame = new RectangleF(40, 50, 300, 350)
};
View.Layer.AddSublayer(preview);
dispositivodeCaptura = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
entradaDispositivo = AVCaptureDeviceInput.FromDevice(dispositivodeCaptura);
sesiondeCaptura.AddInput(entradaDispositivo);
salidaImagen = new AVCaptureStillImageOutput()
{
OutputSettings = new NSDictionary()
};
sesiondeCaptura.AddOutput(salidaImagen);
sesiondeCaptura.StartRunning();
}
Código Xamarin.iOS – Azure Storage Blob
14. public void ConfiguracionCamara()
{
sesiondeCaptura = new AVCaptureSession();
preview = new AVCaptureVideoPreviewLayer(sesiondeCaptura)
{
Frame = new RectangleF(40, 50, 300, 350)
};
View.Layer.AddSublayer(preview);
dispositivodeCaptura = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
entradaDispositivo = AVCaptureDeviceInput.FromDevice(dispositivodeCaptura);
sesiondeCaptura.AddInput(entradaDispositivo);
salidaImagen = new AVCaptureStillImageOutput()
{
OutputSettings = new NSDictionary()
};
sesiondeCaptura.AddOutput(salidaImagen);
sesiondeCaptura.StartRunning();
}
Código Xamarin.iOS – Azure Storage Blob
27. Microsoft Cognitive Services
Son una conjunto de APIs
que permiten que las
aplicaciones interpreten
imágenes y videos
proporcionando respuestas
cognitivas.
microsoft.com/cognitive-services
28.
29. Microsoft Cognitive Services
Vision Speech Language Knowlegde Search
Computer
Vision
Custom
Recognition
Bing Spell Check Academic
Knowledge
Bing Web Search
Emotion Speaker
Recognition
Linguistic Analysis and
Undestanding
Entity Linking Bing Image Search
Face Speech Text Analytics Knoledge
Exploration
Bing Video and News
Search
Video Translator WebLM Recommendatio
ns
Bing Autosuggest
33. Enviamos un stream al método que analizará
e interpretará el nivel de felicidad
34. Enviamos un stream al método que analizará
e interpretará el nivel de felicidad
35. Se envía la información
como stream al método que
describirá la emoción del
Servicio Cognitivo
en el criterio de “Felicidad”
Conectamos con el
Servicio Cognitivo en la
API
descriptiva de emociones,
se envía la trama y se
recibe
la información
36. Se envía la información
como stream al método que
describirá la emoción del
Servicio Cognitivo
en el criterio de “Felicidad”
Conectamos con el
Servicio Cognitivo en la
API
descriptiva de emociones,
se envía la trama y se
recibe
la información
39. Nos conectamos al
Servicio Cognitivo en la
API de
Computer Vision
Recibimos la descripción y lo
enviamos a la
clase de narración en el
iPhone
Habilitamos los botones
40. Nos conectamos al
Servicio Cognitivo en la
API de
Computer Vision
Recibimos la descripción y lo
enviamos a la
clase de narración en el
iPhone
Habilitamos los botones
41. Nos conectamos al
Servicio Cognitivo en la
API de
Computer Vision
Recibimos la descripción y lo
enviamos a la
clase de narración en el
iPhone
Habilitamos los botones
42.
43.
44.
45. Por donde empezar?
• microsoft.com/cognitive-services
• xamarin.com/resources
• blog.xamarin.com
• channel9.msdn.com