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.
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.
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
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.
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:
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