Tag Archive for android

Enviar una peticion http POST desde Android a aplicación web (php)

La comunicación desde aplicaciones en dispositivos mobiles con servidores en la internet, es prácticamente una necesidad, siendo cada vez mas común encontrar este comportamiento en aplicaciones, es necesario comprender como se realiza esta comunicación. Basicamente lo que haremos es enviar una petición POST, muy similar a subir una forma con el metodo post desde un documento HTML a una aplicación en PHP, solamente que lo haremos desde Android, y siendo Android un sistema que utiliza Java, lo haremos utilizando ciertas librerías que nos permiten realizar esta comunicación desde Java.

Codigo de actividad en android que implementa la clase httpHandler

Ejemplo de aplicación sencilla que implemente una comunicación con una aplicación en PHP.

Codigo de clase en Java a implementar en Android para enviar peticiones a servidor web:

En esta clase lo que hacemos es implementar la comunicación, aqui estas todo lo que se necesita para enviar la petición a PHP junto con información.

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

public class httpHandler {

  public String post(String posturl){

	  try {

		  HttpClient httpclient = new DefaultHttpClient();
/*Creamos el objeto de HttpClient que nos permitira conectarnos mediante peticiones http*/
		  HttpPost httppost = new HttpPost(posturl);
/*El objeto HttpPost permite que enviemos una peticion de tipo POST a una URL especificada*/
		  //AÑADIR PARAMETROS
		  List<NameValuePair> params = new ArrayList<NameValuePair>();
		  params.add(new BasicNameValuePair("data","Variable 1"));
		  params.add(new BasicNameValuePair("info","Otro mensaje"));
		/*Una vez añadidos los parametros actualizamos la entidad de httppost, esto quiere decir en pocas palabras anexamos los parametros al objeto para que al enviarse al servidor envien los datos que hemos añadido*/
  httppost.setEntity(new UrlEncodedFormEntity(params));

                  /*Finalmente ejecutamos enviando la info al server*/
		  HttpResponse resp = httpclient.execute(httppost);
		  HttpEntity ent = resp.getEntity();/*y obtenemos una respuesta*/

		  String text = EntityUtils.toString(ent);

		  return text;

	  }
	  catch(Exception e) { return "error";}

	}

}

 

Actividad en Android

En este codigo basicamente tenemos una actividad principal donde usamos una clase httpHandler para enviar una petición al servidor web.

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        httpHandler handler = new httpHandler();
        String txt = handler.post("http://192.168.0.19/app_android/app.php");

        TextView t = (TextView)findViewById(R.id.text1);
        t.setText(txt);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

Codigo en PHP:

EL codigo en PHP es lo mas sencillo, unicamente lo que hace es capturar información y regresarla, esta se captura como la “respuesta” desde Android.

<?php

	$dato = $_POST['data'];
	$info = $_POST['info'];
	echo $dato."\n".$info;
?>

 

Si deseas ver el proceso completo de como se creo este software te invito a ver los siguientes video tutoriales, donde implementamos este codigo.

Video tutorial para conectar Android con una aplicación en PHP

parte 1:

parte 2:

parte 3:

Tutorial android 9: leer datos desde el acelerometro(Sensor event listener))

Leer datos del acelerometro:

El acelerometro en android es solo uno de diferentes sensores que podemos encontrar en nuestros dispositivos. 
Este se compone de 3 ejes, X , Y y Z los cuales cada uno genera una entrada que se mide en gravedad.

A continuaciòn este codigo registra  entradas del acelerometro y lo muestra en pantalla.

Codigo en actividad principal:

 

package com.practivaA2;

import java.util.List;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class PracticaAcelerometro2Activity extends Activity implements SensorEventListener{
    /** Called when the activity is first created. */
	TextView x,y,z;
	private  Sensor mAccelerometer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        x = (TextView)findViewById(R.id.xID);
        y = (TextView)findViewById(R.id.yID);
        z = (TextView)findViewById(R.id.zID);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    protected void onResume()
    {
    	 super.onResume();
         SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
         List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ACCELEROMETER);
         if (sensors.size() > 0) //dispositivo android tiene acelerometro
         {
             sm.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_GAME);
         }
    }
    protected void onPause()
    {
    	SensorManager mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    	mSensorManager.unregisterListener(this, mAccelerometer);
    	super.onPause();
    }
    protected void onStop()
    {
    	SensorManager mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    	mSensorManager.unregisterListener(this, mAccelerometer);
    	super.onStop();
    }
	

	@Override
	public void onSensorChanged(SensorEvent event) {
		this.x.setText("X = "+event.values[SensorManager.DATA_X]);
		this.y.setText("Y = "+event.values[SensorManager.DATA_Y]);
		this.z.setText("Z = "+event.values[SensorManager.DATA_Z]);
	}

	
	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {	
	}
}

Codigo en main.xml (Layout)

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/xID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <TextView
        android:id="@+id/yID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/zID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

 

 

Tutorial android 5: Colocar un icono launcher a tu aplicación

Como colocar un icono launcher a nuestra aplicación android

Para diseñadores:

Hay ciertas pautas para que nuestro icono de launcher de la aplicación sea bueno, para ello debemos crear una imagen sencilla, agradable a la vista y que no exceda de demasiados elementos. La imagen que vamos a crear debe tener un formato PNG y manejar transparencias. Para el diseño hay varias alternativas de software que podemos utilizar, una de ellas es GIMP 2.0 que es un software gratuito, si usted prefiere una alternativa de paga siempre esta Photoshop, Illustrator o corel Draw  entre otros.

 

Las resoluciones que se manejan para el tamaño de imagen son las siguientes:

 

  • 36 x 36 px  para pantallas de baja resolución
  • 48 x 48 px para pantallas con media resolución
  • 72 x 72 px para pantallas de alta densidad con alta resolución
  • 96 x 96 px para pantallas de muy alta densidad de resolución

 

Para programadores:

Esto aunque es muy sencillo es una tarea esencial si queremos que nuestra aplicación vaya tomando vida.

Como ya se menciono anteriormente para hacer esto hay que tener en cuenta ciertas recomendaciones en cuanto a las imagenes que se utilizarán para hacer este launcher, debido a que los dispositivos Android manejan un numero muy variado de diferentes resoluciones  y tamaños de pantalla.

 

De manera que lo mas recomendable es crear un icono con la resolución y tamaño mas altos, y posteriormente solamente crear copias de tamaño menor.
A continuación el siguiente video tutorial muestra como debemos hacer uso de estas imagenes y como podremos agregarlos a nuestra aplicación. Si quisieras encontrar mas información siempre puedes visitar el sitio oficial de desarrollo de Android.

Video tutorial:

Finalmente y en conclusión a este tutorial, no olvides que tener un icono Launcher es esencial para todas las aplicaciones Android, espero que este tutorial te haya sido de utilidad y que puedas aplicarlo en el futuro.

No olvides dejar tus comentarios.

 

Tutorial android 4: Como exportar (compilar) una aplicación de android

Para exportar una aplicación Android a un archivo APK

Bien, antes de continuar hay que comprender que los archivos android ya empaquetados manejan una extensión llamada “.apk” , estos archivos nos sirven para instalar nuestras aplicaciones directamente en nuestros dispositivos Android.
Además también nos sirve para publicar las aplicaciones en Google Play.

El siguiente video tutorial explica los detalles de como podemos hacer esa exportación.

Video tutorial ” como exportar una aplicación en android(Compilar)”

Espero que este tutorial te haya sido de utilidad.

No olvides comentar y si tienes dudas visita nuestro foro.