viernes, 31 de julio de 2015

Modulo 7 Manejo de Ficheros. 7.1 Escribir datos en un fichero en la tarjeta SD

Para el manejo de archivos se usa la clase File del paquete java.io. Para escribir se usa FileOutputStream y PrintWriter. La clase Environment de Android porporciona información acerca del dispositivo de almacenamiento:
El siguiente ejemplo escribe datos en un fichero de la tarjerta SD. Concretamente:

  • Utiliza Environment.getExternalStorageState() para determinar si existe tarjeta SD y está disponible (mounted).
  • Posteriormente se usa Environment.getExternalstorageDirectory(); para identificar el directorio correspondiente a la tarjeta SD
  • Crea un subdirectorio datos en la tarjeta (si no existe ya).
  • Abre un fichero de datos datos1.txt en el subdirectorio datos
  • Escribe una cadena de en el fichero datos1.txt
  • Cierra el fichero 

Se le deben dar permisos en el archivo .manifest añadiendo lo siguiente:



  
  






jueves, 30 de julio de 2015

MODULO 5- Guardar datos con SharedPreferences

En esta ocasión se utiliza la clase SharedPreferences para guardar datos en un fichero de datos:

SharedPreferences misDatos = getSharedPreferences (fichero, acceso);

donde "fichero" es el nombre del fichero donde se guarda la información, sin extensión; si el fichero no existe se crea uno nuevo. El numero entero "acceso" es usualmente 0, indicando que el fichero es privado. Para leer las preferencias se usa el método getString() o getFloat(), getInt() para leer números.

Para modificar las preferencias se usa un editor, que es un objeto de la clase SharedPreferences.Editor el cual permite escribir datos con sus etiquetas (entre comillas) y salvar el fichero de la siguiente forma:

SharedPreferences.Editor miEditor = misDatos.edit();
//escribe los datos
miEditor.putString("nombre",nombre);
miEditor.puFloat("x",x);
miEditor.puFloat("y",y);
//salvar
miEditor.commit();

Las imágenes se muestran a continuación:

   


miércoles, 29 de julio de 2015

4.3 Forma alternativa de implementar OnKeyListener

José Enrique Amaro Soriano, presenta otra alternativa para implementar la clase OnKeyListener, es una modificación a la entrada anterior, en este ejemplo no se implementa la clase OnKeyListener dentro de un método onCreate(), en esta ocasión se implementa directamente en la clase:

public class MainActivity extends Activity implements OnKeyListener

y la clase onKey se define dentro de la clase MainActivity, en esta vez el EditText accede al método onKeyListener(this).

edditText.onKeyListener(this)

Desde mi punto de vista esta es la mejor manera de implementar la clase OnKeyListener.

  

4.2 OnKeyListener

La clase OnKeyListener se usa para "Escuchar cuando se presiona una tecla", es por esto que en este ejemplo se implementa esta clase con una modificación a la entrada anterior en la cual se daba clic al botón para mostrar el mensaje, en este caso se debe dar "enter" para mostrar el mensaje, es allí donde se hace uso de la clase OnKeyListener. Cabe mencionar que la clase a la cual se esta haciendo referencia en esta ocasión es: import android.view.View.OnKeyListener ya que en mi caso importé otra clase y la aplicación se cerraba.

 

Modulo 4 Introducción de textos. 4.1 TextField

A partir de este módulo el autor enseña como agregar un campo de texto, el cual al escibirle un texto y dar click al botón este ejecuta el método onClick y obtiene el string escrito en el campo de Texto, posteriormente lo muestra en un TextView haciendo uso del método append, dejo las imágenes:





3.6 Calculadora

La calculadora que muestra el autor José Enrique Amaro Soriano, como el mismo lo dice es una calculadora rudimentaria, tiene algunas deficiencias, pero espero modificarlo para que se parezca a la calculadora que usualmente manejamos.

   
 

lunes, 27 de julio de 2015

3.5 Cambiar el color de los botones

Solo se agrega un botón al ejemplo de la entrada anterior; el código que va dentro del método onClic es el siguiente:

if (v.getId()==R.id.boton1){
    i1++;
    rojo = dcolor* i1 % cmax;
    }else if (v.getId()==R.id.boton2){
    i2++;
    verde = dcolor* i2 % cmax;
    }else if (v.getId()==R.id.boton3){
    i3++;
    azul = dcolor* i3 % cmax;
    }
   
    ((TextView) v).setText("Color: "+rojo+","+verde+","+azul);
    v.setBackgroundColor(Color.rgb(rojo, verde, azul));

El resultado obtenido es el siguiente:


3.4 Cambiar el texto de un boton

La clase Button es una extensión de la clase TextView, por lo tanto se pueden usan todos sus métodos.

int i1=0;
int i2=0;
public void onClick (View v){
String mensaje ="";
    int duracion=1;
    if (v.getId()==R.id.boton1){
    i1++;
    ((TextView) v).setText("Pulsado " +i1+" veces");
    }else if (v.getId()==R.id.boton2){
    i2++;
    ((TextView) v).setText("Pulsado " +i2+" veces");
    }
    }

Lo obtenido se muestra a continuación:

3.3 Uso de Toast para mostrar un mensaje emergente

Se puede hacer uso del método Toast.makeText() para crear un objeto Toast que permite mostrar un texto en una pantalla emergente durante unos segundos:

Toast.makeText(this, mensaje, duracion).show();

Se tienen las siguientes constantes:
Toast.LENGTH_LONG;
Toast.LENGTH_SHORT;


Se tienen el siguiente código:
public void onClick (View v){
String mensaje ="";
     int duracion=1;
     if (v.getId()==R.id.boton1){
      mensaje="Has pulsado el boton 1";
      duracion=Toast.LENGTH_SHORT;
     }else if (v.getId()==R.id.boton2){
      mensaje="Has pulsado el boton 2";
      duracion=Toast.LENGTH_LONG;
     }
     mensaje = mensaje + " duracion = "+duracion;
     Toast.makeText(this, mensaje, duracion).show();
  }
Al ejecutar este ejemplo se muestran los resultados:






2.10 Extendiendo la pantalla con ScrollView

Hola buenas noches.

En el segundo modulo no pude realizar el subtema 2.10, pero después de varios intentos se logro al fin, les dejo el código:
**Este es en el activity_main.xml**
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <TextView
        android:id="@+id/myTextView"
        android:textColor="#000000"
        android:textSize="12sp"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    </LinearLayout>
</ScrollView> 

**en el Mainactivity se tiene:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        View v=findViewById(R.id.myTextView);
        TextView myTextView = (TextView) v;
       
        for(double x=0; x<1; x=x+0.01){
        double y=Math.sin(x);
        myTextView.append("sin("+x+") = "+y+"\n");
        }
       
    }



Espero les salga bien, ahora ya estoy trabajando con el eclipse, con la entrada anterior explique como lo instale.

Saludos!




domingo, 26 de julio de 2015

Instalación de Eclipse con Android

Hola buenas noches.

En esta ocasión les dejo las fuentes para la instalación y puesta en marcha de manera correcta del IDE Eclipse con Android.

  1. Primero descargar Eclipse, (Vi este video y en la descripción descargue Eclipse)- https://www.youtube.com/watch?v=jPZpJdnbbN0 
  2. Al iniciar con Eclipse me marcaba un error, y lo resolví siguiendo esta pagina: http://stackoverflow.com/questions/30439524/error-loading-the-sdk-when-eclipse-is-started
  3. Al finalizar se tiene que "unir" Eclipse con Andriod, seguí esta pagina: http://jarroba.com/instalar-el-sdk-de-android-y-vincularlo-con-eclipse/
Espero que con esta pequeña guía consigan instalar de manera correcta Eclipse. Saludos!!




jueves, 23 de julio de 2015

3.2 Caso de dos botones

Se pueden asignar dos botones a nuestro diseño:
<Button    
android:id="@+id/button1"    
android:text="Boton 1"    
android:layout_width="fill_parent"    
android:layout_height="wrap_content">
</Button>

 <Button     
android:id="@+id/button2"     
android:text="Boton 2"     
android:layout_width="fill_parent"     
android:layout_height="wrap_content">
 </Button> 


En el programa Java quedaría de la siguiente forma:
View boton1 = findViewById(R.id.button1);
boton1.setOnClickListener((View.OnClickListener) this);
View boton2 = findViewById(R.id.button2);
boton2.setOnClickListener((View.OnClickListener) this);
En el siguiente ejemplo se escribirá un texto indicando que botón se ha pulsado:

TextView myTextView;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    View v=findViewById(R.id.miTexto);
    myTextView=(TextView) v;
    myTextView.setText("Ejemplo de Boton");
    View boton1 = findViewById(R.id.button1);
    boton1.setOnClickListener((View.OnClickListener) this);
    View boton2 = findViewById(R.id.button2);
    boton2.setOnClickListener((View.OnClickListener) this);
    
}

public void onClick(View v){
    if(v.getId()==R.id.button1)¨{
        myTextView.setText("Se ha pulsado el boton 1");
    }else if(v.getId()==R.id.button2){
        myTextView.setText("Se ha pulsado el boton 2");
    }
}
Se encuentran ya realizados estos ejemplos en mi IDE, las imágenes de lo realizado se los dejo continuación:










Modulo 3 BOTONES-3.1 Definición de un botón en el Layout

Este es el pequeño código para agregar un botón. Primero que nada se debe especificar en el archivo xml:

<Button    
android:id="@+id/myButton"    
android:text="Boton"    
android:layout_width="fill_parent"    
android:layout_height="wrap_content">
</Button>


En el archivo java basta modificar de la siguiente manera:

@Overrideprotected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    TextView myTextView = (TextView) findViewById(R.id.myButton);
    myTextView.setText("Ejemplo de Boton");

Es necesario que la actividad "Escuche los clcks" y responda al pulsar sobre el botón. Para que el botón responda a una acción primero se debe definir el botón como un objeto de tipo View asociado a su Id:

View boton=findViewById(R.id.myButton);

El archivo en Java quedaría de la siguiente manera:

TextView myTextView;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    myTextView = (TextView) findViewById(R.id.miTexto);
    myTextView.setText("Ejemplo de Boton");
    View boton = findViewById(R.id.myButton);
    boton.setOnClickListener((View.OnClickListener) this);
}

public void onClick(View v){
    myTextView.setText("Se ha pulsado el boton");
}
**ya modificando mi IDE (Eclipse) tengo las imágenes de este ejemplo:





miércoles, 22 de julio de 2015

2.9 Añadir texto con append

No solo con el método setText se puede agregar texto, también con el método append:

myTextView.setText("Texto 1 definido con setText");
myTextView.append("\n Texto 2 con appedn");
myTextView.append("\n Texto 3 con appedn");
myTextView.append("\n Texto 4 con appedn");


2.8 Ejemplo: Una tabla del Seno

A continuación se estructura una tabla de la función seno:

print(ll,"\n Tabla de sin(x): \n");
for (int i=0; i<10; i++) {
    double x = i / 10.0;
    double sx = Math.sin(x);
    print(ll, "sin(" + x + ") = " + sx);
}


2.7 Escribir resultados de Operaciones

También es posible mostrar resultados de operaciones matemáticas:

double a=2.25;
double b=1.25;
double c=a+b;

print(ll, "Ejemplo de resultados de operaciones Matematicas usando Java");
print(ll,"La suma de " + a + " mas "+ b + " es "+ c);







2.6 Definir un método print

Como se observa en la entrada anterior, para añadir un nuevo texto se requiere repetir mucho código, por tal razón se emplea un método que muestra el mensaje deseado a la vez que permite ilustrar el uso de java en android.

public void print (LinearLayout ll, String texto){
    TextView tv = new TextView(this);
    tv.setTextColor(Color.argb(255, 0, 0, 0));
    tv.setTextSize(18);
    tv.setText(texto);
    ll.addView(tv);
}

public void print (LinearLayout ll, String texto, int size, int r, int g, int b){
    TextView tv=new TextView(this);
    tv.setTextColor(Color.argb(255,r,g,b));
    tv.setTextSize(size);
    tv.setText(texto);
    ll.addView(tv);
}

Uno de los métodos únicamente es para mostrar un texto con un tamaño dado, El otro método puede asignar valores de tamaño de letra y colo de texto.

Después de implementar los métodos, se procede a hacer uso en el método onCreate:
.

LinearLayout ll=(LinearLayout) findViewById(R.id.myLinearLayout);
print(ll, "Anadiendo texto al layout usando un metodo print() que se ha definido");

Se pueden agregar textos usando el segundo método con valores definidos por el usuario:

 print(ll,"Texto tamaño 18 rojo",18,255,0,0);
print(ll,"Texto tamaño 24 verde",24,0,255,0);
print(ll,"Texto tamaño 28 azul",28,0,0,255);
print(ll,"Texto tamaño 32 amarillo",32,255,255,0);
print(ll,"Texto tamaño 28 magenta",28,255,0,255);
print(ll,"Texto tamaño 24 Cian",24,0,255,255);






 

2.5 añadir texto adicional con addView

Para añadir texto adicional se necesita  crear un LinearLayout en el archivo xml

<LinearLayout
        android:id="@+id/myLinearLayout"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
</LinearLayout>

y en el archivo java agregar el siguiente código:


myTexto.setText("He modificado un TextView con un nuevo texto usando Java");
TextView tv= new TextView(this);
tv.setTextColor(Color.argb(255, 0, 0, 0));
tv.setTextSize(40);
tv.setText("Añadiendo nuevo texto con addView");
LinearLayout ll=(LinearLayout) findViewById(R.id.myLinearLayout);
ll.addView(tv); 



2.4 Modificando un color desde java

Para modificar el color es mediante el siguiente codigo:

myTexto.setText("He modificado un TextView con un nuevo texto usando Java");
myTexto.setTextColor(Color.argb(255, 255, 0, 0));

2.3 Modificación de Texto desde Java

Se modificamediante el metodo textView

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
TextView myTexto = (TextView) findViewById(R.id.miTexto);
myTexto.setText("He modificado un TextView con un nuevo texto usando Java");
}


2.1 Actividad Básica: Hola Mundo

Primero crear un TextView desde el archivo activity_pricipal.xml


<TextView  
android:id="@+id/miTexto"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:textColor="#0000FF"  
android:text="Hola Mundo"  
android:textSize="15sp" />
</ScrollView>


Libro y Autor

Primero que nada dar el mérito al libro: Programación de dispositivos Móviles a través de ejemplos del autor José Enrique Amaro Soriano.






lunes, 13 de julio de 2015

Iconos

Hola, les dejo una serie de Iconos que podrán ser de utilidad para el desarrollo de sus aplicaciones.

Saludos!

DESCARGAR

jueves, 9 de julio de 2015

Mostrando en otra actividad

Siguiendo el tutorial se obtuvo el siguiente resultado:





Como actividad, les solicito que lleguen hasta este punto. Saludos!


Iniciando otra actividad

En el post anterior la aplicación solo tiene un text field y un botón, a continuación se le agrega un poco de código al botón... 
  Se le agrega la propiedad onClik, el cual manda a llamar el método sendMessage.



Se crea un Intento:

  1. Dentro del archivo java/com.example.computo.miapp, abrir el archivo MiAPP y agregar el codigo:
    La clase DisplayMessageActivity, no la reconoce, no importa, por el momento se ignora, después se creará...
    El Constructor de Intent tiene dos parámetros:

    - Un contexto en el primer parámetro, (este es usado porque la clase Activity es subclase de contexto)
    - La clase del componente de la aplicación para la que el sistema deba entregar la Intención (en este caso, la actividad que debe iniciarse)
  2. Importar la clase: import android.content.Intent;
  3. Dentro del método enviarMensaje() usar el findViewById() para obtener el elemento EditText
     
  4. Importar el EditText: import android.widget.EditText;
  5. Asignar el texto la variable local message, y usar el método putExtra() para agregar ese texto al Intent
      Una Intencion puede llevar tipos de datos como pares clave-valo llamados extras. El método putExtra() toma el nombre de clave del primer parámetro y el valor en el segundo parámetro.
  6. Definir el EXTRA_MESSAGE

  7. Finalizar el método, llamando al método startActivity() pasando el objeto creado en el paso 1, esto es todo el código necesario para el botón.
      El sistema recibe esta llamada e inicia la Instancia del Activity, especificado por el Intent, Ahora se necesita crear la clase DisplayMessageActivity.
Se especificará en el siguiente post!