SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
Acceso a Azure Storage
(Blobs y Tablas NoSQL) con
Xamarin.iOS y Xamarin.Android
Enrique Aguilar Vargas
@enriqueaguilar
Síguenos en @msdevlatam
#XamarinDiplomado
Acceso a Azure Storage (Blobs y Tablas NoSQL) con
Xamarin.iOS y Xamarin.Android
Lecciones:
1.- Xamarin iOS con acceso a Azure Storage (Table NoSQL)
2.- Xamarin iOS con acceso a Azure Storage (Blobs)
3.- Xamarin Android con acceso a Azure Storage (Table NoSQL) – Download
Requisitos
Para el módulo requieres:
1.- Xamarin Studio (Xamarin.iOS y Xamarin.Android) o Visual Studio Preview
para Mac o Visual Studio 2015 con acceso a equipo Mac físico, virtualizado o
en la nube.
2.- iOS SDK y Android SDK.
4.- Cuentas de Apple Developer (puede ser la cuenta gratuita con certificado
provisional) y Google Developer.
5.- Cuenta de Azure.
Xamarin iOS con acceso a Azure Storage (Table NoSQL)
Se creará una Aplicación para iOS que cree y suba información a una tabla
NoSQL en Azure Storage.
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
Demo Xamarin – Azure Storage (Table NoSQL)
Aplicación con Xamarin iOS para crear una tabla en base a una entidad, envío
de datos a partir de una CloudStorageAccount, CloudTableClient, CloudTable y
TableOperation.
Código disponible en:
github.com/enriqueaguilarvargas
Xamarin iOS con acceso a Azure Storage (Blobs)
Se creará una Aplicación para iOS que suba una fotografía del iPhone al
contenedor de blobs en Azure Storage
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=almacenamientoxamarin;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=almacenamientoxamarin;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=almacenamientoxamarin;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=almacenamientoxamarin;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=almacenamientoxamarin;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 un CloudStorageAccount, CloudBlobClient,
CloudBlobContainer y GetBlockBlobReference.
Código disponible en:
github.com/enriqueaguilarvargas
Xamarin Android con acceso a Azure Storage
(Table NoSQL y Blobs)
Se creará una Aplicación para Android que baje una fotografía del contenedor
de blobs y datos de una tabla NoSQL de Azure Storage.
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
Código disponible en:
github.com/enriqueaguilarvargas
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.
Gracias por su atención
Enrique Aguilar (@enriqueaguilar)
Únete a la conversación en #XamarinDiplomado
Síguemos en @msdevlatam

Más contenido relacionado

Similar a Xamarin Diplomado Intermedio

Xamarin storage Azure
Xamarin storage AzureXamarin storage Azure
Xamarin storage AzureIvan Martinez
 
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
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
 
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
 
Despliegue de aplicaciones web en Microsoft Azure
Despliegue de aplicaciones web en Microsoft AzureDespliegue de aplicaciones web en Microsoft Azure
Despliegue de aplicaciones web en Microsoft AzureVíctor Moreno
 
Como crear un worker role desde visual studio
Como crear un worker role desde visual studioComo crear un worker role desde visual studio
Como crear un worker role desde visual studioVíctor Moreno
 
Máquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .NetMáquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .NetVíctor Moreno
 
Personalizar ESXi Image Builder
Personalizar ESXi Image BuilderPersonalizar ESXi Image Builder
Personalizar ESXi Image BuilderAlejandro Marin
 
Descargando blobs desde el blob storage
Descargando blobs desde el blob storage Descargando blobs desde el blob storage
Descargando blobs desde el blob storage Víctor Moreno
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7tantascosasquenose
 
Tipos de acceso hacia bases de datos sql azure
Tipos de acceso hacia bases de datos sql azureTipos de acceso hacia bases de datos sql azure
Tipos de acceso hacia bases de datos sql azureVíctor Moreno
 
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
 
Eliminando blobs desde el blob storage
Eliminando blobs desde el blob storageEliminando blobs desde el blob storage
Eliminando blobs desde el blob storageVíctor Moreno
 
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...Ivan Petrlik
 
Cloud Computing. Virtualización. Azure
Cloud Computing. Virtualización. AzureCloud Computing. Virtualización. Azure
Cloud Computing. Virtualización. Azurepacvslideshare
 
Entendiendo ARM (Azure Resource Manager)
Entendiendo ARM (Azure Resource Manager)Entendiendo ARM (Azure Resource Manager)
Entendiendo ARM (Azure Resource Manager)Víctor Moreno
 
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionTaller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionLuis Beltran
 
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
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 

Similar a Xamarin Diplomado Intermedio (20)

Xamarin storage Azure
Xamarin storage AzureXamarin storage Azure
Xamarin storage Azure
 
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
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101
 
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
 
Despliegue de aplicaciones web en Microsoft Azure
Despliegue de aplicaciones web en Microsoft AzureDespliegue de aplicaciones web en Microsoft Azure
Despliegue de aplicaciones web en Microsoft Azure
 
Como crear un worker role desde visual studio
Como crear un worker role desde visual studioComo crear un worker role desde visual studio
Como crear un worker role desde visual studio
 
Máquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .NetMáquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .Net
 
Personalizar ESXi Image Builder
Personalizar ESXi Image BuilderPersonalizar ESXi Image Builder
Personalizar ESXi Image Builder
 
Descargando blobs desde el blob storage
Descargando blobs desde el blob storage Descargando blobs desde el blob storage
Descargando blobs desde el blob storage
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7
 
Tipos de acceso hacia bases de datos sql azure
Tipos de acceso hacia bases de datos sql azureTipos de acceso hacia bases de datos sql azure
Tipos de acceso hacia bases de datos sql azure
 
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
 
Eliminando blobs desde el blob storage
Eliminando blobs desde el blob storageEliminando blobs desde el blob storage
Eliminando blobs desde el blob storage
 
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
 
Cloud Computing. Virtualización. Azure
Cloud Computing. Virtualización. AzureCloud Computing. Virtualización. Azure
Cloud Computing. Virtualización. Azure
 
Entendiendo ARM (Azure Resource Manager)
Entendiendo ARM (Azure Resource Manager)Entendiendo ARM (Azure Resource Manager)
Entendiendo ARM (Azure Resource Manager)
 
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionTaller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom Vision
 
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
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Ios y azure apps como churros
Ios y azure apps como churrosIos y azure apps como churros
Ios y azure apps como churros
 

Xamarin Diplomado Intermedio

  • 1.
  • 2. Acceso a Azure Storage (Blobs y Tablas NoSQL) con Xamarin.iOS y Xamarin.Android Enrique Aguilar Vargas @enriqueaguilar Síguenos en @msdevlatam #XamarinDiplomado
  • 3. Acceso a Azure Storage (Blobs y Tablas NoSQL) con Xamarin.iOS y Xamarin.Android Lecciones: 1.- Xamarin iOS con acceso a Azure Storage (Table NoSQL) 2.- Xamarin iOS con acceso a Azure Storage (Blobs) 3.- Xamarin Android con acceso a Azure Storage (Table NoSQL) – Download
  • 4. Requisitos Para el módulo requieres: 1.- Xamarin Studio (Xamarin.iOS y Xamarin.Android) o Visual Studio Preview para Mac o Visual Studio 2015 con acceso a equipo Mac físico, virtualizado o en la nube. 2.- iOS SDK y Android SDK. 4.- Cuentas de Apple Developer (puede ser la cuenta gratuita con certificado provisional) y Google Developer. 5.- Cuenta de Azure.
  • 5. Xamarin iOS con acceso a Azure Storage (Table NoSQL) Se creará una Aplicación para iOS que cree y suba información a una tabla NoSQL en Azure Storage.
  • 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
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. Demo Xamarin – Azure Storage (Table NoSQL) Aplicación con Xamarin iOS para crear una tabla en base a una entidad, envío de datos a partir de una CloudStorageAccount, CloudTableClient, CloudTable y TableOperation. Código disponible en: github.com/enriqueaguilarvargas
  • 18.
  • 19. Xamarin iOS con acceso a Azure Storage (Blobs) Se creará una Aplicación para iOS que suba una fotografía del iPhone al contenedor de blobs en Azure Storage
  • 20. 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.
  • 21. Creamos el contenedor de Blobs Podemos subir archivos al contenedor creado.
  • 22. Podemos utilizar el Microsoft Azure Storage Explorer para ver los archivos en el contenedor.
  • 23. 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:
  • 24. 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;
  • 25. 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;
  • 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. 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
  • 28. 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
  • 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. 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); };
  • 31. 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); };
  • 32. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=almacenamientoxamarin;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); } };
  • 33. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=almacenamientoxamarin;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); } };
  • 34. Código Xamarin.iOS – Azure Storage Blob btnRespaldar.TouchUpInside += async delegate { try { CloudStorageAccount cuentaAlmacenamiento = CloudStorageAccount.Parse ("DefaultEndpointsProtocol=https;AccountName=almacenamientoxamarin;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=almacenamientoxamarin;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=almacenamientoxamarin;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 un CloudStorageAccount, CloudBlobClient, CloudBlobContainer y GetBlockBlobReference. Código disponible en: github.com/enriqueaguilarvargas
  • 38.
  • 39.
  • 40. Xamarin Android con acceso a Azure Storage (Table NoSQL y Blobs) Se creará una Aplicación para Android que baje una fotografía del contenedor de blobs y datos de una tabla NoSQL de Azure Storage.
  • 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
  • 66. Código disponible en: github.com/enriqueaguilarvargas 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. Gracias por su atención Enrique Aguilar (@enriqueaguilar) Únete a la conversación en #XamarinDiplomado Síguemos en @msdevlatam