Windows Phone 8 | Cómo compartir un elemento Multimedia con Share Media Task

En el quinto y último artículo de esta serie sobre cómo conectar vuestra aplicación con otros usuarios para compartir algún elemento, os contaré cómo compartir elementos multimedia haciendo uso de ShareMediaTask.

 

Escenario

Supongamos que tenemos una aplicación de Windows Phone desde la que queremos compartir un contenido multimedia.

 

Solución

Windows Phone dispone de la clase ShareMediaTask que se encuentra dentro del espacio de nombres Microsoft.Phone.Tasks y que nos va a permitir realizar el la tarea de compartir un elemento multimedia de forma simple y rápida por medio de las aplicaciones que tengamos instaladas en el terminal y que permitan compartir.

Como en todos los ejemplos, he puesto un botón al que hay que asignar el evento Click o Tap (Para lo que necesitamos hacer da lo mismo el que usemos).

Share-Media-Task-Sample-Aplication

 

Este ejemplo será un poco diferente al que hemos visto en los demás artículos de la serie y veremos por qué a continuación del código.

   1:          private void btnShare_Click(object sender, RoutedEventArgs e)
   2:          {
   3:              CameraCaptureTask cameraTask = new CameraCaptureTask();
   4:              cameraTask.Completed += cameraTask_Completed;
   5:              cameraTask.Show();
   6:          }
   7:   
   8:          void cameraTask_Completed(object sender, PhotoResult e)
   9:          {
  10:              if (e.TaskResult == TaskResult.OK)
  11:              {
  12:                  ShowShareMediaTask(e.OriginalFileName);
  13:              }
  14:          }
  15:          void ShowShareMediaTask(string path)
  16:          {
  17:              ShareMediaTask mediaTask = new ShareMediaTask();
  18:              mediaTask.FilePath = path;
  19:              mediaTask.Show();
  20:          }

 

En primer lugar, en el evento Click del botón, lo que haremos será lanzar la aplicación de la cámara del terminal haciendo uso de la clase CameraCaptureTask que a la que asociaremos un método a su evento “Completed” y que lanzaremos con el método “Show”. Seguidamente se declara el método cameraTask_Completed que es el que hemos asociado al evento anteriormente citado y que, en caso de aceptar la captura realizada por la cámara, llamará al método ShowShareMediaTask que será el encargado, mediante el uso de la clase ShareMediaTask, de lanzar la aplicación del sistema que nos permitirá seleccionar la aplicación desde la que queremos compartir el elemento multimedia tomado.

NOTA: Lo ideal sería que permitiéramos que el usuario escogiera un elemento que tengamos almacenado en el terminal, capturarlo con la cámara, capturar sonido, etc. tal y como hacen otras aplicaciones.

Si probamos la aplicación, veremos que al presionar el botón se abrirá la aplicación de la cámara del terminal, al obtener una foto se nos pedirá confirmación y, si aceptamos, aparecerá un listado con las aplicaciones que tengamos instaladas y desde las que podamos compartir la foto.

Share-Media-Task-Sample-Aplication

 

Ahora, como ejemplo, compartiré la imagen desde la aplicación 6tag que es un buen cliente de Instagram para Windows Phone. Esta acción nos solicitará recortar la imagen y tras esta acción nos permitirá establecer un mensaje, seleccionar dónde lo compartiremos a parte de Instagram y establecer la ubicación actual. Una vez completado todo lo que deseemos establecer, podremos compartir la imagen en Instagram (Imagen)

Share-Media-Task-6Tag

 

Podéis descargaros el proyecto de ejemplo (ShareMedia) desde aquí junto con el resto de ejemplos.

download-code32

 

Artículos de la serie

Banner-SMS[6][4]
Banner-Email[8][4]
Banner-ShareLink[5][4]
Banner-Status
Banner-Media

Windows Phone 8 | Cómo compartir un mensaje de estado con Share Status Task

En el cuarto artículo de esta serie os contaré cómo compartir el mensaje de estado de un usuario desde vuestras aplicaciones haciendo uso de ShareStatusTask.

 

Escenario

Supongamos que tenemos una aplicación de Windows Phone por medio de la cuál queremos compartir un mensaje de estado del usuario.

 

Solución

Windows Phone dispone de la clase ShareStatusTask que se encuentra dentro del espacio de nombres Microsoft.Phone.Tasks heredando de la clase base ShareTaskBase y que nos va a permitir realizar el la tarea de compartir nuestro estado de forma simple y rápida.

Como en todos los ejemplos, he puesto un botón al que hay que asignar el evento Click o Tap (Para lo que necesitamos hacer da lo mismo el que usemos).

Share-Status-Task-Sample-Aplication

 

Dentro del evento click, habrá que hacer uso de la clase ShareStatusTask para realizar la tarea de compartir el mensaje de estado del usuario.

   1:          private void btnShare_Click(object sender, RoutedEventArgs e)
   2:          {
   3:              ShareStatusTask share = new ShareStatusTask();
   4:   
   5:              share.Status = "Probando el launcher Share Status Task";
   6:              share.Show();
   7:          }

 

Como se puede observar, lo único que se hace es crear una instancia de la clase ShareStatusTask y establecer un valor para el mensaje de estado del usuario. Finalmente se realiza una llamada al método Show que lanzará la aplicación del sistema completar la tarea.

NOTA: En el emulador limpio no hará nada por lo que habría que probarlo en un terminal.

Si probamos la aplicación, veremos que al presionar el botón se lanzará la aplicación del sistema que nos permite compartir el mensaje de estado del usuario por medio de las redes sociales que tengamos configuradas en nuestro terminal, donde podremos modificar el mensaje y seleccionar las redes en las que lo queremos compartir.

Share-Status-Task-Share-Status

Podéis descargaros el proyecto de ejemplo (ShareStatus) desde aquí junto con el resto de ejemplos.

download-code32

 

Artículos de la serie

Banner-SMS[6][4]
Banner-Email[8][4]
Banner-ShareLink[5][4]
Banner-Status
Banner-Media

Windows Phone 8 | Cómo compartir un enlace con Share Link Task

En el tercer artículo de esta serie os contaré cómo compartir links desde vuestras aplicaciones haciendo uso de ShareLinkTask.

 

Escenario

Supongamos que tenemos una aplicación de Windows Phone en la que necesitamos compartir algún link, ya sea a algún contenido, a algún producto que hayamos encontrado, …

 

Solución

Windows Phone dispone de la clase ShareLinkTask que se encuentra dentro del espacio de nombres Microsoft.Phone.Tasks heredando de la clase base ShareTaskBase y que nos va a permitir realizar el la tarea de compartir un link de forma simple y rápida.

Como en todos los ejemplos, he puesto un botón al que hay que asignar el evento Click o Tap (Para lo que necesitamos hacer da lo mismo el que usemos).

Share-Link-Task-Sample-Aplication

Dentro del evento click, habrá que hacer uso de la clase ShareLinkTask para realizar la tarea de compartir un enlace.

   1:          private void btnShare_Click(object sender, RoutedEventArgs e)
   2:          {
   3:              ShareLinkTask task = new ShareLinkTask();
   4:   
   5:              task.Title = "Enlace al blog de Santiago Porras Rodríguez";
   6:              task.LinkUri = new Uri("http://geeks.ms/blogs/santypr", UriKind.Absolute);
   7:              task.Message = "Si te gusta la tecnología, este es un blog que no te puedes perder.";
   8:   
   9:              task.Show();
  10:          }

 

Como se puede observar, lo único que se hace es crear una instancia de la clase ShareLinkTask y establecer un valor para las propiedades que tiene, Title, LinkUri y Message. Finalmente se realiza una llamada al método Show que lanzará la aplicación del sistema que nos permitirá compartir el enlace en las redes sociales que tengamos configuradas en nuestro terminal.

NOTA: En el emulador limpio no hará nada por lo que habría que probarlo en un terminal.

Si probamos la aplicación, veremos que al presionar el botón se abrirá la aplicación del sistema que nos permite compartir el enlace, donde podremos modificar el mensaje que acompañará al enlace, seleccionar las redes sociales con las que lo queremos compartir e, incluso para Facebook disponemos de opciones de visibilidad del enlace.

Share-Link-Task-Share-Link

 

Podéis descargaros el proyecto de ejemplo (ShareLink) desde aquí junto con el resto de ejemplos.

download-code3

 

Artículos de la serie

Banner-SMS[6]
Banner-Email[8]
Banner-ShareLink[5]
Banner-Status
Banner-Media

Windows Phone 8 | Cómo enviar correos con Email Compose Task

Este es el segundo artículo de la serie que empecé explicando cómo enviar SMS en Windows Phone. En esta ocasión le toca el turno al envío de correo electrónico.

Escenario

Supongamos que tenemos una aplicación de Windows Phone en la que que queremos compartir un contenido por medio del correo electrónico.

 

Solución

Windows Phone dispone de EmailComposeTask que se encuentra dentro del espacio de nombres Microsoft.Phone.Tasks y que nos va a permitir realizar el envío de un correo electrónico de forma simple y rápida.

Para el ejemplo, he puesto un botón al que hay que asignar el evento Click o Tap (Para lo que necesitamos hacer da lo mismo el que usemos).

Email-Compose-Task-Sample-Aplication

 

Dentro del evento click, habrá que hacer uso de la clase EmailComposeTask para realizar la tarea de envío de correo.

   1:          private void btnEmail_Click(object sender, RoutedEventArgs e)
   2:          {
   3:              EmailComposeTask email = new EmailComposeTask();
   4:   
   5:              email.Subject = "Email subject";
   6:              email.Body = "Email body";
   7:              email.To = "johndoe@example.com";
   8:              email.Cc = "copyto@example.com";
   9:              email.Bcc = "hiddencopyto@example.com";
  10:   
  11:              email.Show();
  12:          }

 

Como se puede observar, lo único que se hace es crear una instancia de la clase EmailComposeTask y establecer un valor para las propiedades que tiene. Finalmente se realiza una llamada al método Show que lanzará la aplicación del envío de correo electrónico del sistema.

NOTA: En el emulador se mostrará un error por lo que habrá que realizar la prueba en un dispositivo.

Si probamos la aplicación, veremos que al presionar el botón se abrirá la aplicación de envío de correo del sistema, donde podremos modificar los datos del correo, adjuntar archivos, cancelarlo y enviarlo.

Email-Compose-Task-Send-Email

NOTA: Si no se tiene ninguna cuenta de correo configurada, el sistema mostrará un mensaje al usuario indicándole que debe configurarla.

 

Ha sido realmente sencillo y espero que os sea útil. Podéis descargaros el proyecto de ejemplo (Email) desde aquí donde además tenéis el resto de ejemplos que vaya publicando.

download-code

 

Artículos de la serie

Banner-SMS[6]
Banner-Email[8]
Banner-ShareLink[5]
Banner-Status
Banner-Media

Windows Phone 8 | Cómo enviar mensajes SMS con SMS Compose Task

Todos aquellos que desarrollen aplicaciones para móviles sabrán que algo muy importante en prácticamente cualquier aplicación es disponer de opciones para compartir algo, un contenido, un logro, una imagen, … ya que permite que la aplicación esté más viva y que anime a otros usuarios a descargarla y usarla. Con este artículo, en el que explicaré cómo enviar un SMS desde una aplicación para Windows Phone, quiero iniciar una serie de artículos en los que iré mostrando diferentes formas de compartir contenido acompañándolos de su código fuente.

Escenario

Supongamos que tenemos una aplicación de Windows Phone en la que que queremos compartir un contenido, en este caso un texto, con otra persona vía SMS.

Solución

Una de las grandes características de Windows Phone es la facilidad para hacer cualquier tarea y, para los desarrolladores no iba a ser menos, de hecho, es extremadamente sencillo.

Dentro del espacio de nombres Microsoft.Phone.Tasks, disponemos de un gran número de tareas relacionadas con funcionalidades como enviar SMS’s a la que le corresponde la clase SmsComposeTask que será la que necesitaremos usar para alcanzar nuestro objetivo.

Para establecer un ejemplo, comenzaré por crear un botón al que asignaremos el evento Click o Tap (Para lo que necesitamos hacer da lo mismo el que usemos).

SMS-Compose-Task-Sample-Aplication

 

Dentro del evento, tenemos que escribir el siguiente y complejísimo código.

1: private void btnSendSMS_Click(object sender, RoutedEventArgs e)


2: { 


3: SmsComposeTask sms = new SmsComposeTask(); 


4: sms.To = «600123456»; 


5: sms.Body = «Testing SMS compose Task»; 


6: sms.Show(); 


7: } 


 

Como podéis observar, lo que hacemos es crear una instancia de la clase SmsComposeTask y le asignamos un receptor “To”, el cuerpo del SMS “Body” y finalmente realizamos la llamada al método “Show” que será el encargado de abrir la tarea de envío de SMS’s

Una vez hecho, ejecutamos la aplicación y, al presionar el botón se abrirá la tarea de envío de SMS del sistema, lo que nos permitirá cambiar el receptor, editar el mensaje, enviarlo, añadir elementos como imágenes, vídeos, sonido, etc…

 

Ha sido realmente sencillo y espero que os sea útil. Podéis descargaros el proyecto desde aquí, además, progresivamente le iré añadiendo los nuevos ejemplos que vaya realizando.

download-code

 

NOTA: En el emulador el mensaje siempre aparecerá como enviado correctamente aunque realmente no se haya realizado el envío. Esto se debe a que el emulador simula GSM y la SIM. En un terminal, si el mensaje no se envía correctamente, aparecerá una notificación indicándolo.

 

Artículos de la serie

Banner-SMS
Banner-Email
Banner-ShareLink
Banner-Status
Banner-Media

Cómo copiar desde un sitio web al portapapeles de forma automática

Escenario

En más de una ocasión podréis encontraros con que algún cliente decide tener un botón para copiar un texto al portapapeles (clipboard) de forma automática en un sitio web. Esta tarea se torna extremadamente fácil si estamos usando Internet Explorer puesto que dispone de esa capacidad pero, en el caso de otros navegadores como Chrome, Firefox, Opera,… debemos buscar una alternativa.

 

Solución

Internet Explorer

Como ya he adelantado, en Internet Explorer es muy sencillo de realizar. Tan sólo habría que usar el objeto “window.clipboardData” para realizar la tarea que deseamos.

   1: window.clipboardData.setData('Text', "TEXTO A COPIAR");

Aquí tenemos más información sobre el objeto clipboardData y sobre el método setData

Esta solución, sólo será útil si nuestros usuarios usan siempre Internet Explorer o, si somos un poco “descuidados” de la experiencia que transmitimos a los usuarios con nuestro sitio web y no queremos implementarla para el resto de navegadores (FAIL)

Chapuza

Solución completa

Existe un complemento que podemos usar en nuestras aplicaciones web llamado ZeroClipboard que podemos usar para realizar esta tarea y que funcionará en la gran mayoría de los navegadores ya que combina JavaScript con Flash.

Para instalarlo, podemos hacerlo manualmente o desde Nuget (recomendado) tal y como se muestra en la siguiente secuencia de imágenes

 

Una vez tengamos instalado el complemento, será muy sencillo usarlo dependiendo únicamente de cómo queramos hacerlo.

Ejemplo simple

Voy a realizar el ejemplo en un sitio web ASP.NET MVC4 en el que supongamos que tenemos el siguiente código HTML con un div y un button.

   1:  

   2: <div id="divTextToClipboard">Este es el texto que quiero copiar</div>

   3: <button class="btnCopyToClipboard" data-clipboard-target="divTextToClipboard" data-clipboard-text="Default text">Copiar texto</button>

 

Como podemos ver, el botón tiene dos atributos añadidos “data-clipboard-target” y “data-clipboard-text” que son necesarios para un correcto funcionamiento de ZeroClipboard.

data-clipboard-target: id del elemento del que queremos copiar el texto. Puede ser un label, un div, un input,…

data-clipboard-text: texto por defecto que se copiará.

 

Una vez tenemos el código HTML necesario, tenemos que incluir el complemento ZeroClipboard para poder copiar el texto al portapapeles (clipboard) y, para ello veremos un ejemplo basado en lo que nos propone el creador del complemento una vez instalado ya que dispone de ejemplos para diversos eventos que podemos querer controlar.

   1: <script src="@Url.Content("~/Scripts/ZeroClipboard.min.js")"></script>

   2: <script>

   3:     $(function (){

   4:         var clip = new ZeroClipboard($(".btnCopyToClipboard"), {

   5:           moviePath: '@Url.Content("~/Scripts/ZeroClipboard.swf")' // ruta donde se encuentra el plugin

   6:         });

   7:  

   8:         clip.on('load', function(client){

   9:           // alert("movie is loaded" );

  10:         });

  11:  

  12:         clip.on('complete', function(client, args){

  13:           this.style.display = 'none'; // "this" is the element that was clicked

  14:           alert("Copied text to clipboard: " + args.text );

  15:         });

  16:  

  17:         clip.on('mouseover', function(client){

  18:           // alert("mouse over");

  19:         });

  20:  

  21:         clip.on('mouseout', function(client){

  22:           // alert("mouse out");

  23:         });

  24:  

  25:         clip.on('mousedown', function(client){

  26:  

  27:           // alert("mouse down");

  28:         });

  29:  

  30:         clip.on('mouseup', function(client){

  31:           // alert("mouse up");

  32:         });

  33:     });

  34: </script>

 

Se puede apreciar que el complemento se instancia mediante una referencia a los elementos que provocarán la copia de datos, en este caso un botón con el atributo “classbtnCopyToClipboard e indicando dónde se encuentra el archivo flash correspondiente al complemento ZeroClipboard. Además, disponemos de diferentes eventos asociados a los elementos referenciados en la instancia del complemento y que nos podrán ayudar a realizar diferentes tareas como por ejemplo avisar al usuario de que se ha realizado la copia del texto.

 

Como podéis ver, es muy fácil realizar esta tarea que, de otro modo, nos podría dar más de un dolor de cabeza

 

Para que os sea más fácil aún poder ver cómo funciona, podéis descargaros un ejemplo que he realizado desde aquí

download

 

También disponéis del ejemplo en línea de ZeroClipboard

Cómo activar en IIS Express la visualización de errores para un sitio de PHP creado con WebMatrix

Cuando creamos un sitio web con WebMatrix y queremos programarlo en PHP, a menudo nos encontramos con que si tenemos un error la página resultante se queda en blanco. Esto se debe a que la configuración de PHP tiene establecido que no muestre los errores con lo que el comportamiento por defecto que tiene establecido IIS Express para tratarlos es dejar la página en blanco.

¿Cómo podemos activar la visualización de errores?

Es muy sencillo, tan sólo tenemos que ir a la carpeta “C:Program Files (x86)IIS ExpressPHPv5.4”  y localizar el fichero php.ini.

1

NOTA: v5.4 es la versión que tengo instalada de PHP y dependerá de la que tengáis instalada o la que estés usando en vuestro sitio web si tenéis varias versiones instaladas”

 

Lo abrimos y establecemos el valor de display_errors = On. A veces también es conveniente establecer el valor display_startup_errors = On

2

IMPORTANTE: El archivo hay que editarlo con permisos de administrador.

Con esto ya tenemos activados los errores para que se muestren en el navegador al ejecutar nuestro sitio web con PHP y ya podremos determinar dónde está ese problema que nos trae de cabeza.

MÁS IMPORTANTE AÚN: Si el sitio es un sitio de producción que tenemos público, no nos podemos olvidar de deshacer este cambio.

Tenerife Lan Party 2k13 | Un año más de colaboración que se traduce en un gran evento

Este año no ha podido estar el equipo de TenerifeDev al completo en la Tenerife Lan Party 2k13 debido a que 3 de nuestros coordinadores han asistido a eventos de gran renombre a nivel internacional, así es que sólo hemos podido estar Alberto Díaz y yo en representación del grupo. Aún así, lejos de disminuir nuestra colaboración, la aumentamos siendo co-organizadores del primer TLP HackFest y aportando 3 charlas sobre los últimos avances en Windows 8, Windows Phone y Visual Studio 2013.

De esta forma hemos vuelto a aportar nuestro granito de arena a la comunidad para tratar mantener a todo el que lo desee informado sobre las últimas novedades en el ámbito del desarrollo a la vez que tratábamos de ayudar a los asistentes al TLP HackFest a desarrollar una sus ideas de aplicaciones de cualquier ámbito y que les sirva como experiencia para iniciar o mejorar sus trayectorias laborales.

Además, este año tuvimos la ocasión de estar presentes en conferencias de personas de la talla de Juan Verde, quizás el mayor atractivo de esta edición de la Tenerife Lan Party y Jose Fortes y yo conseguimos fotografiarnos con él.

 

WP_20130718_009

 

El año próximo esperamos repetir con más y mejores colaboraciones ya que creemos que la Tenerife Lan Party puede ser un espacio para que estudiantes, emprendedores y profesionales puedan relacionarse y ponerse al día tanto tecnológica como socialmente.

 

Ponencias:

Windows-8_1 Windows Blue: Fast & Fluid 8.1
Miércoles 17 de julio
17.00 – 18.00
windows-phone-8-logo1 Windows Phone: Más rápido, más funcional, más personal
Miércoles 17 de julio
18.30 – 19.30
visualstudio2013 Visual Studio 2013: Evolucionando para dominarlos a todos
Miércoles 17 de julio
19.30 – 20.30

 

 

HackFest

HackFest-Banner

De miércoles 17 de julio a sábado 20 de julio

Materiales del WebCast | ¡Creando sitios poderosos con SharePoint 2013: Así se hicieron iberiansharepointconference.com y compartimoss.com!

Aquí tenéis el enlace a la grabación correspondientes al Web Cast “¡Creando sitios poderosos con SharePoint 2013: Así se hicieron iberiansharepointconference.com y compartimoss.com!” en el que tuve el placer de compartir cartel con Alberto Díaz, Adrían Díaz y Teresa Cebrían gracias a SUGES.

En el WebCast dimos dos puntos de vista (diferentes pero iguales) de cómo crear sitios públicos en SharePoint 2013 con una alta calidad en cuanto a diseño, personalización y sobre todo que aporten mejores experiencias y mayor atractivo para los usuarios. Para ello usamos como ejemplos los sitios de Iberian SharePoint Conference en el que tuve el placer de trabajar con Teresa Cebrián que se encargó de montar el diseño del sitio junto con Adrían Díaz y también el sitio de CompartiMOSS donde junto con Alberto Díaz, me encargué de crear todo el diseño y montarlo haciendo uso de HTML5 y Responsive Web Design para que los usuarios de la revista tuvieran una experiencia enriquecedora a la hora de leer los artículos.

download

 

Espero que os haya gustado el Web Cast y que estéis creando ya vuestro sitios de SharePoint con una gran experiencia para los usuarios

Iberian SharePoint Conference | ¡Abierto el registro!

¡Ya hemos abierto el registro para la 1ª Iberian SharePoint Conference! También están disponibles los workshops de negocio, desarrollo y sistemas que se realizarán el 11 de octubre como continuación de la conferencia.

Iberian SharePoint Conference

Shop-1240x485-Conf

Enlace de registro.

Precio:

50 € para usuarios pre-registrados en la conferencia. Te habrá llegado un código de descuento por correo electrónico.

75 € para usuarios no pre-registrados.

Horarios de la Iberian SharePoint Conference

.

 

Workshop de desarrollo

Shop-1240x485-Dev

Enlace de registro para el workshop de desarrollo (Limitado a 40 plazas)

Precio:

  • 129 € para usuarios pre-registrados en la conferencia. Te habrá llegado un código de descuento por correo electrónico.
  • 149 € para usuarios no pre-registrados.

Contenidos y horarios del workshop de desarrollo.

 

Workshop de negocio

Shop-1240x485-Business

Enlace de registro para el workshop de negocio (Limitado a 40 plazas)

Precio:

  • ¡GRATIS!

Contenidos y horarios del workshop de negocio.

 

Workshop de sistemas

Shop-1240x485-IT

Enlace de registro para el workshop de sistemas (Limitado a 20 plazas)

Precio:

  • 129 € para usuarios pre-registrados en la conferencia. Te habrá llegado un código de descuento por correo electrónico.
  • 149 € para usuarios no pre-registrados.

Contenidos y horarios del workshop de sistemas.

 

Esperamos veros por Madrid los días 10 y 11 de octubre, que podáis disfrutar de un gran evento y que os quedéis con ganas de más