Notificaciones en la Pantalla de Bloqueo, Colores del Led y TTS

Pantalla de bloqueo

Una de las cuestiones principales a la hora de mejorar el uso de la batería es la posibilidad de gestionar  las notificaciones en la pantalla de bloqueo del móvil. Una funcionalidad típica en iOS, pero no disponible de serie en Android.

Para ello existen varias soluciones que permiten la visualización directa de las notificaciones sin la necesidad de desbloquear el dispositivo.

Una de ellas en NiLS Notifications Lock Screen disponible en la Google Play.  Mediante la app podemos ver esas notificaciones e incluso haciendo swype en ellas gracias a una extensión de la misma aplicación llamada NiLS Floating Panel.
Las instrucciones sobre cómo activar este widget de la pantalla de bloqueo vienen con la propia aplicación, pero en el caso de móviles con la versión 4.4 de android, casi todos ellos de la gama Nexus, tienen una explicación sobre cómo activar este tipo de widgets.

Primero deberemos habilitar los widgets de la pantalla de bloqueo, a través de la sección Ajustes->Seguridad->Habilitar Widgets. Y cómo es una aplicación que hace uso de las notificaciones del usuario será necesario darle permisos. También en Ajustes->Seguridad->Acceso a Notificaciones.

Colores del Led

Recomendado por parte de uno de mis alumnos me decidí a probar la aplicación Light Manager.  Esta aplicación nos permitirá asignar distintos colores a las distintas notificaciones que tenemos instaladas en el dispositivo. Una manera bastante útil de saber si tenemos mensajes de Whatsapp o correos pendientes de leer, etc…
Una vez instalado también deberemos darles permisos para que pueda leer las notificaciones del sistema. De la misma manera que para el NiLS.

Text to Speech

Cuando vamos conduciendo en el coche, está claro que no debemos dejar de mirar la carretera como medida de seguridad. Normalmente cuando conduzco suelo llevar el Waze instalado como navegador GPS , para evitar distracciones innecesarias al volante. Pero como la pantalla está el navegador no podemos ver las notificaciones sin perder de vista la carretera y quitar las manos del volante. 
La mayor parte de los sistemas multimedia que llevan instalados los coches de serie, permiten integrar por Bluettoth el sonido del móvil a los altavoces del coche. Según vas conduciendo puedes reproducir música que tienes almacenado en el dispositivo mediante Google Play Music. Según modelos esto puede resultar más o menos complicado, pero una vez configurado resulta muy útil. Basta con tener el bluetooth activado en el móvil y comienza la reproducción automáticamente desde la canción que la dejaste sonando. Además Waze te va dando las indicaciones de viva voz por los altavoces del coche. 
 De la misma manera podemos llegar a instalar una aplicación que nos lea las notificaciones según las vayamos recibiendo.  Una aplicación de este estilo es Botifier. Para minimizar el impacto en la concentración al conducir podemos seleccionar sólo las aplicaciones que nos interesa que puedan leerse y así escucharlo por los altavoces también. 

Curso de Objective C Básico: Introducción al Lenguaje de programación Objective C

Ya teniendo claro como funciona el entorno, lo suyo es empezar por las bases del lenguaje, sus características principales y su funcionamiento básico.

Introducción

Teniendo claro como crear proyectos en Xcode, ahora ya podemos incluir nuevo código en los proyectos. Para empezar y sin que sirva de precedente modificaremos el fichero main.m.
Los ficheros .m son los ficheros de implementación y los ficheros .h serán los ficheros de cabecera. Como puede apreciarse en sus similitudes, básicamente Objective C es como C pero vitaminado y orientado a objetos por lo que dispondremos de bibliotecas de clases bastante potentes a la hora de hacer nuestras aplicaciones, como este curso está enfocado a aprender el lenguaje en sí mismo, no veremos muchas de las bibliotecas disponibles para el lenguaje, ya que muchas de ellas van enfocadas al desarrollo gráfico de aplicaciones que es donde Objective C destaca, pero como todo se debe aprender desde lo básico es por donde vamos a empezar. 

Estructura del fichero main.m

Como en un lenguaje derivado de C tenemos todos los elementos de este lenguaje disponibles, estructuras de control y variables incluidas, pero veamos el ejemplo del fichero generado por el asistente de Xcode:
//
//  main.m
//  00_introduccion
//
//  Created by pepesan on 24/02/14.
//  Copyright (c) 2014 pepesan. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        
        // insert code here…
        NSLog(@”Hello, World!”);
        
    }
    return 0;
}

Comentarios

Como se puede ver en el código, tenemos los típicos comentarios de una línea al principio del fichero, que son los // que vemos al principio de cada línea, aunque también podemos disponer de los comentarios de varias líneas /*…*/ he aquí los ejemplos

//comentario de una línea
        
/*
Comentario de varias líneas

*/

Imports

Las importaciones son como las inclusiones de C, nos permiten tener acceso a otros ficheros para incluir su contenido y definiciones, pero como en Objective C las bibliotecas son muy completas, normalmente nos facilitan su inclusión mediante un fichero de cabecera de resumen que incluye todo el contenido de la biblioteca con un sólo import, en el ejemplo tenemos la inclusión de la biblioteca principal de objetos de Objective C
#import <Foundation/Foundation.h>
Esta biblioteca es la que tiene los objetos de datos principales, podemos consultar las clases desde la página oficial de Apple:
Siempre que necesitemos hacer uso de otra clase en un fichero .m tendremos que hacer referencia al fichero de cabecera .h que defina dicha clase o conjunto de clases.

Función main

Como la función main de C será la encargada de gestionar el flujo principal de nuestra aplicación. Tiene los típicos parámetro de entrada de C, con el número de argumentos y los argumentos de llamada al programa desde línea de comandos y tiene que devolver un número entero como valor de resultado del programa, lo típico. Si vienes de C lo entenderás a la primera. 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        
        // insert code here…
        
    }
    return 0;
}
El @autoreleasepool lo que intenta es definir un entorno para que todas las variables definidas bajo ese entorno, comprendido entre las {} deberán ser liberadas de la memoria según se salga del pool.

ARC

El Automatic Reference Counting es la base de la gestión de la memoria es Objective C. Funciona de una manera distinta a C o Java. el ARC, como lo llamaremos a partir de ahora, lo que trata de hacer es evitar que el programador tenga que manualmente liberar la memoria de todas las variables, a fin de evitar quedarnos sin memoria en el dispositivo o tener memory leaks,  por lo que el programador sólo debe centrarse en reservar la memoria suficiente para los datos a almacenar y de definir que tipo de puntero necesitaremos para apuntar a esa memoria. Aunque este tema lo trataremos con más profundidad en la gestión de variables, podemos adelantar que respecto a ARC tenemos dos tipos de variables, las strong y las weak. Las strong mantendrán en la memoria los datos hasta que nos salgamos de su ámbito de actuación, pero las weak, no liberarán la memoria al salirse de ámbito. Por lo que podríamos considerar que las strong los las poseedoras de los datos en memoria y las weak son meros punteros a la información.  Si se libera una variable weak, no pasa nada, mientras que siga existiendo una strong sobre el dato. Sin embargo si la variable strong es la última que apunta a los datos y ésta sale de ámbito, el dato referenciado se liberará de memoria. 

Trazas

Como en todo lenguaje es posible sacar mensajes con pantalla/consola esto lo realiza la clase NSLog, como puede verse en el ejemplo:
NSLog(@”Hello, World!”);
Como puede verse de trata de la ejecución de una “función” al que se le pasa como parámetro una cadena de caracteres, en este caso utilizamos un literal, pero todos los literales en Objective C van precedidos de una @ y entre “”.
En Este caso saldrá por la consola el mensaje entrecomillado Hello, World!
Y por supuesto como toda sentencia C debemos terminarla con un ;

Conclusiones

Así que tenemos a un lenguaje similar a C con @ a lo anotaciones de Java, Orientado a objetos y con @antes de los literales de cadenas de caracteres, un poco rarito pero funcional. 

Curso de HTML5: Nuevos campos y atributos de Formulario

Aquí está el listado de los nuevos campos de formulario:

  •  color: selección de color
  • date: selección de fecha, adiós jcalendar!
  • datetime: fecha y hora
  • Time: sólo hora
  •  Month: mes del año
  • Week: semana del año, esto va para los alemanes 🙂
  • email: para rellenar más fácil un email en el movil
  • number: para rellenar más fácil un número
  • url: para rellenar más fácil una url en el movil
  • tlf: para rellenar más fácil un teléfono en el movil
  • search: típico campo de buscar
  • range: slider desplazador cuyo valor va entre min y max, y a pasos con step.
  • datalist: define un listado para un campo. http://www.w3schools.com/tags/tag_datalist.asp
  • file con opción de multiple

Nuevos atributos de campos de formulario:

  •  Required: campo requerido
  • Placeholder: nos permitirá colocar un texto predefinido en el valor del campo pero que al escribir el usuario se quita 
  •  Autofocus: campo que adquiere el foco
  •  Readonly: solo lectura
  •  Disabled: deshabilitado
  •  Pattern: validaciones por expresiones regulares
  •  Autocomplete: con off deshabilitamos el autocompletado del navegador
  •  Min max step: atributos de los tipo range, number y progress
  • label en option , para dejar ya el value 🙂

Práctica sugerida

Intenta usar estos nuevos tipos de campos en un formulario html5 y comprueba cómo se ven en Chrome, Firefox e Internet Explorer. Si tienes la posibilidad intenta verlo también desde un móvil.

Licencia Creative Commons

Curso de HTML5: Etiquetas Semánticas

Nuevas etiquetas semánticas

A continuación detallaremos las principales nuevas etiquetas semánticas de HTML 5:
  • header: el típico div id=”header” sería lo más aproximado, debería contener la cabecera del documento, lo típico que remetimos en la plantilla a lo largo de todo el sitio web.
  • footer: lo mismo pero con el pié de página, donde solemos colocar el copyright el mapa de la web , la dirección de la empresa etc…
  • section: aquí el tema no es tan fácil de definir. Se refiere a las distintas zonas dentro de una determinada web, las áreas donde vamos colocando los widgets, los contenidos, los menús, las partes en las que está compuesta la página. También puede representar distintas partes de una noticia o un post de un blog.
  • article: en si sentido más genérico sería una noticia, un post, un artículo de un blog, o incluso la ficha de un producto en la tienda. En su sentido más académico serían artículo publicados. 
  • nav: es la etiqueta que debería englobar los menús o las barras de navegación, las migas, etc…
  • aside: todo contenido complementario al contenido principal, que debería estar o dentro de una section o un article, debería estar dentro de un aside. Un ejemplo podrían ser los apartados de productos relacionados con un producto que estoy visitando. 
  • hgroup: debería agrupar aquellas cabaceras, h1, h2, etc.. que van relacionadas. Nombre de empresa y eslogan, sería un ejemplo. 
  • figure: típico gráfico relacionado con el texto, donde visualmente podemos ver algo que nos están explicando en texto, tablas, imágenes, gráficas, etc.. serían figure’s
  • time: se ofrece a escribir una fecha o una hora, cuidado con el atributo datetime 🙂
Lo bueno de la semántica es que no hay maneras correctas o incorrectas de aplicar estas etiquetas, sino maneras lógicas para el autor de colocarlas. No existe una regla definida de si los article deben contener sections o no. Aunque sería lógico pensar en un apartado de la web con los últimos artículos sería una sección que dentro tuviera un listado de artículos.

Práctica propuesta

Intenta ir a la web de amazon de un producto, e intenta definir que etiquetas asociarías a que apartados de la web. Repite ese proceso con un blog, la portada de un periódico y un sitio de recetas. 
Abre un comentario y deja tus impresiones.

Licencia Creative Commons

Suscríbete al Boletín

Si quieres estar al tanto de las novedades del blog, ya sabes :)
* = campo obligatorio

powered by MailChimp!

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies