domingo, 15 de enero de 2012

Actualizar android el Samsung Galaxy S

Para poder desarrollar aplicaciones en Android es importante conocer las posibilidades del sistema operativo Android sobre el que se queire desarrollar. Sobre todo si es para el maneja de dispositivos del telefono movil.

Es sobre el manejo de la camara que quiero escribir una serie de post.

Para manejar los dispositivos es recomendable tener una version elevada del NDK. La relación entre la version de Android/SDK/NDK es:

Platform Version

SDK API Level

NDK API Level

Android 4.0.3

15

14

Android 4.0.2

14

Android 4.0.1

Android 4.0

Android 3.2

13

9

Android 3.1.x

12

Android 3.0.x

11

Android 2.3.4

10

Android 2.3.3

Android 2.3.2

9

Android 2.3.1

Android 2.3

Android 2.2.x

8

8

Android 2.1.x

7

5

Android 2.0.1

6

Android 2.0

5

Android 1.6

4

4

Android 1.5

3

3

Android 1.1

2

-

Android 1.0

1


Para los desarrollos que explicare en posteriores post he necesitado pasar de la version 2.1 a la version 2.2. Como se puede ver, a nivel de NDK, el paso de la version 2.1 a la 2.2 es muy grande.

Como el movil que voy a utilizar es un Samsung Galaxy S voy a explicar como se actualiza la versión de android de un Samsung Galaxy S. La mejor forma de actualizar el Samsumg Galaxy S es desde un PC con el producto Samsung Kies. Lo que debes hacer es:

- Descargar el Samsung Kies. Bajate la varsion mas actual que ESTE EN CASTELLANO. Yo he utilizado la version 2.1.1.11124_17.
- Ejecuta la aplicacion Samsung Kies.
- Conecta el movil encendido por USB al PC.
- Cuando el Samsung Kies detecte el movil ya se puede actualizar el Android. En la aplicación Samsung Kies se llama Firmware.
- Al conectar el movil, Samsung Kies te dira que la version de firmware es antigua y te indicara si quieres actualizarla. Dile que si y sigues las intrucciones. Basicamente las intrucciones consisten en no desenchufar el movil hasta que se acabe el proceso.
- El proceso consiste en:
- Descargar el firmware que va a instalar.
- Instalar la version en el movil. En este paso en el movil aparecerá una pantalla como esta:



















- Dale tiempo al movil. Aunque el PC diga que todo ha terminado. Saldran un par de pantallas en rollo UNIX como esta:

















- Se reiniciara ya con el nuevo sistema operativo instalado.

Espero que os sirva.

Un saludo

martes, 29 de noviembre de 2011

Un boceto

Todo desarrollo de una aplicación tiene el gran problema de la FALTA DE ENTENDIMIENTO. Esta a todos los niveles:

  • Con el cliente: Por muy bien que el cliente explique lo que quiere y por muy bien que sepamos plasmarlo en una aplicación siempre habrá problemas de requerimientos en fases finales del desarrollo ya que puede que el cliente no se explicó bien en su dia, nosotros entendimos otra cosa, etc (a que te suenan estos motivos)….
  • Con el equipo de desarrollo: Puede que la documentación tenga fallos o que simplemente al explicar (decir con palabras a otra persona) una funcionalidad el desarrollador entienda una cosa que sea muy diferente que lo que tiene el analista en mente.

El primer paso, o uno de los primeros, cuando ya se tiene clara la aplicación es hacer un boceto. La mejor forma de hacer un boceto es con un entorno web de páginas estáticas. Es ideal porque toda aplicación (sea web o no) se puede representar como un entorno web, es muy grafico y es muy rápido de hacer.






Puedes elegir el software que quieras pero yo te recomiendo el Microsoft Publisher. Es de pago pero me extraña que en tu empresa no tengan pagada la licencia del Microsoft Office. Recomiendo hacer el boceto con el Publisher porque esta más orientado al aspecto de la pagina web que ofrecer funcionalidad (solo ofrece hiperviculos), esto es muy importante por los siguientes factores:

  • Si haces el boceto muy pobre gráficamente seguramente tu cliente no lo tenga muy en cuenta.
  • Si tu boceto (que no deja de ser un entorno web) tiene mucha funcionalidad el cliente te puede pedir cosas como:”oye si al boceto le incluyes algo de código real ¿podríamos usarlo ya para…”. Esto implicaría un desarrollo adicional y además si el cliente ve que el boceto mejorado ya le sirve puede que no quiera la aplicación principal.





jueves, 17 de noviembre de 2011

Reglas de pruebas. Cambio de configuración


Concepto cambio de configuración
Un cambio de configuracion es modificar un elemento que establece un comportamiento por otro elemento. Partiendo de esta base, un cambio de configuración abarca desde cambiar un valor entero en un fichero properties por otro como cambiar en una clase la carga de una clase por otra.
En una prueba no se puede modificar el codigo que se va a probar pero si la configuracion. Si para hacer una prueba se tiene que modificar una clase entonces corremos el fallo de dejar modificada la clase una vez terminada las pruebas o que dicha modificación solucione un problema. Lo que debemos hacer es cambiar la configuración en pruebas si no se puede usar la original.
Caso: Una impresora
Tenemos una clase GestionDocumento:
public class GestionDocumento {
private impresora IImpresora;
public GestionDocumento (){
impresora = new IImpresoraImpl();
}
public void Imprimir (){
impresora.imprimir (datos);
}
...
}
IImpresora debe ser una interfaz de la clase que implemente la funcionalidad de la impresora. De esta manera, si se hace una prueba de impresión y no disponemos de la impresora se podrá seguir realizando la prueba solo hay que cambiar la instancia:
public GestionDocumento (){
// impresora = new IImpresoraImpl();
impresora = new IImpresoraImplPrueba();
}
Y el resto de la clase GestionDocumento seguirá funcionando igual.

lunes, 14 de noviembre de 2011

Fin del Swing, empieza el JavaFX 2.0

La tecnología Flash ha sido el máximo exponente en ofrecer una interfaz gráfica de alto nivel(1) para la WEB. La respuesta JAVA para competir con esta tecnología es JavaFX. Las primeras versiones de JavaFX usaban un lenguaje Script distinto del lenguaje Java de toda la vida para ganar en flexibilidad a la hora de programar. Esta fue una jugada ingeniosa por parte de SUN ya que una de las grandes ventajas de Flash es la potencia para crear aplicaciones con “pocas líneas de código” pero fue muy mal implementada ya que este lenguaje Script no reducía las líneas de código.

Desde Octubre del 2011 ya está disponible la versión 2.0 de JavaFx. Esta versión permite crear aplicaciones JavaFX como si fuese una aplicación Swing común, sin usar el lenguaje Script de JavaFx, como se puede ver en el siguiente ejemplo:


import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.scene.Group;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.stage.Stage;

/**

*

* @author cnavarros

*/

public class Main extends Application {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

Application.launch(args);

}

@Override

public void start(Stage primaryStage) {

primaryStage.setTitle("Hello World");

Group root = new Group();

Scene scene = new Scene(root, 300, 250);

Button btn = new Button();

btn.setLayoutX(100);

btn.setLayoutY(80);

btn.setText("Hello World");

btn.setOnAction(new EventHandler() {

public void handle(ActionEvent event) {

System.out.println("Hello World");

}

});

root.getChildren().add(btn);

primaryStage.setScene(scene);

primaryStage.show();

}

}

El uso de JavaFx puede plantearse como mejora de una aplicación ya existente y que este implementada en Swing ya que JavaFx 2.0 puede usarse en Swing (ejemplo http://blogs.oracle.com/javafx/entry/how_to_use_javafx_in).

Otra gran mejora es la posibilidad de definir TODA la interfaz grafica (botones, panales, cuadros de texto, animaciones, etc..) en un XML usando la tecnología FXML. Como se puede ver en el siguiente ejemplo:











Da como resultado la aplicación:










Esta forma de trabajar ya se utiliza en otras plataformas como Android y permite separar de forma “contundente” la parte grafica de la parte de lógica de la aplicación. Ademas permite terminar con las clases “Panel” de Swing donde solo hay líneas de JAVA para definir la interfaz que ensucian el código y se mezclan con la lógica de la aplicación.

Una aplicación implementada usando JavaFx puede usarse también como una aplicación WEB (via jnpl o como un Appet dentro de una página WEB).

Lo que me preocupa es el rendimiento. Las primeras versiones de JavaFx no ofrecían un rendimiento muy bueno y tanta flexibilidad como ofrece JavaFx 2.0 siempre va en contra de ofrecer mejor rendimiento pero, como se puede leer en la pagina de JavaFx 2.0 http://javafx.com/faq/ , en esta versión se ha puesto incapie en el rendimiento. Esto, unido a su gran compatibilidad con Swing, le hace ser la opción lógica a la hora de desarrollar aplicaciones por delante de otras plataformas como Swing, Applets y Flash.

(1) -->Con alto nivel me refiero a mini aplicaciones que se descargan con la pagina WEB y ofrecen más potencia grafica que los clásicos “objetos” HTML.