Mostrando entradas con la etiqueta Laboratorio de Ingeniería de dispositivos móviles. Mostrar todas las entradas
Mostrando entradas con la etiqueta Laboratorio de Ingeniería de dispositivos móviles. Mostrar todas las entradas

martes, 22 de mayo de 2012

Consideraciones en promocionar una aplicación

Algo que debemos considerar al realizar una aplicación es que, luego de un trabajo intenso, en donde dedicamos muchas horas para realizar una aplicación y que hicimos de todo para que la aplicación al final de cuentas llege a las manos de un usuario real, es importante recalcar que debemos de considerar ciertos aspectos al momento de subir aplicaciones a una tienda administrada por la compañia del dispositivo, ya sea iOS, Android o Blackberry, etc...



Según estudios, iOS es la plataforma más rentable para la mayoría de aplicaciones hablando en este momento, ya que a pesar de ser más competitivos y tener más aplicaciones que las demás tiendas, los usuarios de la App Store están dispuestos a pagar por tener un contenido que las otras tiendas, por lo que podemos decir que es la mejor en estos momentos, pero tambien cabe recalcar que Android, ha superado a Apple en términos de descargas en los ultimos años.

En general, la mejor manera de que nuestra aplicación llame la atención del público, considero que es la contrucción de una aplicación funcional y con una interacción amigable, todos apreciamos que este bonita y fácil de usar, pero tambien dependen otros factores de los cuales hablaré en esta entrada.

Nombre de la aplicación y palabras clave de búsqueda.

  • Es mejor elegir palabras clave en donde los usuarios pueden buscar aplicaciones similares a la que nostros estamos desarrollando.
  • Hacer una lista de las palabras clave más importantes primero.
  • No es necesario repetir palabras en el titulo de la aplicación o en la categria principal.
  • Los motores de búsqueda algunas tiendas de apps son primitivas y no se ajustan a los sinónimos, pluralidad o errores tipográficos.
  • Separar las palabras con espacio o comas pero no ambas en las palabras clave.
  • Si la aplicación es multilenguaje, estaría bien el ver cuales de las palabras clave en los mercados según el país.
  • Comience el nombre de la aplicación, con la letra A o con un numero si es posible, ya que por ejemplo iTunes se lista en orden alfabético y puede ayudar a que la aplicación se presente en la lista al principio.

Formato de la descripción

Seria importante tomar en cuenta que, solo las primeras 3 lineas que se muestran por defecto en la app store antes de que seleccione la app, por lo que es importante asegurarnos de que ese texto de 3 lineas sea relevante para que las personas lo seleccionen.

Por ejemplo, veamos estas dos capturas de pantalla, en donde podemos ver que en una el formato es tedioso y en otra el formato es mejor en la descripción de la app.




Proporcionar una versión gratuita o lite de la aplicación.

Las palabras más buscadas son "free" o similares, por lo que es bueno ofrecer una versión gratuita limitada de la aplicación de pago ya que mejora el descubrimiento de la aplicación, creando una experiencia libre y ayuda a que la aplicación de pago pueda descargarse más.

Baja el precio de la aplicación.

Varias personas tiene existo en sus aplicaciones cuando ellos bajan de precio su app en la tienda, esto hace que se promocionen y tengan más exito, agregando palabras como "gratis" o "barato" en el título de la aplicación.


Crear un buen logo.

Tener un logo hace que podamos destacar entre las apps que existen en la tienda, hace que llame la atención de la gente que va a descargarla.

Cualidades de los logotipos:

  • Alto contraste de los colores
  • Utilizar una letra o animal de logotipo provoca una "linda" respuesta.
  • Poner contenidos verdes o naranjas.
  • Un contorno distinto a el logo.

Aquí seria bueno realizar un estudio de preguntar cual es el logotipo más agradable que ellos consideran y poder así sacar una conclusión de cual utilizar.

Crear una versión tablet de la app

Existen menos aplicaciones para el iPad o versiones tablets para Android en el mercado, así que si nostros tenemos una versión para iPad o tablet de nuestra aplicación podemos fijar por ejemplo, un precio más alto y que tengamos menos competencia en el descubrimiento y clasificación de la app, por lo que este es un punto importante.

Espero que esta entrada nos ayude a entender que si bien, al programar una aplicación debemos de tener ciertas métricas para llegar al éxito, también existen cuestiones de marketing que debemos tomar en cuenta a la hora de comercializar nuestra app, en esta página pueden encontrar un articulo extenso sobre esto.

lunes, 21 de mayo de 2012

Modelo-Vista-Controlador

El Modelo Vista Controlador es un patrón de arquitectura y es un método de diseño que organiza la interfaz humano-computadora para las aplicaciones de software, podemos decir que este paradigma, lo que hace es dividir el panel de operador en un modelo, el cual son los datos de la aplicación, por otra parte, la vista, que es la forma en que el usuario ve el sistema.

El propósito de muchos sistemas o software es para recuperar datos desde una base de datos y mostrarlo al usuario, después de que el usuario cambia los datos, el sistema almacena los cambios en la base de datos, esto debido a que el fluho de información se encuntra entre la base y la interfaz de usuario, pero muchas veces existe un problema en el que la interfaz de usuario tiende a cambiar mucho más frecuentemente que el sistema de almacenamiento de datos, otro problema por ejemplo es el acoplamiento de datos y elementos de la interfaz de usuario es que las aplicaciones tienden a cambiar de colores o logos, sería un desastre tener que cambiar uno por uno, entonces, como podemos hacer que la funcionalidad de la interfaz de usuario de una aplicación se pueda modificar fácilmente las partes individuales, es aquí donde entra el modelo-vista-controlador.

 El Modelo-Vista-Controlador (MVC) separa el modelo de la presentación y las acciones en la entrada del usuario en 3 clases separadas.
  • Modelo: El modelo maneja el comportamiento y los datos de la aplicación, respondiendo a las solicitudes de información acerca de su estado, responde a las intrucciones para cambiar el estado.
  • Vista: La vista gestiona la visualización de la información
  • Controlador: El controlador interpreta las entradas, por ejemplo, en el caso de iOS, los toques que le hacemos a las pantallas, informando al modelo el cambiar según sea apropiado.

 Es importante recalcar que tanto la vista y el controlador dependen directamente del modelo, como vemos en el diagrama, sin embargo, el modelo no depende de la vista ni del controlador, entonces esta es una de las principales ventajas de la separación ya que permite que el modelo que se contruyó y probó independiente de la presentación visual, la separación entre la vista y el controlador es secundario en muchas aplicaciones, por lo tanto el Modelo Vista Controlador es un patrón de diseño fundamental para la separación de la lógica de la interfaz de usuario y de la lógica del trabajo.

El MVC en iOS, los View controllers son una parte fundamental entre los datos de una aplicación y su aspecto visual, cada vez que una aplicación de iOS muestra una interfaz de usuario, el contenido que se muestra es manejado por el view controller o un grupo de controladores que coordina la vista con los demás, proporcionando un esqueleto para contruir aplicaciones en iOS.

iOS proporciona muchas funciones integradas en las clases de controlador de vista para apoyar elementos estandar de interfaz de usuario, como la navegación y barras de tabulación.


En MVC, cada controlador posee una vista y un modelo, de hecho es uno de los patrones más antiguos en la ingeniería de software.





¿Cuando usar MVC?
  • Cuando el código se mezcla entre sí, es dificl para nostros desarrolladores trabajar usando una fusión extraña porque no existe una división clara entre la interfaz y los datos. 
  • La interfaz, la lógica de la aplicación y los datos son poco probable que sean reutilizable en otras aplicaciones ya que la combinación de los tres es demasiado específicas
  • La aplicación es difícil de extender y la adición de caractrísticas requiere de trabajo en torno al código existente, el desarrollador necesita que trabajar con todo el código para poder agregar características, aunque muchas no esten relacionadas entre si.
En la suite de Apple para iOS el desarrollo de aplicaciones para el sistema, el diseño de MVC se da de una forma "natural", ya que por ejemplo, cuando estamos haciendo los proyectos y empezamos a programar, se nos guiará en el uso de patrones de disño MVC automáticamente.

Espero que esta entrada nos ayude a entender como funciona el MVC y diseñar para futuros posteriores aplicaciones utilizando este tipo de patrones.




Seguridad y permisos en Android

En esta entrada hablaré de como podemos, nosotros como desarrolladores, utilizar las características de seguridad que nos proporciona el sistema operativo Android.



Podemos decir que el sistema operativo Android es un sistema de privilegio-separado, en donde cada aplicación que se pone en ejecución tiene una identidad distinta en el sistema, por ejemplo una ID de usuario y un ID de  grupo, endondes las partes del sistema también están separados en distitans identidades, podemos decir que Linux, como lo vimos en sistemas operativos, lo que hace es aislar las aplicaciones entre si y del sistema.

Para poder proporcionar características de seguridad a una aplicación se pueden declarar un mecanismo de permiso en donde imponemos restricciones a las operaciones específicas de un proceso al igual que permisos por URI para la concesión de elementos específicos de datos.

Arquitectura de seguridad

Un punto central en el diseño de la arquitectura de seguridad de Android es que no hay ninguna aplicación, entonces por defecto, se tienen permisos para realizar cualquier operación que pueda tener un impacto negatico en otras operaciones, o en el sistema operativo en si, inclusive en el usuario, esto incluye el leer o escribir los datos privados del usuario, leer o escribir archivos de otra aplicación, la realización de acceso a la red, manteniendo el dispositivo en modo activo, etc.

 Debido a que las aplicaciones de Android deben hacer de manera explícita el compartimiento de recursos y datos, debemos de declarar que permisos se necesitan para hacer las capacidades adicionales de nuestra aplicación, es importante decir que las aplicaciones, al momento de instalarlas, el sistema le pide el aceptar las condiciones en que esta aplicación va a funcionar, tambien, que Android no tienen ningún mecanismo para dar permisos de forma dinámica en tiempo de ejecución, para no complicar la experiencia del usuario.

Aplicaciones con certificado

Todas las aplicaciones de Android, los archivos .apk, deben de tener "firmado" un certificado cuya clave privada se lleva a cabo por nosotros como desarrolladores, este certificado tiene como finalidad identificar al autor de la aplicación, no tiene que ser firmado por una autoridad de certificación, por lo que es perfectamente facil de realizar y una manera típica de generar certificados para distinguir a los autores de las aplicaciones, permitiendo que el sistema pueda conceder o denegar el acceso a las aplicaciones de permisos a nivel de una firma y conceder o denegar la solicitud de la aplicación para una ID de linux.

ID de usuario y acceso a archivos


Al momento de hacer una instalación de una aplicación de Android, se le da a cada paquete un ID de usuario de Linux distinta, en donde se mantiene constante durante la vida del paquete en ese dispositivo, en un dispositivo que sea diferente, se puede tener el mismo paquete pero con UID diferente, lo que importa es que cada paquete tiene un UID distinto en un determinado dispostivo.

Debido a que la aplicación de seguridad que sucede es en el nivel de proceso, el código de cualquiera de los dos paquetes que normalmente no se pueden ejecutar en el mismo proceso, a que estos necesitan funcionar como diferentes usuarios, esto es similar a lo que pasa en Linux.

Se puede utilizar el atributo sharedUserId en una etiqueta en el AndroidManifest.xm, en donde les asigna el mismo ID de usuario a los dispositivos y permisos en los archivos.

Los datos que podamos almacenar en una aplicación se les asignará la ID de la aplicación, normalmente no son accesibles para otros paquetes, cuando se crea un nuevo archivo, se pueden utilizar banderas como MODE_WORLD_READABLE o MODE_WORLD_WRITEABLE para permitir que cualquer otro paquete puede leer o escribir en el archivo, permitiendo su lectura o escritura global.

Uso de permisos

Una aplicación básica en Android no tiene permisos asociados con ella, lo que significa que no puede puede hacer nada de lo que tendría efectos secundarios en la experiencia del usuario o cualquier otro dato en el dispositivo, para hacer uso de características especiales protegidas por el dispositivo, se debe incluir en sus etiquetas del AndroidManifest.xml uses-permission.

Por ejemplo si se necesita, en mi caso del proyecto de la materia, el uso de internet, se declara de esta manera.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.cantamela" >
    <uses-permission android:name="android.permission.INTERNET" />
    ...
</manifest>

Así, en el momento de instalar la aplicación, los permisos solicitados por la aplicación se preguntarán en el instalador, no se permite que estos cambien luego de que la aplicación inicia.

Los permisos proporcionados por el sistema Android se pueden encontrar en Manifest.permission, cualquier aplicación puede definir y hacer cumplir sus propios permisos, así que esta no es una lista completa de todos los permisos posibles.

Espero que esta entrada nos ayude a entender como podemos manejar los permisos en Android y como funciona de manera óptima para tener una mejor experiencia al usuario.

jueves, 17 de mayo de 2012

Notificaciones toast.

¿Que son los Toast?

Las notificaciones Toast en Android, son mensajes que aparecen en nuestra pantalla del dispositivo, por lo que solo se llena el espacio requerido para este mensaje y la actividad actual del usuario permanece visible e interactivo, por lo que la notificación automáticamente se desvanece.

Una notificación toast, es por ejemplo cuando utilizamos la aplicación integrada de alarma, en donde la alarma está activada, se muestra una notificación para que saber que la alarma se creó.


Una notifiación toast se puede crear a partir de una actividad o un servicio en Android, podemos al igual cambiar tamaño y modificarla a nuestra manera, por lo que en esta entrada, explicaré como poder hacer una Toast customizada por nosotros para el uso de la aplicación Cantamela!.

Toast básica.

Para inciar en la realización de una toast básica, debemos de utilizar el método makeText, en donde como parámetros le pondremos, el contexto de la aplicación, el texto a representar y la duración que quieras que se muestra, para al final utilizar show(), para mostrarla, como se ve en el siguiente código.

Context contexto = getApplicationContext();
CharSequence texto = "Soy una notificacion toast :D";
int duracion = Toast.LENGTH_LONG;

Toast toast = Toast.makeText(contexto, texto, duracion);
toast.show();

En donde tenemos este resultado:



Toast propia.

Si necesitamos realizar una toast, en donde no solamente necesitamos un texto, podemos hacer una toast hecha por nosotros en donde primeramente necesitamos hacer un xml, con nuestras preferencias que deseamos que tenga esta notificación, en mi caso, hice este tipo de xml, grabado como msj.xml.


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/notificacion"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="10dp"
              android:background="#3D2423"
              >
    <ImageView android:id="@+id/imagen"
               android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:layout_marginRight="50dp"
               android:layout_marginLeft="50dp"
               />
    <TextView android:id="@+id/texto"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:textColor="#D6C274"
              android:textSize="45sp"
              />
</LinearLayout>


 Ahora, por el lado de java vamos a hacer las siguientes llamadas a métodos para construir el toast, hay que fijarnos que el id es "notifiacion", y que donde posicionará el texto es el id "texto", al igual que el id "imagen", y "audifonos1" es la imagen que estoy utilizando de ejemplo.


Context contexto = getApplicationContext();
LayoutInflater inflater;
inflater = (LayoutInflater)contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View notif = inflater.inflate(R.layout.msj,(ViewGroup) findViewById(R.id.notificacion));
ImageView imagen = (ImageView) notif.findViewById(R.id.imagen);
imagen.setImageResource(R.drawable.audifonos1);
TextView texto = (TextView) notif.findViewById(R.id.texto);
texto.setText(mensaje);

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(notif);
toast.show();


Tenemos este resultado:



miércoles, 16 de mayo de 2012

Asynctask en Android

Una de las "consideraciones" relativamente nuevas del sistema operativo Android Ice Cream Sandwich, que es el más nuevo hasta la fecha que estoy escribiendo esta entrada y en el cual estoy haciendo mi aplicación, es que no puedes hacer una conexión a un servidor en una sola tarea principal, por lo que es necesario crear tareas adicionales en la actividad para poder hacer esta conexión, algo que por ejmplo en los sistemas operativos Android, versiones 2.X.X, no tienen, por lo que estuve investigando como poder hacer este tipo de conexión en mi app y encontré que podemos hacer tareas en el fondo en la aplicación, en esta entrada hablaré de como puedes hacer ese tipo de tareas.


Clase AsyncTask

Cuando estamos desarrollando una aplicación de Android, podemos disponer de alguna tarea se pueda ejecutar en segundo plano, pero que pasa si solamente queremos hacer una tarea sencilla en el fondo, para eso podemos utilizar esta clase AsyncTask.

Nuestra aplicación de Android puede llegar a ser compleja de manera que estemos desarrollando con el tiempo, por lo que, si tenemos una conexión con un servidor o enviar y recibir datos desde la Web, como lo es en mi aplicación, se ha vuelto obligatorio en las últimas versiones que esto se haga sin interrumpir el hilo de la interfaz de usuario, si deseas hacer esto, te lanzará errores que no estña permitiendo hacerlo.

En primer lugar vamos a definir, ¿Cuál es el hilo de la interfaz de usuario?, bueno pues este es el que regulamente es el principal en nuestra aplicación, esto quiere decir que es en donde todo se procesa para inciar la aplicación, es como tener una sola tarea que hace todo lo importante, entonces, si solo tuvieramos que hacer una interfaz de usuario, en donde solamente mostramos botoncitos y hace funciones sencillas, esto está bien, pero si tu no estás en ese caso, entonces podemos tener múltiples hilos que se ejecutan al mismo tiempo, en una sola aplicación, el hilo de la interfaz de usuario, que nos permite movernos a través de la pantalla, mientras que por ejemplo, en una tarea de segundo plano, estamos recibiendo datos desde un servidor.

¿Cómo podemos hacer esto? Pues, existen muchas maneras, según yo, por ejemplo usuando Threads de java, hacer Runnables, etc..., pero considero que esta es una manera mucho más sencilla y mejor que las demás, utilizando la clase AsyncTask.

Una estructura típica de una clase de AsyncTask es la siguiente:


private class miTarea extends AsyncTask<x, y, z>

protected void onPreExecute(){

}


En donde podemos ver que onPreExecute() se ejecuta antes de empezar un nuevo hilo, no tiene valores de entrada ni de salida, así que aquí podemos inicializar las varibles o lo que querramos hacer.

 
protected Z doInBackground(X...x){

}


En este método, podemos decir que es el más importante de la clase AsyncTask, es en donde podemos poner todo lo que queremos que se haga en el fondo de la aplicación, en un hilo diferente al principal, aquí la entrada es un conjunto de objetos x, en donde como podemos ver en la cabecera, son los que los que le entran a la extends de AsyncTask, devolviendo un objeto Z.


protected void onProgressUpdate(Y y){

}


 Este método es el que se llama cuando se utiliza otro método llamado publishProgress(y), en donde por lo general se utiliza cuando queremos mostrar algún progreso o información en pantalla principal, al igual que una barra de progreso, mostrando la operación que se está haciendo en el fondo.


protected void onPostExecute(Z z){

}


Este método es utilizado cuando después de toda la operación que se hizo en background, lo manda llamar, y le entra como parámentro de entrada, el parámetro de salida del método de doInBackground.

Entonces podemos decir que los valores que entran a la AsyncTask son X que es el tipo de variable de entrada que tenemos para el proceso del fondo.

La Y es el tipo de objetos que se van a introducir en el método onProgressUpdate, y la Z es el tipo de objetos que tendremos del resultado de las operaciones hechas en doIbBackground.

Para hacer llamar esta tarea lo que tenemos que hacer es:

 
miTarea tareita = new miTarea();

tareita.execute(x);


En donde x es la entrada del parametro del tipo X.

Podemos que, una vez que se esté ejecutando, saber el estatus, con el siguiente método.

tareita.getStatus();

en donde podemos tener resultados:
  • Running: Indicando que la tarea se está ejecutando
  • Pending: Indicando que la tarea no se está ejecutando
  • Finished: Indicando que onPostExecute(); ha terminado.


Consejos

Estos consejos les pudieran ayudar al momento de realizar una AsyncTask.
  • No debes de llamar a los métodos de onPreExecute, doInBackground, y onPostExecute manualmente, ya que estos se realizan automáticamente por el sistema.
  • No se puede llamar un AsyncTask anidado o dentro de otro AsyncTask. 
  • La llamada a un método de ejecución debe de realizarce desde el hilo de la interfaz de usuario.
  • Los parámetros de entrada de la tarea pueden ser arrays de objetos, de esta manera podemos poner cualquier objeto que querramos.

Referencias

Usando efectivamente AsyncTask
Class Overview

Ciclo de vida de una actividad. Android

Ciclo de vida

Una actividad es cuando nosotros solamente tenemos una pantalla que el usuario ve en un dispositivo al mismo tiempo, normalmente, una aplicación tiene múltiples actividades, y el usuario va intercambiando entre estas, por lo que podemos decir que las actividades son la parte más visible de una aplicación en Android.

Esto es muy frecuente ver por ejemplo en páginas web en donde tenemos varias páginas, por ejemplo la página inicio que liga a otras páginas, en esta analogia podemos ver que es similar a Android, en donde tenemos Actividas principales que se ligan a otras para al final hacer una aplicación, por ejemplo si nosotros nos vamos a contactos y elegimos a un amigo de contactos, lo podemos seleccionar y poder mandar un SMS, lo cual liga a otra actividad.

En el punto de vista de nuestro campo, podemos decir que una Actividad es iniciar con la creación de un nuevo proceso de Linux, la asignación de memoria para los objetos de la interfaz de usuario, poniendo los objetos de diseño que hemos declarado en el XML, para crear la pantalla, por lo que este trabajo es simplemente el incio para poner a trabajr una actividad,  vigilado por medio de un administrador de actividads.

El adminsitrador de actividades del sistema, es el responsable de crear, destruir y hacer gestión a las actividades, por lo que por ejemplo, cuando el usuario inicia por primera vez una aplicación, el gestor de actividades creará su actividad y lo pondrá en la pantalla, para luego más tarde, que el usuario cambie de pantalla, el gestor de actividades moverá la actividad para ponerlo en un lugar de espera en el sistema, de esta manera, si el usuario desea volver a una actividad, se puede iniciar con mayor rapidez, por lo que al tener muchas actividades que ya no se han utilizado por cierto tiempo, hace que este administrador destruya para liberar espacio para las que están actualmente disponibles, por lo que podemos ver que Android esta mecanisado para ayudar a mejorar la velocidad de la interfaz de usuario y así mejorar la experiencia de este.

La programación para Android de manera conceptual, diferente a la programación de otros ambientes, por ejmplo en iOS, yo en lo particular, he manejado un poco los dos diferentes sistemas, mientras Android utiliza este tipo de ambiente, iOS maneja un diseño MVC, del cual hablaré en otra entrada, en Android, por el contrario estamos respondiendo a ciertos cambios de estado en la aplicación que estemos realizando, por lo que se basa en la aplicación como applets o servlets, en donde se trata de un ciclo de actividad, no de en qué estado se encuentra esta actividad, por lo que tenemos maneras diferentes de crear aplicaciones para Android.


Este es un ejemplo de un ciclo de vida de una actividad:





Iniciando el estado. [Starting...]


Cuando en una actividad no está en la memoria, entonces es que esta en un estado de partida, esto quiere decir que si bien, está esperando a ser puesta en marcha, la actividad pasará por un conjunto de métodos, por lo que nosotros como programadores debemos de llenar para que esta actividad realice su estado de ejecución.

Hay que tener en cuenta que la transisción de un estado al otro a partir de una ejecución es una operación costora en términos de computación, por lo que esto afecta directamente con la vida de batería del dispositivo Android, esta es la razón por lo que no se destruyen automaticamente las aplicaciones cuando ya no se muestan, ya que si el usuario desea volver a utilizarla, esta ya esta en estado de esperando.


 Estado de ejecución [Running...]

Cuando en una actividad, tenemos desplegado en la pantalla la aplicación en conjunto con su interacción de usuario, podemos decir que este es el estado de ejecución el cual podemos decir que todas las interacciones propuestas, como escribir, tocar un botón, ya se encuentran disponibles y están a cargo de la actividad.

La actividad de ejecución es el que tiene prioridad en la administración de actividades, por lo que debe poder conseguir más memoria y recursos que necesita para que esta funcione rápidamente, asegurandose que el sistema operativo está haciendo todo lo posible para que la aplicación sea lo más fluida posible.


Pausado

Esto es cuando una activad no esta en el enfoque del usuario, que no interactua con ella, pero es visible en la pantalla, podemos decir que está en un estado de pausa, en donde podemos decir que muchas veces este estado no llega a concretarse en una aplicación ya que si tenemos un dispositivo, regularmente se está utilizando o simplemente no, pero en algunas aplicaciones muy especificas, como en el caso de los videojuegos, podemos ver cuadros de texto que dicen que la actividad está en pausa, y que algunas veces esta a un paso de pasar al estado de ser detenido completamente.

Es importante recalcar que en este estado, aún tienen todavia alta prioridad los términos de conseguir memoria y otros recursos, como en el estado anterior, esto es porque todavia son visibles para el usuario y no se quita de la pantalla.


Detenido [Stopped...]

Cuando una actividad ya no está visible, pero aún está en la memoria, se dice que este es un estado de detención, en donde la actividad detenida podría volver a estar enfrente para convertirse en una actividad principal por el administrador de actividades, o podría ser destruido y eliminado de la memoria.

El sistema realiza esto ya que las actividades en un estado de detención puede ser probablemente que el usuario quiera verla otra ves, dentro de poco tiempo, por lo que reanudar una aplicación tendria un impacto más barato que iniciar toda la actividad a partir de cero, porque ya tenemos todos los datos y objetos que se cargan en memoria y simplemente tienen que traer todo hasta el primer plano.


Destruido [Destroyed...]

Una actividad destruida, es cuando ya no está en la memoria, entonces el administrador de actividades de android ha decidido que la actividad ya no es necesaria que esté en memoria y la ha eliminado, por lo que antes de destruir esa actividad, se pueden realizar ciertas acciones como por ejemplo, guardar cualquier información importante que no se habia guardado antes, sin embargo, no hay una garantia de que la actividad se detuvo antes de ser destruido, por lo que es mejor programar que se guarden las cosas importantes en el estado de pausa, en lugar del esta detenido.

Es importante aclarar que el hecho de que una actividad este en un estado de ejecución no quiere decir que está realizando mucho procesamiento, por lo que de la misma manera, una actividad que está en estado de detención no es necesariamente que no está haciendo nada, entonces podemos concluir que los nombres de estado, se refieren precisamente a la forma activa de la actividad respecto a la entrada de usuario.


Referencias.

Android Programming: O' Reilly
Desarrollo en Android


miércoles, 9 de mayo de 2012

Tipos de pantallas táctiles

No todas las pantallas táctiles son iguales, nosotros como programadores, debemos de saber las diferencias y limitaciones que puedan tener las pantallas táctiles, si bien, todos los nuevos smartphones tienen una pantalla táctil, existen dos tipos principales que se utilizan en estos aparatos, las pantallas táctiles capacitivas y las resistivas, en esta entrada hablaré de cada uno de ellos.


Las pantallas táctiles capacitivas.



Este tipo de pantallas registran un contacto cada vez cada vez que entra en contacto con un conductor a objetos, por ejemplo los dedos humanos, entonces podemos decir que las pantallas táctiles capacitivas son muy sensibles, ya que no se requere ninguna presion para registrar un toque, inclusive el contacto más leve se activará en la pantalla, estas utilizan el vidrio como panel frontal, por lo que los hace altamente resistente, de fácil limpieza y resistente a arañazos.

Las pantallas táctiles capacitivas tambien pueden utilizarse con gestos multi-touch, por lo que en general, podemos conciderarlos como rápidas, pero, dada la sensibilidad de la pantalla táctil, podemos tener dificultad, por ejemplo al escribir, aquí el tamaño del teclado y la cantidad de espacio entre teclas tienen un aspecto importante en la pantalla, por lo que debemos tener en cuenta eso.

Las desventajas de la pantalla táctil capacitivo es con la precisión, la mayoría de las pantallas táctiles capacitivas no responden a los objetos que no sean los dedos humanos "desnudos", y por lo tanto no funcionan con lapices ópticos, o con la uña, esto es debido a que los dedos son mucho más ancho que un lápiz, haciendo que la escritura y otras acciones sean dificiles.

Algunos dispositivos con pantallas táctiles capacitivas son el iPhone, iPad y HTC HD2.


Las pantallas táctiles resistivas.



Las pantallas resistivas son construidas a partir de dos capas de material con un espacio entre ellos, entonces cuando se pulsa en la pantalla externa, las dos capas se prensan en contacto, registrando así un toque debido a que el sistema funciona según la presión, entonces se puede usar objetos como un lápiz o una uña, esto hace que las pantallas táctiles resistivas sean utiles para la escritura y otras funciones de alta precisión, las pantallas táctiles resistivas tambien son preferibles en climas más frios, donde los usuariso pueden usar guantes en sus teléfonos inteligentes y tabletas, al igual que son considerablemente menos costosos que las pantallas capacitivas.

Los inconvenietes es que muchas veces las pantallas táctiles resistivas no pueden soportar gestos mult-touch, tiene una poca visibilidad con la luz solar directa y su durabilidad es menor, por lo que la capa superior en una pantalla resistiva está hecho de un material blando y flexible que puede ser dañado mucho más facil que el vidrio y es necesario calibrarla cada cierto tiempo.

Algunos dispositivos con pantallas táctiles resistivas son muchos telefonos de Nokia, Samsung, etc.


¿Cual es mejor?

Es difícil decir si una u otra es mejor ya que la tecnología de pantalla táctil capacitiva es más reciente, por lo que es más cara, mientras que muchas empresas utilizan las características de gestos multi-touch y pantalla de cristal para ser considerados como tablets o smartphones de gama alta, con el uso de pantallas táctiles capacitivas, pero si se prefiere trabajar con un lápiz o usar guantes, una pantalla táctil capasitiva lo puede hacer proporcionando otros beneficios.

Voy a hacer una lista sobre los pro y las contras entre ellas.

Pantalla táctil capacitiva.

Pros:
  • Soporte multi-touch
  • Visibilidad incluso con luz del sol
  • Sensible al toque de dedo
  • Brillante
  • No es propenso al polvo

Contras:
  • Contar con humedad (al menos 5%)
  • Más caro
  • No funciona con objetos o uñas.

 Pantalla táctil resistiva.

Pros:
  • Baratas
  • Funciona con cualquier objeto
  • Funciona con cualquier nivel de humedad
  • Facilidad de uso
  • Muy útil para reconocimiento de escritura
  • Más precisa

Contras:
  • Da soporte a multitouch, pero no del todo como capacitivas
  • Es de alta sensibilidad
  • Mala visibulidad con el sol
  • La pantalla es mas vulnerable.


Así que no podemos decir que una es mejor que otra, simplemente podemos concluir con que cada una tiene características que son importantes y que nosotros podemos seleccionar la que nosotros consideramos que es mejor, pero es importante saber que tipo de pantallas vamos a utilizar para nuestro proyecto y si cual es más viable para hacerlo.

Probar APPs en diferentes versiones de Android

Para poder realizar aplicaciones compatibles con diferentes versiones de Android, podemos mediante eclipse poder verificarlas de manera virtual y checar su funcionamiento, para eso, en esta entrada explicaré como lo pueden hacer.

Cuando tengas algún proyecto en eclipse, lo que vas a hacer es ingresar a este botón, el cual es el manager del los emuladores virtuales de Android.


Entonces te abrirá una ventana, en donde puedes dar clic a nuevo y poder agregar las caracteristicas que deseas del emulador, entre ellas las versiones de android, el CPU, cuanta memoria de SD deseas, la resolución de pantalla y algunas propiedades como grabador de audio, ram, cache, etc.



Versiones disponibles de android, aquí podemos encontrar las que existen en el mercado y poder verificar nuestra app.



Si nuestra app necesita requerimientos específicos podemos activarlos aquí, en el apartado de Hardware, en donde en mi caso, es importante activar el grabador de voz.



Aquí podemos ver dos emuladores con diferentes versiones.





Seguridad en dispositivos móviles

Los smartphones, tablets, reproductores musicales entre otros dispositivos, actualmente son muy utilizados por las personas, ya que son mas fáciles de usar y los puedes traer contigo sin que tengas que andar cargando una computadora, pero al igual que una computadora ya sea de escritorio o laptop, también tienen riesgos sobre los datos personales, utilizamos los dispositivos para meternos a nuestras cuentas de correo o comprar aplicaciones y esta información puede estar vulnerable si no tenemos seguridad en el sistema operativo, por lo que en esta entrada hablaré acerca de la seguridad en los dispositivos móviles.

¿Existen riesgos en el cómputo móvil?

 Los dispositivos móviles pueden almacenar mucha información, son portátiles y muchas veces no se tiene la protección adecauada ya que pues como son portables, se pueden perder o robar y si no se toman precauciones, una persona no autorizada puede tener acceso a esta información almacenada en ellos.



Actualmente los dispositivos móviles son un punto clave para las personas que deseean hacer acceso indebido a nuestras cuentas ya que damos acceso a servicios que se almacenan en este dispositivo, por lo que es importante pimero como nosotros debemos de advertir al usuario estos riesgos, por ejemplo.

  • Establecer una contraseña para acceder y utilizar el dispositivo, esto ayuda para que personas no autorizadas no puedan tener datos.
  • Establecer un tiempo de bloqueo, si no estamos utilizando el dispositivo, ya que ayuda a que cuando no lo estemos usando, personas no puedan tener acceso a esto.
  • Mantener todo el software actualizado, incluyendo el sistema operativo que estes utilizando y las aplicaciones que tengas instaladas.
  • Es importante no tener sistemas como el jailbreak o flashear el dispositivo, ya que elimina la protección de fábrica del sistema.
  • Poner el dispositivo en sistemas que ofrecen seguridad, por ejemplo, Find My iPhone el cual ubica el dispositivo si se roba o pierde.

¿Cómo podemos hacer aplicaciones seguras?

Podemos en listar algunas sugerencias de qué podemos hacer nosotros como programadores para que la aplicación que estemos desarrrollando tenga una buena gestión de seguridad y que no tengamos problemas con malware o personas que quieran vulnerar datos.


Cifrar los datos en todos los niveles.

Es importante que no nos devemos de confiar en solamente la seguridad que nos ofrece el sistema operativo, para reforsarla, es importante cifrar todos los datos importantes, accesos a bases de datos, sistemas de archivos de nuestra aplicación.


Utilizar encriptación "fuerte".

Todos los datos deben ser encriptados con encriptaciones fuertes, asegurando que si se trasmiten a un servidor repoto, o entre dispositivos, tenga encriptación de extremo a extremo.


Aislar la información corporativa.

Toda información de alguna aplicación utilizada en una empresa accediendo de un dispositivo movil, debe de estar completamente aislado de los datos personales de un usuario, creando como capas de protección según los datos que se necesitan utilizar, de manera que los usuarios solamente puedan ver lo que necesesiten para trabajar y no información indebida.


Cumplir com politicas de seguridad.

Nosotros como desarrolladores debemos de asegurarnos de que las políticas de seguridad que tenga la empresa funcionen en esta aplicación, por ejemplo el obligar a que introduscan contraseñas seguras o permitir borrar a distancia datos de la aplicación después de intentar de introducir contraseñas fallidas, etc.


Garantizar que puedan accesar a la red de una forma segura.

Las empresas deben de reducir al minimo la necesitad de abrir puertos de entrada en la red, una solución para aplicaciones móviles seria hacer paquetes cifrados, autentificaciones de solicitudes y conceder accesos a unicamente servidores específicos.


Asegurar plataformas.

Controles estrictos para asegurar plataformas por ejemplo, detección de telefonos con jailbreak, desbloqueados y prevención de acceso a otros servicios, si es necesario.


Referencias.

Key Consideration.
Guidelines for Securing Mobile Computing Devices - Stanford

jueves, 3 de mayo de 2012

Tendencias futuras en móviles

Predecir el futuro de los dispositivos móviles es algo dificil, siempre estamos avanzando en el area de la tecnología y con esto, surgen necesidades al igual que nuevas tendencias, pero podemos decir que actualmente tenemos algunas caracteristicas en los celulares móviles con los cuales podriamos decir que estas serian las tendencias del futuro en esta area, por lo que en esta entrada hablaré de algunas de las innovaciones que considero importante, por lo que hablaré de 3 tendencias, las que considero más importante.

Pantallas con "superesolución".

Actualmente la pantalla táctil es una de las favoritas para la creación de nuevos celulares inteligentes,  pienso que el desarrollo de nuevas pantallas sera un objeto clave para tener una mejor capacidad visual y tambien en la respuesta táctil de estas, actualmente existen terminos que se utilizan como "QHD" que pretende tener muchos pixeles en pantallas pequeñas, al igual que las "Retina" de Apple, las cuales tienen inclusive más pixeles que una pantalla de 1080p, por lo que considero que este será una tendencia en el futuro.

Debemos de pensar que, este seria una tecnología clave ya que cambiaria la forma en generar software con interfaces adaptadas para este tipo de pantallas y que ocupan más memoria que las pantallas que actualmente la mayoria de los celulares tiene.

Cargadores inalambricos.

Una de las caracteristicas de las cuales existe mayor problema es la carga de la bateria, si bien en una entrada anterior hablé sobre esto, considero que una de las innvoaciones que pudieran salir en el futuro es que nuestros componentes electrónicos se puedan cargar de manera completamente inalámbrica.

Carga inalambricamente, pero necesitamos adaptadores gruesos :(

Actualmente en el mercado, he visto algunos tapetes en donde por medio de un adaptador que le pones a tu celular y lo acuestas en ese tapete, por medio de carga inductiva podemos cargar la bateria del celular de manera "inalambrica", aunque yo pienso que en un futuro, así como tenemos internet inalámbrico y podemos pasar datos sin cables, vamos a poder cargar nuestro celular de esta manera, cabe mencionar que investigando en la web, encontré que existen personas que trabajan en realizar un estandar para la carga inalámbrica, es llamada Qi, pueden encontrar más información aqui.

Celulares sin ningún puerto.


Podriamos decir que, la tendencia es que todo un celular o cualquier aparato móvil, sea completamente independiente de cualquier otro aparato, entonces que todo pudieramos realizarlo sin ningún puerto, por ejemplo escuchar musica con audifonos inalámbricos, hacer reproducción de videos en nuestra tele de manera inalámbrica, sincronizar nuestra computadora con nuestro celular sin cables, por lo que muchos de los celulares que existen ya tienen algunas de estas características, pero todavia dependemos de los cables, por lo que considero que esperemos que esta sea una de las cosas que tengamos en celulares en un futuro, como hablé en mi entrada de NFC, podriamos inclusive poder pagar por medio de nuestro celular sin utilizar un cable, por lo que esta es una tendencia futura.

Ahora, adjuntaré algunos videos con algunas tendencias futuras y que pudieramos tener en varios años en el área de la ingenieria móvil, estas son algunas visiones de personas, de lo que creen que habrá en algún futuro, tal vez no muy lejano y me parecieron interesantes.




Si se fijan, en este video pueden ver que los dispositivos móviles no tienen ningún puerto o cable conectado, una de las características de las cuales hablé.



Como serian los pagos utilizando el celular sin ninguna conexión alambrica, simplemente aproximando el celular.

Referencias
NFC Mobile Phones and the future privacy
Wireless Power Consortium
Retina Display

jueves, 19 de abril de 2012

Accesibilidad en sistemas móviles

La importancia de la accesibilidad en sistemas móviles es relevante para generar software que mediante las cosas que ya tenemos existente, para todas aquellas personas que tengan algunas discapacidades, ya sean motrices o visuales, por lo que aumenta el rango de personas que puedan utilizar el dispositivo de manera más sencilla.



Para hablar acerca de la accesibilidad móvil que se utiliza actualmente en el mercado al igual que escribiré acerca de los elementos importantes considerando que un sistema sea accesible.



Podemos decir que podemos dividir en las 3 capacidades más importantes para mejor la accesabilidad en sistemas móviles, primero hablaremos de la visión.

Para personas que tengan deficiencia visual o personas ciegas, puedan usar un dispositivo móvil más facilmente, por ejemplo se tienen sistemas que tienen la capacidad de leer en voz alta todos los elementos que pueda tener la pantalla, al igual que leer indicaciones importantes, las notificaciones que recive, poder pronunciar al escribir, teniendo sistemas que puedan ser utilizados para personas que tengan esta deficiencia.

Existen sistemas en el cual por medio de bluetooth, conectan teclados especiales de Braile para poder utilizar algun dispositivo móvil, y así más facilmente se pueda utilizar.




Tambien, existen sistemas que tienen la capacidad de realizar zoom, para mejorar el rango de vision sobretodo en sistemas que utilizan pantallas pequeñas, utilizando los dedos para poder desplazarse.

Agrandar el texto en un sistema móvil en ciertas aplicaciones es importante para personas que consideran el tamaño del texto del sistema un inconveniente, sistemas como blackberry OS, tienen esta capacidad para cambiar de punto el texto.


Sistemas como iOS proveen "white on black", que hace como un cambio de colores, el cual propone un mejor contraste y reduce la tensión ocular.


Para las personas con problemas de audición, es posible poder seleccionar en algunos sistemas audio mono, para personas con dificultades o sencibles a la audición, al igual que poder sleccionar en cual oido deseas tener más sonido, si es que utilizas audifonos, al igual que reducir o fijar volumen al momento de escuchar música.


En cuestión de discapacidades motrices, iOS tiene un sistema llamado Assistive Touch para sus dispositivos, este es un sistema que esta diseñado para personas que por ejemplo no pueden utilizar todos los dedos en el dispositivo, o no pueden controlar sus movimientos, por lo que puedes utilizar el dispositivo con un solo boton.

Aquí les dejo un video de como se utiliza.



Podemos concluir que un sistema accesible es de suma importancia en el mundo actual, no nada mas para aumentar el rango de personas que lo puedan utilizar, si no que podemos hacer con tecnologia, que personas con deficiencias puedan utilizarlo satisfactoriamente y que cuando nosotros estemos haciendo nuestro proyecto, tener en cuenta que estas funcionalidades funcionen.

domingo, 4 de marzo de 2012

NFC [Near Field Communication]

NFC, es una tecnología de comunicación que si bien no es nueva, se he escuchado en los últimos años como una de las posibles tecnologías que pudiera cambiar la forma de interactuar con las cosas y ciertas empresas tienen muchos planes utilizando esta tecnología en aparatos móviles, en esta entrada, voy a hablar acerca de que es, como funciona y aplicaciones prácticas.






¿Qué es NFC?
NFC, es una tecnología de comunicación de corto alcance, lo cual permite que diferentes dispositivos puedan intercambiar información con otros dispositivos que utilicen las misma tecnología NFC o con tarjetas de apoyo NFC, por lo que se puede escanear y obtener datos relevantes de esta, algunos países como Japón, tienen desarrolladas aplicaciones utilizandolas.


¿Como funciona?
Es basicamente, poner la parte de atrás algún dispositivo que tenga la funcionalidad NFC, ya sea contra la parte trasera de otro dispositivo que tenga NFC o con una terminal NFC, este lo reconoce automáticamente, mostrando mensajes en la pantalla para leer o escribir información en el dispositivo, funciona con una frecuencia de 13,56 MHz y soporta transferencia de datos a una velocidad mas o menos lenta de 424 kbps, pero es suficiente para mandar datos pequeños, aunque se espera que en algún futuro se aumente esta velocidad, se puede acercar a menos de 20 cm y en menos de 0,2 segundos se establece una conexión, algo que es importante es que solamente requiere poca energía, menor a 15 mA, puede ser más, según cuanta cantidad de datos estamos mandando.


¿Por qué utilizar NFC y no otros?
Ya que las especificaciones técnicas de las que he hablado anteriormente nos ofrece comodidad y seguridad, porque hablando de tecnologías como Bluetooth y Wi-Fi la comunicación que se da es más amplia con frecuencias que oscilan entre 1 a 100 metros, por lo que se pueden tener problemas principalmente de seguridad, ya que si los dispositivos están configurados para aceptar conexiones sin autentificación, cualquier persona dentro de ese rango puede contectarse a ellos y tener acceso a la información almacenada de otro dispositivo, creando un problema de seguridad importante, aunque si decimos que se requiere una contraseña para poder establecer la conexión, también tenemos otro problema, por lo que podemos decir que si queremos seguridad, necesitamos una contraseña para establecer conexión.


La tecnología NFC, puede ofrecernos comodidad y seguridad, al hacer exigir un contacto directo entre dispositivos para poder realizar un intercambio de información y que casi automáticamente puedas obtener información de este, por lo que puedes tener a varias personas que no tengan contraseña configurada para una comunicación NFC y no corren el riesgo de obtener información autorizada.


Aplicaciones.


Actuales:
  • Explorador de etiquetas RFID
    • Un dispositivo que tenga NFC, puede funcionar como un lector de etiquetas RFID, leyendo la información incluida, se puede decir, que se puede utilizar en medios de comunicación como en carteles publicitarios, folletos o incluso para darnos información, por ejemplo, imaginen que vamos a un restaurante y acercamos el dispositivo, al momento tenemos un menú en nuestro celular con descripciones y críticas de los platillos.
  • Sustituto de tarjetas de crédito
    • NFC permite remplazar las tarjetas de plástico y tenerlas todas en nuestro teléfono (pueden ver el video que adjunto abajo), en donde acceder a los servicios de una tarjeta de crédito con esta tecnología, por lo que hacer pagos puede ser mas accesible.
  • Intercambio de datos
    • Dos teléfonos con NFC, pueden realizar intercambios de datos, por ejemplo transferir tarjetas de presentación y tenerlas accesibles en el celular, o compartir fotos y vídeos relativamente fácil.
  • Emparejamiento de Bluetooth o Wi-Fi de autentificación
    • Se puede establecer conexión de bluetooth o Wi-Fi con autenticación, esto es solamente acercar con algún dispositivo lo cual automáticamente podríamos tener un emparejamiento de estos, en vez de pedir códigos de seguridad, solamente los acercamos.

Tendencias Futuras:
  • Pagos Personales
  • Seguridad sin llave
  • Identificación 
  • Redes Sociales
  • Entretenimiento
  • Salud y Seguridad Pública




Referencias
NFC
Near Field Communication
Importancia de NFC

miércoles, 29 de febrero de 2012

Rendimiento de bateria en smartphones

Las baterías que se utilizan en smartphones actualmente, son las baterías de litio, son las mas utilizadas en los dispositivos avanzados, pero existe un problema, este tipo de baterías están a punto de los limites de capacidad posible, mientras que los aparatos que se están construyendo actualmente requieren más energía, por lo que en esta entrada hablaré acerca de el rendimiento de estas baterías.






Si cuando compras un nuevo smartphone, esperas que el rendimiento de la batería aumente y que esté siempre conectado a velocidad de 4G, siempre su pantalla este brillando, obviamente esto no es posible, la energía que necesita de la batería de los smartphones utilizados actualmente es por mucho superior de como la tecnología de las baterías ha aumentado, esto es que los fabricantes de estas están trabajando para solamente exprimir los últimos recursos que se pueden obtener de las baterías de iones de litio los cuales tienen 15 años de edad y no han tenido un desarrollo importante, por lo que los fabricantes de dispositivos y aplicaciones están viendo esta gravedad del problema.


Antes, los aparatos móviles se cargaban en la casa y podías ir de vacaciones un fin de semana y aún volver a casa con batería, ahora los consumidores están prácticamente atados a llevar con ellos sus cargadores por el exceso de utilidad que tienen los aparatos.






Por ejemplo, con la llegada de la red 4G, este problema podemos decir que agrava un poco la situación, ya que estudios han revelado que los dispositivos que utilizan esta red tienden a tener una vida de batería no tan buena, por lo que los requisitos de potencia de esta tecnología en particular, que se ha estado incorporando en nuestros dispositivos móviles está creciendo al doble de los avances que se tienen en el estado de investigación de la capacidad de una batería.


El problema aquí, está relacionado con la química que se utiliza en las baterías, al igual que el sistema que se financía para la investigación y desarrollo de las baterías, no se le presta tanta atención, entonces a diferencia de los smartphones, la tecnología de las baterías ha evolucionado durante más de un siglo y esta mucho más abajo en la curva de desarrollo.








Casi todas las baterías que los smartphones de hoy en día, al igual que las tablets, funcionan con alguna variante de polímero de iones de litio, el cual es una celda en la que se guarda el ánodo y el cátodo con un sólido, conduciendo la electricidad, podemos ver que este diseño utilizando sólidos y electrolitos se desarrolló para teléfonos comerciales en el año de 1996.


Sin embargo, los avances graduales en la eficiencia, no están de la misma manera de las demandas de energía que piden los fabricantes de smartphones y tablets, pero esto no quiere decir que las baterías no sirven, si no que las baterías de smartphones son eficientes en comparación a las baterías que se utilizaban hace algunos años, pero estas ya están llegando al límite de su capacidad.


Por lo que, nosotros como futuros desarrolladores para dispositivos móviles debemos de saber que no solamente debemos de tener en cuenta en perfeccionar su interfaz, diseño, potencia de cálculo, si no que tenemos que hacer todo esto pero con mucho menos energía, lo que da como resultado que los consumidores que necesitan planes de datos más rápidos y que tengan multitarea, ahora necesitan más capacidad de batería para que su celular tenga no menos que un día completo de funcionamiento.


También, las pantallas que se están utilizando en smartphones son cada vez mayores y con más resolucion, absorben mas energía, se necesita brillo en la pantalla y todo esto causa un impacto importante en las baterías. Aunque, empresas como Samsung y LG, están centrando su fabricación de dispositivos que consuman menos energía.


Por ejemplo, los celulares ahora tienen Bluetooth, WiFi y GPS, lo cual son como asesinos de la bateria y que algunas veces hasta se utilizan de manera continua y a la misma vez, por lo que hace que la batería reduzca considerablemente su potencia, inclusive los dispositivos con chips 4G requieren mucha potencia de procesamiento porque necesitan descodificar mayores cantidades de datos y como saben los 4G, tienen dos chips diferentes en conjunto, lo cual perjudica en el rendimiento.


Algunas de las medidas que han estado adoptando las compañías de celulares, es que se utilicen procesadores de doble núcleo, especialmente dedicados para estos dispositivos, ya que estos dual-core, pueden en un solo núcleo realizar tareas simples mientras que otro realice tareas más complejas, así poder ahorrar batería de los aparatos.




Las aplicaciones de los smartphones y el mal software es el culpable final de todo esto, ya que una aplicación que no administra bien sus recursos, empeora el estado de energía del aparato, de hecho se sabe que Apple examina nuestra aplicación antes de ponerla en la App store y una de las pruebas más importantes es que administre bien los recursos de energía, por lo que esta es otra manera en que una compañía genera buen software y que no perjudique sus aparatos.






Espero que esta entrada genere iniciativa a crear mejores aplicaciones, en donde tenemos que tomar en cuenta la batería de los dispositivos y así contribuir a que el usuario final, pueda obtener un mejor producto con mejores recursos energéticos.


Referencias.
El WiFi, la clave para las baterías de smartphones
Las nuevas tecnologías de baterías y ahorro de consumo en smartphones y tablets
¿Por qué la batería de tu smartphone apesta?
Ahorrar batería de tu móvil

Interfaces en Android

Android es un sistema operativo que proporciona al usuario una interfaz amigable en ciertos aspectos, es diferente a otras interfaces móviles, como por ejemplo iOS, pero podemos encontrar similitudes entre ellas, en esta entrada hablaré sobre las interfaces de Android para así darnos ideas de como poder desarrollar una aplicación amigable al usuario.


Los dispositivos y sus diferentes pantallas


Con el sistema operativo Android, existen muchísimos teléfonos y tabletas que utilizan este sistema, por lo que no tenemos los pixeles exactos de cada uno de los dispositivos, por lo que existen gran variedad de tamaños de pantalla y factores que debemos considerar al realizar una interfaz gráfica para este sistema, por lo que sería bueno enfocarnos en 3 diferentes aspectos:



  • Flexibilidad.
    • Debemos de "estirar y comprimir" nuestros diseños para que sean adaptables a diferentes anchuras y alturas que podamos tener en diferentes dispositivos.
  • Optimizar.
    • Debemos de aprovechar a dispositivos con pantallas mas grandes, al igual que su tamaño que nos ofrecen, para así mostrar más contenido y facilitar la navegación
  • Capacidad.
    • Proporcionar diferentes interfaces según la densidad de pantalla (ppp), para asegurarnos que la aplicación se vea bien en diferentes dispositivos.


Métodos para realizarlos.
Algunas estrategias que debemos considerar al realizar nuestra interfaz, es trabajar en un método que consiste en una norma básica, esto quiere decir tener como una mediana de las pantallas, en este caso por ejemplo el MDPI, para luego escalar ya sea hacia arriba o hacia abajo, otra cosa que podemos hacer es realizar una interfaz con el dispositivo de mayor resolución de pantalla y luego ir bajando su resolución para ver como modificarlos para pantallas más pequeñas.


Tamaño de un elemento.
Los  componentes de una interfaz, se establecen en unidades de 48dp, este es el promedio el cual se puede traducir en aproximadamente 9 mm, por lo que es el rango en que los objetos deben de estar en el sistema para que el usuario sea capaz y de manera precisa, seleccionar un elemento con los dedos.


Si diseñamos una interfaz debemos de pensar en que nuestros objetos nunca deben ser menor de 7 mm, aunque la pantalla este más grande o tenga más pixeles, esto no debe de suceder, porque se pierde la estabilidad de la interfaz.


Otra cosa es que, debemos de tener un espacio de 8dp entre cada elemento de la interfaz para poder diferenciar uno del otro al momento de que un usuario toque.




Iconos.
Los iconos en el sistema operativo son importantes, con estos el usuario puede saber que aplicación necesita abrir, entonces para diseñar un icono adecuado en Android, debemos primero que nada ver como los colores que utilicemos pueden afectar según el fondo que utilicen, por lo que lo recomendable es utilizar colores que no interfieran con esto y sea claro.


El tamaño de un icono que aparezca en el OS debe ser aproximadamente de 48 x 48dp.
Los iconos que se mandan al market de Android, deben de ser de 512x512 pixeles.






Estados de toque.
Algo interesante en la interfaz de Android, son los estados de toque, estos utilizan el color y la iluminación para responder a los toques, por lo que cuando una persona toca una área lo que hace es saber si el objeto fué tocado y tener una reacción a este, es por eso que se tiene diferentes estados, los cuales muestro en la siguiente imagen:






Si quieres saber más sobre las métricas que utiliza Android y estas interesado en ello te recomiendo veas esta página, en donde puedes encontrar las "User Interface Guidelines".