SlideShare una empresa de Scribd logo
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
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
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.
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
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.
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
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:
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
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.
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage
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.

Más contenido relacionado

PDF
Microsoft Virtual Academy - Live Session - Xamarin con Azure Storage
PDF
Xamarin Diplomado Intermedio
PDF
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
PDF
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
PDF
Xamarin storage Azure
PDF
Azure Storage y Xamarin - Tec Tianguistenco
PDF
Ios y azure apps como churros
PDF
Creación y eliminación de tablas desde el table storage
Microsoft Virtual Academy - Live Session - Xamarin con Azure Storage
Xamarin Diplomado Intermedio
Azure Storage, Cognitive Services y Xamarin - Universidad Tecnológica de León
Azure Storage, Cognitive Services y Xamarin - Tepic Nayarit
Xamarin storage Azure
Azure Storage y Xamarin - Tec Tianguistenco
Ios y azure apps como churros
Creación y eliminación de tablas desde el table storage

Similar a Microsoft Virtual Academy - Xamarin iOS y Xamarin Android con Azure Storage (20)

PDF
Creando y listando snapshots de blobs desde el blob storage
PDF
Agregando y actualizando entidades desde el table storage
DOCX
azure_Storage.docx
PDF
Arquitectura xamarin - Nuestra primera app
PDF
Microsoft Virtual Academy - Xamarin iOS
PPTX
Experts Live 2018: Azure Storage y la plataforma de datos
PDF
Almacenando con blobs en el blob storage
PDF
Xamarin.Android & Microsoft Azure
PDF
The Actual Down-side Danger Associated with EGA Futura programa de facturacio...
PDF
Pricey Risks Of EGA Futura programa de facturacion sail That Nobody Is Talkin...
PDF
Copiando blobs desde el blob storage
PDF
Bases de datos locales y remotas con xamarin
PPTX
Cloud Computing y la nueva plataforma Windows Azure
PDF
Descargando blobs desde el blob storage
PPTX
Servicios de datos en la nube
PPTX
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
PPTX
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
PDF
Oteniendo una lista de blobs desde el blob storage
PDF
The Downside Dangers Regarding EGA Futura programa de facturacion sail Who No...
PPT
Mejorandola
Creando y listando snapshots de blobs desde el blob storage
Agregando y actualizando entidades desde el table storage
azure_Storage.docx
Arquitectura xamarin - Nuestra primera app
Microsoft Virtual Academy - Xamarin iOS
Experts Live 2018: Azure Storage y la plataforma de datos
Almacenando con blobs en el blob storage
Xamarin.Android & Microsoft Azure
The Actual Down-side Danger Associated with EGA Futura programa de facturacio...
Pricey Risks Of EGA Futura programa de facturacion sail That Nobody Is Talkin...
Copiando blobs desde el blob storage
Bases de datos locales y remotas con xamarin
Cloud Computing y la nueva plataforma Windows Azure
Descargando blobs desde el blob storage
Servicios de datos en la nube
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Oteniendo una lista de blobs desde el blob storage
The Downside Dangers Regarding EGA Futura programa de facturacion sail Who No...
Mejorandola
Publicidad

Último (6)

PPTX
sistemas de informacion.................
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Conceptos basicos de Base de Datos y sus propiedades
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
sistemas de informacion.................
Derechos_de_Autor_y_Creative_Commons.pptx
AutoCAD Herramientas para el futuro, Juan Fandiño
Conceptos basicos de Base de Datos y sus propiedades
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Publicidad

Microsoft Virtual Academy - Xamarin iOS y Xamarin 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
  • 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.
  • 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.
  • 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:
  • 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.
  • 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.