SlideShare a Scribd company logo
1 of 70
Download to read offline
Enrique Aguilar Vargas
@enriqueaguilar
Xamarin iOS y Xamarin Android
con Azure Storage (Blobs y
Tablas NoSQL)
Enrique Aguilar
• Xamarin MVP.
• Director de la Facultad de Tecnologías de Información de la
Universidad De La Salle Bajío México.
• Consultor en Implementaciones Móviles en empresas de
Manufactura en Guanajuato y Jalisco en México.
• Profesor Internacional de Posgrado Invitado por la Universidad
Nacional de Ingeniería de Nicaragua en temas de Seguridad de
la Información.
• Speaker sobre Desarrollo Móvil con más 40 conferencias en
México y 20 a nivel Internacional en diferentes lugares de
Colombia, Bolivia, Nicaragua y Venezuela.@enriqueaguilar
Agenda
Xamarin iOS con acceso a Azure Storage – Table (NoSQL)
Xamarin iOS con acceso a Azure Storage - Blobs
Xamarin Android con acceso a Azure Storage (Table (NoSQL) y Blobs)
1.- Xamarin iOS con acceso
a Azure Storage – Table
(NoSQL)
Xamarin.iOS con Acceso a Azure Storage (Tables)
1.- Se habilitará una tabla desde código en Xamarin para crear la estructura a
partir de una clase que defina los elementos de la tabla.
1.1.- Se habilitará el almacenamiento de Azure Storage en el portal.
1.2.- Se creará una aplicación para iOS, su interfaz gráfica y una clase con la estructura que deseamos para
la tabla NoSQL en Azure Storage.
2.- Se instanciará a la clase para tener la estructura, se recibirán datos, mismos
que se depositarán en la tabla (NoSQL) de Azure Storage.
2.1.- Se recibirán los datos en una instancia de la clase que contiene la estructura de la tabla.
2.2.- Se creará la tabla NoSQL en Azure Storage con los elementos de la clase, además se depositará el
contenido definido de ejemplo.
Azure Storage
• 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.
Preparar el Almacenamiento en Azure
En nuestro portal de Azure
agregamos un nuevo Storage de
tipo Cuenta de almacenamiento
Creamos una app para iOS
con un botón y agregamos el
paquete Microsoft Azure
Storage del repositorio
nuget.org
Aceptamos los términos de
la licencia.
Creamos la entidad
para la generación de
la tabla
Creamos un método
para crear una alerta
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Creamos la entidad para la generación de la tabla
Demo Xamarin – Azure Storage
(Table NoSQL)
Aplicación con Xamarin para crear una tabla en base a una
entidad, envío de datos a partir de una
CloudStorageAccount, CloudTableClient, CloudTable y
TableOperation.
2.- Xamarin iOS con acceso
a Azure Blobs
Xamarin.iOS con Acceso a Azure Storage (Blobs)
1.- Se creará un contenedor de blobs en Azure Storage.
1.1.- Se habilitará el contenedor de Blobs en Azure Storage vía el portal.
2.- Se realizará una aplicación que capture una fotografía vía la cámara de iOS, la
cual se enviará al contenedor de blobs en Azure Storage.
2.1.- Se solicitará autorización al usuario para el uso de la cámara.
2.2.- Se definirá una zona en la interfaz para mostrar la salida de la cámara.
2.3.- Se capturará la salida de la cámara en una ImageView.
Azure Storage
(Blob)
Los BLOB (Binary Large
Objects, objetos binarios
grandes) son elementos
utilizados en las bases de
datos para almacenar
datos de gran tamaño,
como imágenes, videos,
documentos, etc.
Creamos el contenedor de Blobs
Podemos subir archivos al contenedor creado.
Podemos utilizar el Microsoft Azure Storage Explorer para ver los archivos en el
contenedor.
1.- Liberamos espacio en la parte
superior, ya que ahí se mostrará la
salida de la cámara.
2.- Agregamos un botón que permitirá
capturar la imagen de la cámara en iOS.
3.- Agregamos un Image View donde se
mostrará la imagen capturada.
4.- Agregamos el botón de Respaldar en
Azure Storage.
Creamos una app para iOS que tenga lo siguiente:
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;
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;
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;
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
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
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
Código Xamarin.iOS – Azure Storage Blob
btnCapturar.TouchUpInside += async delegate
{
var salidadevideo = salidaImagen.ConnectionFromMediaType(AVMediaType.Video);
var bufferdevideo = await salidaImagen.CaptureStillImageTaskAsync(salidadevideo);
var datosImagen = AVCaptureStillImageOutput.JpegStillToNSData(bufferdevideo);
arregloJpg = datosImagen.ToArray();
string rutacarpeta = Environment.GetFolderPath
(Environment.SpecialFolder.Personal);
string resultado = "Foto";
archivoLocal = resultado + ".jpg";
ruta = Path.Combine(rutacarpeta, archivoLocal);
File.WriteAllBytes(ruta, arregloJpg);
Imagen.Image = UIImage.FromFile(ruta);
};
Código Xamarin.iOS – Azure Storage Blob
btnCapturar.TouchUpInside += async delegate
{
var salidadevideo = salidaImagen.ConnectionFromMediaType(AVMediaType.Video);
var bufferdevideo = await salidaImagen.CaptureStillImageTaskAsync(salidadevideo);
var datosImagen = AVCaptureStillImageOutput.JpegStillToNSData(bufferdevideo);
arregloJpg = datosImagen.ToArray();
string rutacarpeta = Environment.GetFolderPath
(Environment.SpecialFolder.Personal);
string resultado = "Foto";
archivoLocal = resultado + ".jpg";
ruta = Path.Combine(rutacarpeta, archivoLocal);
File.WriteAllBytes(ruta, arregloJpg);
Imagen.Image = UIImage.FromFile(ruta);
};
Código Xamarin.iOS – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Código Xamarin.iOS – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Código Xamarin.iOS – Azure Storage Blob
btnRespaldar.TouchUpInside += async delegate
{
try
{
CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse
("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+
q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A==");
CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient();
CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes");
CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal);
await recursoblob.UploadFromFileAsync(ruta);
MessageBox("Guardado en", "Azure Storage - Blob");
}
catch (StorageException ex)
{
MessageBox("Error: ", ex.Message);
}
};
Demo Xamarin – Azure Storage
(Blob)
Aplicación con Xamarin que toma una fotografía y la envía a
un contenedor de Blobs en Azure Storage. a partir de una
CloudStorageAccount, CloudBlobClient, CloudBlobContainer
y GetBlockBlobReference.
3.- Xamarin Android con
acceso a Azure Storage
(Blobs y Tables NoSQL)
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
1.- Se realizará una aplicación para Android que contenga un Mapa y un objeto de
tipo Image View.
1.- La aplicación se conectará al Azure Storage en el contenedor de Blobs y a la tabla, descargando la
información.
2.- Se generará el código para mostrar la imagen tomada por iOS pero descargada
por Android en un ImageView, además los datos de la ubicación despositados en
la tabla, permitirán realizar la ubicación con Google Maps de donde se tomó la
fotografía.
1.- La imagen descargada de Azure Storage Blob se depositará en una ruta de la aplicación y se mostrará
en el Image View.
2.- Los datos recibidos de Azure Storage Table NoSQL permitirán ubicar en el Mapa el lugar donde se tomó
la fotografía.
Xamarin.Android
Ingresamos a la cuenta de Developer
de Google para obtener una Clave de
API para Google Maps para poder
tener acceso a los Mapas.
Agregamos la clave de la API en el AndroidManifest.xml
Agregamos la clave de la API en el AndroidManifest.xml
1.- Agregamos un Mapa en la zona superior.
2.- Agregamos el botón que descargará la
imagen, las coordenadas y que colocará la
imagen en un Image View y las coordenadas las
enviará al Mapa de Google.
3.- Agregamos un ImageView en la parte central
inferior.
Creamos una Interfaz Gráfica para Android
que tenga la siguiente estructura:
Agregamos los
componentes de
Google Play
Services y
Geolocator Plugin
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Xamarin.Android con Acceso a Azure Storage Blobs y
Tables NoSQL
Demo Xamarin – Azure Storage
(Android con acceso a Blob y
Table NoSQL)
Aplicación con Xamarin para Android que descarga una
imagen y la coloca en un ImageView, y descarga la altitud y
longitud de una Tabla NoSQL y lo coloca como coordenadas
en una Mapa de Google.
Enrique Aguilar Vargas
@enriqueaguilar
Códigos disponibles en:
github.com/enriqueaguilarvargas
Xamarin iOS y Xamarin Android
con Azure Storage (Blobs y
Tablas NoSQL)
© 2016 Microsoft Corporation. All rights reserved. The text in this document is available under the Creative Commons Attribution 3.0 License, additional terms may apply. All other content contained in this document
(including, without limitation, trademarks, logos, images, etc.) are not included within the Creative Commons license grant. This document does not provide you with any legal rights to any intellectual property in any
Microsoft product. You may copy and use this document for your internal, reference purposes.
This document is provided "as-is." Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. Some examples are for
illustration only and are fictitious. No real association is intended or inferred. Microsoft makes no warranties, express or implied, with respect to the information provided here.

More Related Content

Similar to Xamarin iOS y Android con Azure Storage

Trabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azureTrabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azureVíctor Moreno
 
Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#Víctor Moreno
 
Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#Víctor Moreno
 
Agregando a nuestras apps servicios de IA: Azure IA Vision
Agregando a nuestras apps servicios de IA: Azure IA VisionAgregando a nuestras apps servicios de IA: Azure IA Vision
Agregando a nuestras apps servicios de IA: Azure IA VisionJose A. Fernandez
 
Infraestructura como Código con Azure Resource Manager
Infraestructura como Código con Azure Resource ManagerInfraestructura como Código con Azure Resource Manager
Infraestructura como Código con Azure Resource ManagerVíctor Moreno
 
04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latamGaston Cruz
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxLuis Beltran
 
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDK
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDKConstruyendo un Detector de Objetos con Azure Custom Vision .NET SDK
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDKLuis Beltran
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasSoftware Guru
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
Microsoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSMicrosoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSenriqueaguilar
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasAmazon Web Services LATAM
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp UneMarcos Jara
 
Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Naim Jhon Cruzado Paredes
 
Framework GSM para Pruebas Automatizadas
Framework GSM para Pruebas AutomatizadasFramework GSM para Pruebas Automatizadas
Framework GSM para Pruebas AutomatizadasSoftware Guru
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webIEBSchool
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 

Similar to Xamarin iOS y Android con Azure Storage (20)

Trabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azureTrabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azure
 
Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#
 
Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#
 
Agregando a nuestras apps servicios de IA: Azure IA Vision
Agregando a nuestras apps servicios de IA: Azure IA VisionAgregando a nuestras apps servicios de IA: Azure IA Vision
Agregando a nuestras apps servicios de IA: Azure IA Vision
 
Infraestructura como Código con Azure Resource Manager
Infraestructura como Código con Azure Resource ManagerInfraestructura como Código con Azure Resource Manager
Infraestructura como Código con Azure Resource Manager
 
Aws Elastic Beanstalk + Docker
Aws Elastic Beanstalk + DockerAws Elastic Beanstalk + Docker
Aws Elastic Beanstalk + Docker
 
04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam04 17-2021 - procesando modelos tabulares global azure latam
04 17-2021 - procesando modelos tabulares global azure latam
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
 
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDK
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDKConstruyendo un Detector de Objetos con Azure Custom Vision .NET SDK
Construyendo un Detector de Objetos con Azure Custom Vision .NET SDK
 
Why Azure is so MEAN?
Why Azure is so MEAN?Why Azure is so MEAN?
Why Azure is so MEAN?
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
Microsoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOSMicrosoft Virtual Academy - Xamarin iOS
Microsoft Virtual Academy - Xamarin iOS
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernas
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010
 
Framework GSM para Pruebas Automatizadas
Framework GSM para Pruebas AutomatizadasFramework GSM para Pruebas Automatizadas
Framework GSM para Pruebas Automatizadas
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo web
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 

Xamarin iOS y Android con Azure Storage

  • 1. Enrique Aguilar Vargas @enriqueaguilar Xamarin iOS y Xamarin Android con Azure Storage (Blobs y Tablas NoSQL)
  • 2. Enrique Aguilar • Xamarin MVP. • Director de la Facultad de Tecnologías de Información de la Universidad De La Salle Bajío México. • Consultor en Implementaciones Móviles en empresas de Manufactura en Guanajuato y Jalisco en México. • Profesor Internacional de Posgrado Invitado por la Universidad Nacional de Ingeniería de Nicaragua en temas de Seguridad de la Información. • Speaker sobre Desarrollo Móvil con más 40 conferencias en México y 20 a nivel Internacional en diferentes lugares de Colombia, Bolivia, Nicaragua y Venezuela.@enriqueaguilar
  • 3. Agenda Xamarin iOS con acceso a Azure Storage – Table (NoSQL) Xamarin iOS con acceso a Azure Storage - Blobs Xamarin Android con acceso a Azure Storage (Table (NoSQL) y Blobs)
  • 4. 1.- Xamarin iOS con acceso a Azure Storage – Table (NoSQL)
  • 5. Xamarin.iOS con Acceso a Azure Storage (Tables) 1.- Se habilitará una tabla desde código en Xamarin para crear la estructura a partir de una clase que defina los elementos de la tabla. 1.1.- Se habilitará el almacenamiento de Azure Storage en el portal. 1.2.- Se creará una aplicación para iOS, su interfaz gráfica y una clase con la estructura que deseamos para la tabla NoSQL en Azure Storage. 2.- Se instanciará a la clase para tener la estructura, se recibirán datos, mismos que se depositarán en la tabla (NoSQL) de Azure Storage. 2.1.- Se recibirán los datos en una instancia de la clase que contiene la estructura de la tabla. 2.2.- Se creará la tabla NoSQL en Azure Storage con los elementos de la clase, además se depositará el contenido definido de ejemplo.
  • 6. Azure Storage • 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.
  • 7. Preparar el Almacenamiento en Azure En nuestro portal de Azure agregamos un nuevo Storage de tipo Cuenta de almacenamiento
  • 8.
  • 9. Creamos una app para iOS con un botón y agregamos el paquete Microsoft Azure Storage del repositorio nuget.org Aceptamos los términos de la licencia.
  • 10. Creamos la entidad para la generación de la tabla Creamos un método para crear una alerta
  • 11. Creamos la entidad para la generación de la tabla
  • 12. Creamos la entidad para la generación de la tabla
  • 13. Creamos la entidad para la generación de la tabla
  • 14. Creamos la entidad para la generación de la tabla
  • 15. Creamos la entidad para la generación de la tabla
  • 16. Creamos la entidad para la generación de la tabla
  • 17. Creamos la entidad para la generación de la tabla
  • 18. Demo Xamarin – Azure Storage (Table NoSQL) Aplicación con Xamarin para crear una tabla en base a una entidad, envío de datos a partir de una CloudStorageAccount, CloudTableClient, CloudTable y TableOperation.
  • 19.
  • 20. 2.- Xamarin iOS con acceso a Azure Blobs
  • 21. Xamarin.iOS con Acceso a Azure Storage (Blobs) 1.- Se creará un contenedor de blobs en Azure Storage. 1.1.- Se habilitará el contenedor de Blobs en Azure Storage vía el portal. 2.- Se realizará una aplicación que capture una fotografía vía la cámara de iOS, la cual se enviará al contenedor de blobs en Azure Storage. 2.1.- Se solicitará autorización al usuario para el uso de la cámara. 2.2.- Se definirá una zona en la interfaz para mostrar la salida de la cámara. 2.3.- Se capturará la salida de la cámara en una ImageView.
  • 22. Azure Storage (Blob) Los BLOB (Binary Large Objects, objetos binarios grandes) son elementos utilizados en las bases de datos para almacenar datos de gran tamaño, como imágenes, videos, documentos, etc.
  • 23. Creamos el contenedor de Blobs Podemos subir archivos al contenedor creado.
  • 24. Podemos utilizar el Microsoft Azure Storage Explorer para ver los archivos en el contenedor.
  • 25. 1.- Liberamos espacio en la parte superior, ya que ahí se mostrará la salida de la cámara. 2.- Agregamos un botón que permitirá capturar la imagen de la cámara en iOS. 3.- Agregamos un Image View donde se mostrará la imagen capturada. 4.- Agregamos el botón de Respaldar en Azure Storage. Creamos una app para iOS que tenga lo siguiente:
  • 26. 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;
  • 27. 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;
  • 28. 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;
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. Código Xamarin.iOS – Azure Storage Blob btnCapturar.TouchUpInside += async delegate { var salidadevideo = salidaImagen.ConnectionFromMediaType(AVMediaType.Video); var bufferdevideo = await salidaImagen.CaptureStillImageTaskAsync(salidadevideo); var datosImagen = AVCaptureStillImageOutput.JpegStillToNSData(bufferdevideo); arregloJpg = datosImagen.ToArray(); string rutacarpeta = Environment.GetFolderPath (Environment.SpecialFolder.Personal); string resultado = "Foto"; archivoLocal = resultado + ".jpg"; ruta = Path.Combine(rutacarpeta, archivoLocal); File.WriteAllBytes(ruta, arregloJpg); Imagen.Image = UIImage.FromFile(ruta); };
  • 33. Código Xamarin.iOS – Azure Storage Blob btnCapturar.TouchUpInside += async delegate { var salidadevideo = salidaImagen.ConnectionFromMediaType(AVMediaType.Video); var bufferdevideo = await salidaImagen.CaptureStillImageTaskAsync(salidadevideo); var datosImagen = AVCaptureStillImageOutput.JpegStillToNSData(bufferdevideo); arregloJpg = datosImagen.ToArray(); string rutacarpeta = Environment.GetFolderPath (Environment.SpecialFolder.Personal); string resultado = "Foto"; archivoLocal = resultado + ".jpg"; ruta = Path.Combine(rutacarpeta, archivoLocal); File.WriteAllBytes(ruta, arregloJpg); Imagen.Image = UIImage.FromFile(ruta); };
  • 34. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 35. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 36. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=enriqueaguilar;AccountKey=UJ+ q1zwfv7lkb2d/cm8r9ycoc5ZgkNEbuypQYgM001p9E9CWChPtIBfW1A=="); CloudBlobClient clienteBlob = cuentaAlmacenamiento.CreateCloudBlobClient(); CloudBlobContainer contenedor = clienteBlob.GetContainerReference("imagenes"); CloudBlockBlob recursoblob = contenedor.GetBlockBlobReference(archivoLocal); await recursoblob.UploadFromFileAsync(ruta); MessageBox("Guardado en", "Azure Storage - Blob"); } catch (StorageException ex) { MessageBox("Error: ", ex.Message); } };
  • 37. Demo Xamarin – Azure Storage (Blob) Aplicación con Xamarin que toma una fotografía y la envía a un contenedor de Blobs en Azure Storage. a partir de una CloudStorageAccount, CloudBlobClient, CloudBlobContainer y GetBlockBlobReference.
  • 38.
  • 39. 3.- Xamarin Android con acceso a Azure Storage (Blobs y Tables NoSQL)
  • 40. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL 1.- Se realizará una aplicación para Android que contenga un Mapa y un objeto de tipo Image View. 1.- La aplicación se conectará al Azure Storage en el contenedor de Blobs y a la tabla, descargando la información. 2.- Se generará el código para mostrar la imagen tomada por iOS pero descargada por Android en un ImageView, además los datos de la ubicación despositados en la tabla, permitirán realizar la ubicación con Google Maps de donde se tomó la fotografía. 1.- La imagen descargada de Azure Storage Blob se depositará en una ruta de la aplicación y se mostrará en el Image View. 2.- Los datos recibidos de Azure Storage Table NoSQL permitirán ubicar en el Mapa el lugar donde se tomó la fotografía.
  • 41. Xamarin.Android Ingresamos a la cuenta de Developer de Google para obtener una Clave de API para Google Maps para poder tener acceso a los Mapas.
  • 42. Agregamos la clave de la API en el AndroidManifest.xml
  • 43. Agregamos la clave de la API en el AndroidManifest.xml
  • 44. 1.- Agregamos un Mapa en la zona superior. 2.- Agregamos el botón que descargará la imagen, las coordenadas y que colocará la imagen en un Image View y las coordenadas las enviará al Mapa de Google. 3.- Agregamos un ImageView en la parte central inferior. Creamos una Interfaz Gráfica para Android que tenga la siguiente estructura:
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. Agregamos los componentes de Google Play Services y Geolocator Plugin
  • 50. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 51. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 52. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 53. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 54. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 55. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 56. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 57. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 58. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 59. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 60. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 61. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 62. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 63. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 64. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 65. Xamarin.Android con Acceso a Azure Storage Blobs y Tables NoSQL
  • 66. Demo Xamarin – Azure Storage (Android con acceso a Blob y Table NoSQL) Aplicación con Xamarin para Android que descarga una imagen y la coloca en un ImageView, y descarga la altitud y longitud de una Tabla NoSQL y lo coloca como coordenadas en una Mapa de Google.
  • 67.
  • 68.
  • 69. Enrique Aguilar Vargas @enriqueaguilar Códigos disponibles en: github.com/enriqueaguilarvargas Xamarin iOS y Xamarin Android con Azure Storage (Blobs y Tablas NoSQL)
  • 70. © 2016 Microsoft Corporation. All rights reserved. The text in this document is available under the Creative Commons Attribution 3.0 License, additional terms may apply. All other content contained in this document (including, without limitation, trademarks, logos, images, etc.) are not included within the Creative Commons license grant. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. This document is provided "as-is." Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. Some examples are for illustration only and are fictitious. No real association is intended or inferred. Microsoft makes no warranties, express or implied, with respect to the information provided here.