may
16
2012

Tutorial: Desarrollar en varios Equipos y no morir en el intento.

Hoy os quiero contar como podeis configurar vuestro ordenadores de desarrollo sin necesidad de desinstalar las Apps cada vez las quereis depurar.

Imaginaros que tenéis un ordenador portátil, un sobremesa y terminal Android y que desarrolláis tanto en el Sobremesa como en el Portátil, que el lo que sucede, pues bien, cada ves que instaláis en un ordenador la SDK de Android, está genera un clave de cifrado de desarrollo única para cada equipo, con la que más tarde el debugger firmara la App antes de hacer el deploy al terminal. Con este escenario, nos encontramos con el problema de que cada vez que queremos depurar la App en alguno de estos equipos, necesitamos desinstalarla ya que las firmas son diferentes.

La solución es asignar a todos vuestros ordenadores en mismo debug.keyestore, para hacerlo seguir estos pasos:

Accedéis a Eclipse, al menú Windows > Preferences

 

 

Una vez aquí, accedéis mediante el árbol de la izquierda a Android > Build

 

 

Como podéis ver en la imagen, en esta pantalla nos dice donde está alojado el fichero que generó la instalación de la SDK, ahora solo tendremos que ir a esa ruta y copiarlo en todos nuestros ordenadores, después solo tendréis que acceder de nuevo a esta pantalla e indicarle en el campo “Custom debug keystore” la ruta completa al fichero que habéis copiado.

Decir adios a la desinstalación de la Apps, nunca más.
 

may
11
2012

Consumir datos de una URL en Android

Hace poco os contabamos como consumir servicios web soap, pero a veces estos datos estan alojados directamente en una URL con texto plano o queremos consumirlos directamente del interior de un HTML. A Continuacion os dejamos un pequeño tip de como extraer los datos de una URL y almacenarlo en un String para su posterior procesado:

 

public String readURL() {
	StringBuilder builder = new StringBuilder();
	HttpClient client = new DefaultHttpClient();
	HttpGet httpGet = new HttpGet("https://www.ingens-networks.com/secure/vinosyanadas.services/webservice.asmx/GetData?VersionID=1");

	try {
		HttpResponse response = client.execute(httpGet);

		StatusLine statusLine = response.getStatusLine();

		int statusCode = statusLine.getStatusCode();

		if (statusCode == 200) {
			HttpEntity entity = response.getEntity();
			InputStream content = entity.getContent();
			BufferedReader reader = new BufferedReader(new InputStreamReader(content));

			String line;
			while ((line = reader.readLine()) != null) {
				builder.append(line);
	 		}
		} else {
			Log.e(JsonTestActivity.class.getName(), "Failed to download data");
		}

	} catch (ClientProtocolException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}

	return builder.toString();

}

 

ACTUALIZACION: Si no se llama al response.consumeContent() al terminar con el InputStream, dejas la conexión abierta dando problemas en siguientes conexiones.

 

may
10
2012

Mapeando ficheros JSON con Jackson para Android

En un anterior post os comentábamos como parsear un datos JSON ayudándonos de la librería nativa de Android, en esta ocasión lo haremos usando Jackson, una librería que nos permitirá extraer estos datos a objetos Java de manera cómoda y sencilla.

 

Antes que nada y como es costumbre en estos casos nos descargaremos la librería y la incluiremos en el build path de nuestro proyecto Android, pero con la salvedad de que en este caso se divide en tres ficheros jar, Core, Annotations y Databind.

 

Continuar leyendo »

may
08
2012

Parseando JSON en Android

En un tutorial anterior os mostrábamos como consumir servicios SOAP pero no profundizamos en como manejar estos datos consumidos. Estos datos pueden venir en diferentes formatos (XML, JSON…) y en el tema que nos trata nos centraremos en JSON y como parsearlo con la librería nativa de Android.

 

¿Porqué JSON?

La eficiencia en el uso de los recursos a la hora de desarrollar aplicaciones móviles es una piedra angular que no podemos obviar, sobre todo en el caso como el consumo de datos de internet que deberemos optimizar lo máximo posibles posible para ahorrar batería y aprovechar las tarifa de datos existentes actualmente. En este sentido JSON, gracias a su estructura, ahorra considerablemente respecto a XML.

 

¿Como manejar los datos?

Una vez tenemos la cadena JSON disponible para su procesado (ya sea desde un fichero, web service SOAP o a través de url) todo se basara en un par de clases JSONArray y JSONObject, que nos proporcionaran la colección de datos y los datos uno a uno respectivamente.

Al crear una instancia de JSONArray a partir del JSON leído obtendríamos un array de JSONObjet con todos los elementos anidados en el JSON:

 

JSONArray jsonArray = new JSONArray(dataJSON);

 

Una vez obtenido esto deberemos ir recorriendo el array obteniendo cada JSONObject pudiendo acceder a sus atributos y procesándolos a nuestro antojo:

 

for (int i = 0; i < jsonArray.length(); i++) {
     	JSONObject jsonObject = jsonArray.getJSONObject(i);

	boolean var1 = jsonObject.getBoolean(atr1);
	int var2 = jsonObject.getInt(atr2);
	String var3 = jsonObject.getString(atr4);
}

 

Algunos de estos atributos podrían ser a su vez otros JSONArray y deberíamos repetir el proceso para analizar todos los datos. Como podemos ver este proceso es manual y puede llegar a ser tedioso pero nos permite todo el control que queramos sobre el proceso de parseo. En posteriores posts o mostraremos librerías que nos permitirán deserializar estos datos mediante clases java contenedoras de los datos, como por ejemplo Jackson.

 

via | Ingens Blog

fuente | www.vogella.com

 

may
07
2012

Inyectando JavaScript en un WebView de Android

Ayer os contábamos como usar un WebView pero existen ocasiones en los que necesitemos crear aplicaciones hibridas entre código web y código Android, en estos casos es posible que ambas parte de la app se comuniquen entre si como por ejemplo configurar desde la app algún parámetro y en inyectarlo directamente en un formulario web o seleccionar en configuraciones algún estilo y configurarlo mediante javascript en el entorno web. A continuación os comentamos como inyectar código javascript en un WebView para conseguir estos cometidos:

 

Para inyectar código javascript en un WebView en el que hemos cargado previamente una url bastará con usar el método loadUrl(String url) pero deberemos de tener una consideración. Si el código de la url sobre la que trabajaremos no ha sido cargado por completo corremos el riesgo de que la ejecución de nuestro código javascript provoque errores, es por esto que para inyectarlo nos aseguraremos de que la carga se ha realizado por completo. Para esto implementaremos un WebViewClient y sobrescribiremos el método onPageFinished(WebView view, String url).

final WebView webview = (WebView)findViewById(R.id.browser);
    /* JavaScript must be enabled if you want it to work, obviously */
    webview.getSettings().setJavaScriptEnabled(true);  

    /* WebViewClient must be set BEFORE calling loadUrl! */
    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            webview.loadUrl("javascript:(function() { " +
                    "document.getElementsByTagName('body')[0].style.color = 'red'; " +
                    "})()");
        }
    });  

    webview.loadUrl("http://code.google.com/android");


Como veis el código es muy sencillo y no requiere mayor comentario, espero que os sea de utilidad.


vía | Ingens Blog


may
07
2012

Consumiento Web Services SOAP en Android con ksoap2

SOAP es uno de lo protocolos para comunicación de datos más usados auspiciado por la W3C, existiendo multitud de servicios web implementados bajo esta tecnología. Partiendo de esta situación es importante tener unos conocimientos de partida que nos permita enfrentarnos al uso de los mismos en los proyectos que emprendamos. A continuación os guiaremos en el uso de ksoap2-android, el fork de la famosa kSOAP2 library adaptado para su uso en Android.

 

Una vez creado nuestro proyecto Android deberemos bajarnos la librería en cuestión y incluirla en nuestro build path:

download

 

Llegados este punto vayamos a la miga, como acceder y consumir el web service y para ello necesitaremos una serie de variables que usaremos en los posteriores m´rtodos:

 

// Metodo que queremos ejecutar en el servicio web
private static final String Metodo = "GetCitiesByCountry";
// Namespace definido en el servicio web
private static final String namespace = "http://www.webserviceX.NET";
// namespace + metodo
private static final String accionSoap = "http://www.webserviceX.NET/GetCitiesByCountry";
// Fichero de definicion del servcio web
private static final String url = "http://www.webservicex.net/globalweather.asmx";

 

Una vez tenemos claros estos parámetros necesarios para las peticiones pasamos al siguiente paso. El protocolo SOAP se basa en cinco pasos básicamente, definir la petición (request), configurar un sobre (envelope) (define que hay en el mensaje y como procesarlo), definir el canal de transporte, hacer la llamada y recoger los datos. Estos datos ya los procesaríamos en función del caso (XML, JSON, texto plano…).

 

A continuación os mostramos el fragmento de código en el que realizaríamos estos pasos y que incluiríamos en aquel sitio donde deseáramos realizar la petición:

 

try {

	// Modelo el request
	SoapObject request = new SoapObject(namespace, Metodo);
	request.addProperty("Param", "valor"); // Paso parametros al WS

	// Modelo el Sobre
	SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
	sobre.dotNet = true;
	sobre.setOutputSoapObject(request);

	// Modelo el transporte
	HttpTransportSE transporte = new HttpTransportSE(url);

	// Llamada
	transporte.call(accionSoap, sobre);

	// Resultado
	SoapPrimitive resultado = (SoapPrimitive) sobre.getResponse();

	Log.i("Resultado", resultado.toString());

} catch (Exception e) {
	Log.e("ERROR", e.getMessage());
}

 

En próximos tutoriales os mostraremos como procesar estos datos devueltos.

 

NOTA: Para el consumo de servicios web es necesaria la conexión a Internet y por tanto deberemos solicitar dicho permiso en el manifiesto.

 

<uses-permission android:name="android.permission.INTERNET"/>

 

Vía | Ingens Blog

 

may
06
2012

Usando WebView en Android

A la hora de desarrollar nuestras apps podemos decantarnos por hacerlo en HTML y JavaScript buscando la compatibilidad multiplataforma, o simplemente dentro de nuestras apps queremos mostrar algun contenido web sin que la experiencia de usuario se vea decrementada al notar que salimos de la app. Tanto para uno como otro caso el elemento que hace esto posible es el WebView y hoy os vamos a enseñar como usarlo:

 

Una vez creado nuestro proyecto Android incluiremos en nuestro layout una vista del tio WebView y le añadiremos una etiqueta de identificación:

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

<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/webview" />

 

Posteriormente desde el código de nuestra activity cambiaremos las settings del WebView si procede e indicaremos la url a cargar en el mismo:

public class MainActivity extends Activity {
    private WebView mWebView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);

        // Activo JavaScript
        mWebView.getSettings().setJavaScriptEnabled(true);

        // Cargamos la url que necesitamos
        mWebView.loadUrl("http://www.ingens-networks.com/blog/");
    }

 

Como veis es muy sencillo y carece de misterio, tan solo tener en cuenta que para conectarnos a Internet necesitamos no olvidar indicar el permiso correspondiente en el manifiesto:

<uses-permission android:name=“android.permission.INTERNET” />

 

Otro detalle a tener en cuenta es que si dentro de nuestra app pulsamos un enlace se nos abrirá el navegador, si queremos evitar esto bastara con crearnos la siguiente clase:

private class verMiWeb extends WebViewClient {
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		view.loadUrl(url);
		return true;
	}
}

 

Espero que os sea de utilidad, nosotros ya lo estamos usando.

 

vía | Ingens Blog

 

may
06
2012

Usando ExpandableListView en Android

Android nos brinda con múltiples vista que nos facilitan la vida a la hora de diseñar e implementar las interfaces de nuestras apps, entre ellas se encuentra la que pasamos a enseñaros hoy y que nos proporciona una manera elegante de mostrar listados de datos agrupados de una forma ordenada.

Normalmente usaremos un ListView para mostrar los datos pero si la cantidad de estos es excesiva y tenemos la posibilidad de agruparlos mediante algún criterio una opción muy a tener en cuenta seria usar ExpandableListView que es la vista que a continuación os vamos a enseñar a usar:

 

 

Nota: En este tutorial suponemos unos conocimientos básicos de desarrollo en Android y manejo de layouts mediante xml.

 

 

Continuar leyendo »

may
06
2012

Monetizando nuestras Apps: AdMob en Android

 

A la hora de enfrentarnos a los desarrollos no lo hacemos por amor al arte (o quizas si), no obstante necesitamos encontrar formas de monetizar nuestras apss y hacer que estos desarrollos sean rentables y mantenibles para poder continuar con ellos. Llegados este punto encontramos varias alternativas, apps de pago, modelo freemium, venta de servicio o ingresos por publicidad. En este caso os contaremos como usar el servicio AdMob de Google para inclusión de publicdad en nuestras apps y así poder ingresar unos eurillos.

 

Continuar leyendo »

may
03
2012

Nuevos Retos Web y Móvil – Sevilla 8 de Mayo

 

 

El próximo 8 de Mayo la plataforma PideCurso reunirá en la Sede de la Escuela de Negocios EOI de Sevilla a los profesionales y empresas más importantes del sector de las Nuevas Tecnologías Web y Móviles como son: Google, Vodafone, Microsoft o Evento Blog para hablar sobre las nuevas oportunidades de negocio para emprendedores, demandas formativas y tendencias tecnológicas.

 
Sede EOI
 

En el evento también participarán representantes de la Universidad de Sevilla, Agencia IDEA, Andalucía Emprende, Asociación de Jóvenes Empresarios y Confederación de Empresarios de Andalucía que compartirán diferentes puntos de vista sobre la situación en la que nos encontramos, las posibilidades que se están abriendo y para aprender nuevas herramientas y estrategias que ayuden a mejorar nuestros negocios.

 
Y entre toda esta amalgama de participantes tenemos el honor de encontrarnos nosotros, nuestro compañero y redactor Fede, en representación de AndroCode, asistirá como ponente e impartirá una ponencia sobre desarrollo Android
 

En enero de este mismo año se celebró el evento en Granada. Puedes ver las fotografías y el vídeo del evento.

Para más información consulta la página del evento:

 

Entradas más antiguas «