Curso de fotografía Nokia Camara

Hace unos par de días accedí a un lumia 1020 regalado por Microsoft Chile! (Gracias MSFT Chile) por el programa devNinjas. Y me surgió una gran pregunta, Como poder obtener las mejores fotos con esta gran cámara? Cosa que pensaba que iba ser algo sencillo de manipular todas las opciones de Nokia camara. (Cosa que no fue así). Me costaba obtener fotos de gran calidad pero consultando a un gran amigo (Das Orlando) que sabe de fotografías me enseño algunos conceptos y obtuvimos estas fotos.

WP_20140415_19_42_15_Pro WP_20140415_21_01_13_Pro WP_20140415_21_02_17_Pro (1)

Cosa que me encanto. Lo cual empece a investigar sobre tutoriales y cursos para poder sacar todo el jugo a mi lumia 1020. Y gracias al blog de WindowsPhoneApps encontre un curso bastante bueno que toca todos los puntos de como obtener una imagen buena con nuestros terminales lumias y con la app Nokia camara. Se los dejo a continuación:

 

1. Paisajes

2.Fotografías macro, efecto bokeh y la importancia del zoom

3.Uso del flash, puddlegrams (+Nokia Creative Studio)

4.Fotografia Noctura

5.Larga obturación

 

Con estos 5 consejos podemos sacar gran partido de nuestro lumia.

Nos vemos en la proxima saludos! :D

Project My Screen app ya disponible.

Sin título

Hace poco conocíamos que para poder usar la función de proyectar pantalla en Windows Phone 8.1 era necesaria una aplicación que aun no estaba disponible, esta aplicación sería la responsable de mostrarnos la pantalla de nuestro Smartphone en la pantalla de nuestro ordenador, bueno pues la espera a terminado porque ya disponemos de el enlace para descargar el programa, para ello simplemente PINCHA AQUÍ.

¿Como proyectar nuestra pantalla?

  1. Descarga e instala el programa.
  2. Inicia el programa Project My Screen app y dejálo iniciado. (ALT+ ENTER para reducir la ventana oESC)
  3. Conecta el telefono al ordenador, si eres afortunado te saldrá un aviso pidiéndote permiso para proyectar la pantalla, sino es así sigue leyendo.
  4. Con el teléfono conectado ve al administrador de dispositivos de tu PC (Panel de Control>Sistema>Administrador de dispositivos) y desinstala los Driver del teléfono, se suele mostrar como Windows Phone o con el nombre del RM y el modelo de tu dispositivo, elige la opción desinstalar y luego señala la casilla “eliminar”.
  5. Desconecta el teléfono.
  6. En el PC ve a Dispositivos e impresoras y elimina tu teléfono.
  7. Vuelve a conectar el telefono y te saldrá el aviso.

también podemos controlar la pantalla proyectada desde el ordenador con el ratón.

Windows Phone 8.1 “Preview for developers” Disponible

Joe Belfiore ha dado el pistoletazo de salida a través de su cuenta de Twitter, ya que tal y como puedes ver en la imagen de arriba su teléfono acaba de recibir el aviso de nueva actualización. Nos referimos evidentemente a la llegada de Windows Phone 8.1, una actualización que, recordemos, estará únicamente disponible para aquellas personas con cuenta de desarrollador que tengan registrado su terminal en el programa de desarrolladores.

Como seguro sabrás, la nueva versión del sistema se caracteriza por incluir el nuevo asistente inteligente, Cortana (aunque solo disponible en Estados Unidos por ahora), además de integrar un nuevo centro de notificaciones y nuevos Tiles para la pantalla de inicio. Si eres de los que pueden hacerse con la actualización desde ya, no dudes en contarnos tus impresiones cuanto antes.

Si quieres instalar el preview developers. Solo tienes que seguir estos pasos 

 

Windows 8.1 Update 1 ya está disponible, ¿Qué trae de nuevo?

Sin título

Microsoft anunció la semana pasada que su primera gran actualización para WIndows 8.1 estaba en camino y lo ha cumplido el mismo día en el que Windows XP ha muerto. Entre los cambios más destacados encontramos el regreso del modo escritorio a equipos sin pantalla táctil, novedades de usabilidad sobre la interfaz Metro o Modern UI y otras mejoras enfocadas en el rendimiento.

¿Cuales son las novedades de Windows 8.1 Update 1?
Posibilidad de anclar aplicaciones diseñadas para Windows 8 sobre la barra de tareas
La barra de tareas ahora también estará disponible en apps Windows 8 (se oculta automáticamente)
Se pueden cerrar apps de Windows 8 haciendo clic sobre una X que aparece en la parte superior de la pantalla
Nuevo menú conextual al hacer clic con el botón derecho
Nuevo menú para acceder a las opciones de energía
Onedrive reemplaza a la aplicación Skydrive, para los usuarios que todavía no hayan actualizado
Microsoft OneNote se incluye como parte de la instalación estándar
Actualización de Internet Explorer, con retoques de diseño, mejor soporte para gestos y nuevo modo empresa
La secuencia de arranque se ajusta al tipo de dispositivo. Si no tiene pantalla táctil, arranca por defecto en modo escritorio.
Reducción de requisitos, ahora funciona con 1 GB de RAM y al menos 16 Gbytes de espacio en disco.
Windows 8.1 Update 1 ya se encuentra disponible en las actualizaciones automáticas de Microsoft por lo que es probable que la actualización aparezca de manera automática el día de hoy en horas posteriores.

 

Dia 3: Speech API

En WP8 los usuarios pueden interactuar con su aplicacion utilizando el habla, Hay 3 componentes de voz que se pueden integrar en nuestras aplicaciones: Los comandos de voz, Reconocimiento de voz Y de texto a voz (TTS) dejo una imagen que muestra lo mencionado.

 

Texto a Voz

De primera vamos a trabajar con el texto a voz. Donde en WP7 anteriormente teníamos que usar la API de voz Bing si queríamos traducir una frase en sonido, En WP8 esta API es parte de la API en WP.

Donde vamos a crear un proyecto para poner y lo primero que vamos hacer es añadir la capacidad de reconocimiento de voz en WMAppManifest.xml en la pestaña de capacidades.

Sin título

 

Luego de hacer esta acción vamos añadir un botón en nuestro MainPage y añadimos las siguientes lineas de código para el evento click del boton:

private async void Button_Click(object sender, RoutedEventArgs e)
{
SpeechSynthesizer synth = new SpeechSynthesizer();

await synth.SpeakTextAsync(“Hola esto es una prueba”);
}

Como veras solo necesitamos 2 lineas de códigos, donde al ejecutar nuestra aplicación quedaría funcionando. Tenga en cuenta que el metodo SpeakTextAsync del SpeechSynthesizer es asíncrona. Y listo!! no hay nada mas! Pero también podemos cambiar el idioma de la voz y texto (cabe señalar que esto resultara si tienes la voz instalada en el dispositivo) En esta ocasión pondemos  una voz masculina y en ingles, Donde cambiaremos el texto a ingles y seleccionaremos el lenguaje de la voz a ingles quedando de esta forma:

SpeechSynthesizer synth = new SpeechSynthesizer();
VoiceInformation vi = InstalledVoices.All.Where(v => v.Language == “en-US” && v.Gender == VoiceGender.Male).FirstOrDefault();
synth.SetVoice(vi);
await synth.SpeakTextAsync(“Hi my name is carlos”);

Voz a texto

El texto a voz donde ya hablamos en el párrafo anterior anda muy bien pero la conversión de voz a texto es aun mas fácil de implementar. Antes de empezar a tirar codigos añadiremos otra capacidad la cual es del microfono para que podamos capturar los sonidos. Simplemente nos dirigimos nuevamente a WMAppManifest.xml y tildamos ID_CAP_MICROPHONE ya teniendo la capacidad activada podemos empezar agregar código para el reconocimiento de voz. Añadimos otro botón cual le preguntaremos de como se encuentra y 1 TexBlock. Nos quedaría así :

SpeechRecognizerUI Sr = new SpeechRecognizerUI();
Sr.Settings.ListenText = “Hola, Como te llamas?”;
Sr.Settings.ExampleText = “Mi nombre es Carlos”;
SpeechRecognitionUIResult result = await Sr.RecognizeWithUIAsync();
if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
{
TxtEstado.Text = result.RecognitionResult.Text;

}

El objeto SpeechRecognizerUi tiene ajustes de algunas propiedasdes tales como ListenText es el texto que se muestra como titulo en el cuadro de expresion, La siguiente Propiedad es el ExampleText. Aqui se puede añadir un ejemplo de la respuesta. Despues de en la propiedad ReadoutEnabled la ponemos en True para que el teléfono hable el texto nuevamente. La ultima propiedad es la ShowConfirmation que muestra la linea hablada de texto como un texto en la pantalla.  Ya teniendo esto nos vamos al metodo RecognizeWithUIAsync para activar el reconocimiento de voz.

1 2

 

 

En algunos cosos de uso se desea que el usuario elija algunas opciones en lugar de solo texto libre. Esto es realmente facil de implementar con la clase SpeechRecognizerUI. Añadiremos otro boton y otro TextBlock.  Quedando de esta forma :

SpeechRecognizerUI sr = new SpeechRecognizerUI();
sr.Settings.ListenText = “Que clase de musica elijes?”;
sr.Settings.ExampleText = “Rap , Clasico , Metal”;
sr.Settings.ReadoutEnabled = true;
sr.Settings.ShowConfirmation = true;

sr.Recognizer.Grammars.AddGrammarFromList(“answer”, new string[] { “Rap”, “Clasico”, “Metal”});

SpeechRecognitionUIResult result = await sr.RecognizeWithUIAsync();
if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
{
Txt2.Text = result.RecognitionResult.Text;

}

Al ejecutar la aplicación y seleccionar esta opción solo aceptara la música existente que se encuentra dentro del la lista.

 

Comando de voz

El ultimo tema de hoy es los comandos de voz. Con los comandos de voz podemos iniciar nuestra aplicacion con la tarea especifica o ejecutar una tarea cuando ya esta dentro de nuestra aplicacion. Comando de voz siempre consta de 3 partes. El nombre de la aplicación para que el sistema sepa que aplicación es. la segunda es el nombre del comando y la tercera es una frase que es un tipo de parametro que se puede añadir a su comando.

Para activar los comandos de voz nosotros tendremos que agregar un archivo XML que contiene los comandoz de voz.

Sin título

Ya teniendo esto agregado veremos que tiene algunos comandos y frases de ejemplos. Vamos a estar cambiando y añadiendo comandos para iniciar la aplicación buscador de hands?

 

Lo primero que vamos hacer es agregar los comandos al archivo VCD es el CommandPrefix. Esta es la palabra que el sistema operativo utilizara para encontrar nuestra aplicacion. Despues de eso vamos añadir un comando. Este comando necesita un elemento ListenFor donde le decimos al sistema que texto escuche. También puedes agregar una frase a este comando como lo hicimos nosotros.

 

<VoiceCommands xmlns=”http://schemas.microsoft.com/voicecommands/1.0″&gt;
<CommandSet xml:lang=”es-es”>
<CommandPrefix>Carlos</CommandPrefix>
<Example> ayudame a buscar hands </Example>

<Command Name=”Hans”>
<Example> ayudame a buscar hands </Example>
<ListenFor> ayudame a buscar hands </ListenFor>
<ListenFor> iniciando buscador </ListenFor>
<Feedback> Buscando Hands… </Feedback>
<Navigate />
</Command>
</CommandSet>
</VoiceCommands>

 

Ya teniendo esto listo tenemos que registrar nuestro VCD para que el sistema lo reconozca. tienes que jacer esto una vez cuando la aplicacion se ejecutra por primera vez, pero por ahora solo voy a agregar el constructor a nuestro MainPage

private async System.Threading.Tasks.Task InitializeVoiceCommands()
{
await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri(“ms-appx:///VoiceCommandDefinition1.xml”));
}

Es todo lo que necesitamos hacer para iniciar nuestra aplicacion usando nuestra voz puedes activar el reconocimiento de voz manteniendo pulsado el boton por unos segundos, apretas el signo de interrogacion que ira a la nueva pagina con la explicacion con los comandos disponibles, la primera pagina se describe los comandos del sistema. si delizas hacia la derecha obtendras una vision general de todas las aplicaiones que admiten los comandos de voz. Nuestra aplicacion esta en la lista. Al hacer clic en esta aplicacion veremos una lista de comandos disponibles para nuestra aplicacion:

1 2

 

Ahora estamos listos con esta API! como siempre dejo el codigo de ejemplo para que lo revisen descargalo aqui!! :D

 

 

 

 

 

 

Dia 2: LockScreen

304051-windows-phone-8-lock-screen

 

En Windows Phone 8 esta funcion es super llamativa, Que tus aplicaciones puedan ocupar la pantalla de bloqueo haciendo notificaciones o cambiando la imagen de fondo. Donde hoy explicaremos las 2 funciones para poder lograr que tus apps sean mas interactivas.

Icono,contador y texto en Pantalla de Bloqueo. 

Las imagenes del icono que tenemos que incluir en nuestro proyecto Siempre tienen que ser con un fondo fransparente y el icono de color blanco donde sus medidas son 38*38 Pixeles.

Para establecer este icono en nuestra pantalla de bloqueo creamos un nuevo proyecto y nos vamos a WMAppManifest.xml y cambiamos el elemento DeviceLockImageURI a la dirección URL del icono. Tambien establecemos el atributo isRelative en True y IsResource en False. El contador y el texto se tomaran los objetos del live tile que tenemos creado.

Quedando de esta forma :

<DeviceLockImageURI IsRelative=”true” IsResource=”false”>Assets\Icono.png</DeviceLockImageURI>

 

Para que poder visualizar el icono con el contador y el texto en la imagen de bloqueo tenemos que agregar esto tambien en WMAppManigest.xml

<Extensions>
<Extension ExtensionName=”LockScreen_Notification_IconCount” ConsumerID=”{111DFF24-AA15-4A96-8006-2BFF8122084F}” TaskID=”_default” />
<Extension ExtensionName=”LockScreen_Notification_TextField” ConsumerID=”{111DFF24-AA15-4A96-8006-2BFF8122084F}” TaskID=”_default” />
</Extensions>

 

Los ajustes necesarios para la visualizacion de los datos en la pantalla de bloqueo esta completa. De tal forma que podemos cambiar nuestra configuracion en nuestro device para agregar nuestra aplicacion para la pantalla de bloqueo. Para realizar esta acción tenemos que abrir :

Configuración -> Pantalla de Bloqueo.  Dentro de aqui podemos seleccionar 2 opciones de como podemos mostrar nuestra app 1. Es mostrar el estado detallado. (Donde siempre se encontrara el calendario)

1

 

Donde nos quedaria de esta forma :

4

Recuerden que el texto y contador tomaron los valores de nuestro live tile que tenemos dentro de nuestro proyecto.

Y la segunda forma es Mostrar estados Rapidos.

2

3

En esta opción solo nos mostrara el icono con el contador!

 

Bloqueo de Pantalla con imagen

Lo ultimo que vamos a ver en este segundo dia es poder mostrar una imagen que nosotros tengamos dentro de nuestro proyecto como pantalla de bloqueo. Donde nuevamente tendremos que agregar una extensión en WMAppManifest.xml para poder permitir que nuestra imagen se muestre en la pantalla de bloqueo. Y agregamos esto :

  <Extension ExtensionName=”LockScreen_Background” ConsumerID=”{111DFF24-AA15-4A96-8006-2BFF8122084F}” TaskID=”_default” />
Ya teniendo la extension en el manifiesto ahora podemos empezar escribir el codigo para poder cambiar la imagen de pantalla de bloqueo, en primer lugar vamos a tener que comprobar si nuestra aplicación   preveía la imagen de la pantalla de bloqueo actual y si ese no es el caso vamos a tener que pedir permiso al usuario para cambiar la imagen de pantalla de bloqueo.

Vamos a añadir una imagen de 480×800, Donde tambien agregaremos otro boton para poder realizar el cambio de imagen en la pantalla de bloqueo. Crearemos un Async fuera del boton y esa funcion se incluira en el tap del boton agregado.

Quedado de esta forma :

private async void SetLockScreenImage()
{

if (!Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication)
{

var permission = await Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();

if (permission == Windows.Phone.System.UserProfile.LockScreenRequestResult.Denied)
{

return;
}
}

Windows.Phone.System.UserProfile.LockScreen.SetImageUri(new Uri(“ms-appx:///Assets/Fondo.jpg”, UriKind.Absolute));
}

private void Button_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
{
SetLockScreenImage();
}

Como podemos ver el SetLockScreenImage esta usando la palabra Async porque para pedir permiso al usuario solo se puede hacer mediante el uso de una llamada asincronica. Por lo tanto, estamos usando la palabra clave await cuando estemos pidiendo permiso y la aplicación va estar en espera de la respuesta del usuario

Cuando ejecutamos nuestra aplicación y pulsamos el botón de cambiar la imagen de bloqueo de pantalla nos mostrara un mensaje de si queremos cambiar nuestro fondo de pantalla. de esta formaBloqueo

 

Cambiando nuestro bloqueo de pantalla de esta forma :

3 bloqueo2

 

Y listo! Nos vemos en la proxima como siempre dejare el codigo sample para que puedan revisarlo!

Descargarlo Aquí :)

Dia 1: Live tiles

live-tiles

Si estás familiarizado con el desarrollo para Windows Phone 7 entonces ya sabes que es un live tile. Se trata de unas de las características únicas de Windows Phone que cada uno puede manipular. En Windows Phone 8, Microsoft añade más posibilidades de crear live tiles y también los hizo más flexible para los usuarios finales realmente  puedan personalizar su teléfono.

Uno de los principales cambios es que los live tiles ahora pueden ser establecidos en  3 tamaños diferentes. Pequeño, medio y ancho.También hay 3 plantillas diferentes para crear live tiles que muestran información sobre las diferentes maneras: la plantilla Flip, la plantilla cycle y la plantilla iconic.

Los tamaños utilizados en estas plantillas son :

IC652795

Flip Cycle Iconic
Small 159 * 159px 159 * 159px 110 * 110px
Medium 336 * 336px 336 * 336px 202 * 202px
Wide 691 * 336px 691 * 336px -

 

Plantilla Flip

IC652796

En esta plantilla contaremos con dos partes donde definir el contenido del tile. En la cara frontal, podremos definir una imagen, un contador y un título. En la cara trasera, podremos definir una imagen, un título y un contenido. La plantilla está soportada en los tres tamaños de tiles disponibles. Sin embargo, en el tamaño Small, no mostrará la información de la cara trasera; solo lo hará en los tamaños Medium y Large. Ahora nos vamos al codigo.
Comenzamos con un nuevo proyecto vacío y agregamos un botón.Agregamos un evento click y colocamos allí nuestro código de creación de flip para hacerla lo más fácil posible. En el evento click empezaremos añadiendo el código para agregar los live tile y nos quedaría de esta forma :

private void Button_Click(object sender, RoutedEventArgs e)
{

ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault();
FlipTileData fliptile = new FlipTileData();
fliptile.Title = “Memes”;
fliptile.Count = 9;
fliptile.BackTitle = “CarlosAriash”;
fliptile.BackContent = “Back medium”;
fliptile.WideBackContent = “back Wide”;
fliptile.SmallBackgroundImage = new Uri(“Assets/Fome.jpg”, UriKind.Relative);
fliptile.BackgroundImage = new Uri(“Assets/llorando.jpg”, UriKind.Relative);
fliptile.WideBackgroundImage = new Uri(“Assets/wonmalaonda.jpeg”, UriKind.Relative);
tile.Update(fliptile);

}

Podemos  conseguir un tile activ0  mediante la consulta de la clase ShellTile. Después crearemos un objeto FlipTileData donde podemos establecer todas las propiedades del nuevo tile.Vamos a configurar el título, contador y otras propiedades. Algunas propiedades sólo están en el modo pequeño, algunos sólo se utilizan en el modo de medio o ancho y algunos se utilizan en todas las modalidades, como el recuento.Estamos añadiendo 3 imágenes diferentes para los 3 tamaños del tile.Cuando terminamos de definir las propiedades en el tile que podemos llamar el método update de nuestro objeto  tile y pasar el FlipTileData a ella para establecer el nuevo tile.

Title El título se muestra en la parte inferior izquierda de la parte delantera del tile. se mostrará en los live tile medianos y anchos.
Count el contador es el número en el círculo negro en la parte superior derecha de cada tile. La cuenta se muestra en todos los tamaños de tile.
BackgroundImage La imagen de fondo es la imagen que aparece en el fondo de la parte delantera del tile en tamaño mediano
BackBackgroundImage Para establecer el fondo de la parte posterior del tile use el BackBackgroundImage
BackContent BackContent es el texto que aparece en la parte posterior de un tile de tamaño mediano
BackTitle Título que se muestra en la parte inferior izquierda de la espalda de un tile en mediano y grande
SmallBackgroundImage El fondo del tile en tamaño pequeño.
WideBackgroundImage La imagen de fonto del tile grande.
WideBackBackgroundImage El fondo de la parte posterior del tile large
WideBackContent Texto que aparece en la parte superior izquierda de la parte posterior del tile large

Plantilla Iconic

IC652798

La plantilla Iconic es una nueva plantilla que esta disponible en Windows Phone 8 y creo que es un muy buen complemento para el SDK de WP. Un montón de aplicaciones utilizan tile con un icono blanco y fondo transparente para que parezca aplicaciones nativas de WP. Sin embargo muchas personas tienen problemas para dimensionar el icono y el contador donde no se ven llamativas como las aplicaciones de correo o centro de mensajes. Para hacer esto mas facil para todos Microsoft creo la plantilla de tile iconic y funciona casi similar a la FlipTile Solo que estamos usando un Objeto IconicTileData en lugar de FlipTileData. Quedando algo de esta Forma el Codigo.

private void Button_Click_1(object sender, RoutedEventArgs e)
{

ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault();

IconicTileData icontile = new IconicTileData();
icontile.Title = “Plantilla Iconic”;
icontile.Count = 12;

icontile.IconImage = new Uri(“Assets/Beverage-Milk-Shake.png”, UriKind.Relative);
icontile.SmallIconImage = new Uri(“Assets/Beverage-Juice-01.png”, UriKind.Relative);

icontile.WideContent1 = “CarlosAriash Blog”;
icontile.WideContent2 = “Dia 1″;
icontile.WideContent3 = “Live Tile”;

ShellTile.Create(new Uri(“/MainPage.xaml”, UriKind.Relative), icontile, true);
}

 

Quedando como resultado esto :

1

Wide

 

Pantilla Cycle

IC652797

en  Iconic tenemos un monton de posibilidades para los live tile para poder crear aplicaciones en mosaico de fotos donde un conjunto de imagenes gira en vueltas del tile.

Para la creacion de este live tile Cycle se hace de la misma manera que la creacion de las demas 2 plantillas. Por lo cual el codigo nos quedara de esta forma :

CycleTileData cycleicon = new CycleTileData();

cycleicon.Title = “Plantilla Cycle”;
cycleicon.Count = 5;

cycleicon.SmallBackgroundImage = new Uri(“Assets/Beverage-Milk-Shake.png”, UriKind.Relative);

List<Uri> images = new List<Uri>();
images.Add(new Uri(“Assets/Fome.jpg”, UriKind.Relative));
images.Add(new Uri(“Assets/llorando.jpg”, UriKind.Relative));
images.Add(new Uri(“Assets/wonmalaonda.jpeg”, UriKind.Relative));
cycleicon.CycleImages = images;

ShellTile.Create(new Uri(“/MainPage.xaml?id=cycle”, UriKind.Relative), cycleicon, true);

 

Y nos da como resultado esto :

1

 

El máximo de las imágenes para la plantillo de Cycle es de 9 Imagenes y ira rotando las imagenes con una animacion de deslizamiento suave. Las de propiedades disponibles de cada plantilla  se encuentra en cada imagen adjuntada en los distintos tipos de live tile.

Nos vemos en el proximo post! :)

Como siempre dejo el codigo Sample para que puedan revisar ustedes mismos el codigo Descargalo Aqui :)