Android: Cómo encender o apagar el wifi desde la consola

Una de las condiciones necesarias para que tu aplicación Android sea awesómica, es que debe detectar correctamente cuando pierde la conexión o cuando ésta vuelve y reaccionar en consecuencia, ya sea mostrando un aviso al usuario o poniendo en cola las peticiones web que vayamos a hacer. Y hay veces que tenemos que probar esta circunstancia pero no queremos salir de la actividad para no provocar eventos onPause/onResume, etc.

Para conseguir esto podemos preparar un BroadcastReceiver que se encargue de cambiar el setting del wifi ya sea a encendido o a apagado en función de un extra que pasaremos en el intent que enviemos por broadcast, éste receiver cogerá el intent y cambiará el estado del wifi, lo que provocará que Android envíe otro broadcast indicando que ha habido un cambio en la conectividad. (Para saber como recibir este intent lo puedes leer aquí http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

1
2
3
4
5
6
public class ChangeWifiState extends BroadcastReceiver {
    public void onReceive(Context c, Intent intent) {
        WifiManager wfm = (WifiManager) c.getSystemService(Context.WIFI_SERVICE);  
        wfm.setWifiEnabled(Boolean.parseBoolean(intent.getStringExtra("wifi")));
    }
}

Después lo declaramos en el AndroidManifest.xml junto con el permiso de cambiar el estado del wifi. Como hace falta un permiso para hacer esto, puede que no quieras ponerlo en tu aplicación sino en otra aplicación que tengas instalada y uses para pruebas. Por eso ponemos el atributo exported=”true”, para poder usarlo desde otro aplicación.

1
2
3
4
5
6
7
<receiver android:name="ChangeWifiState" android:exported="true" >
    <intent-filter>
        <action android:name=">WifiChange" />
    </intent-filter>
</receiver>
 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Y ya está todo el código necesario, ahora, con el teléfono conectado, podemos usar adb para enviar un intent a ese receiver con el parámetro Wifi puesto a true o false para encender o apagar la conectividad wifi respectivamente, y android enviará el broadcast con el action CONNECTIVITY_CHANGE y podremos ver si lo estamos manejando correctamente o no en nuestra aplicación.

El comando que tenemos que poner en la consola es el siguiente:

adb shell am broadcast -a WifiChange -c android.intent.category.DEFAULT -n com.your.packageName/.ChangeWifiState -e wifi [boolean]

donde:
-a define el Intent Action
-c define la categoria del intent
-n define la clase que recibe el intent
-e el extra y su valor
[boolean] puede ser true o false.

También publicado en Google Plus https://plus.google.com/110502863648146989289/posts

6 libros imprescindibles para desarrollar en Android

Aunque en internet hay muchísimos recursos gratuitos así como foros y blogs donde aprender a resolver esos problemas que encontramos cuando desarrollamos en Android, nunca viene mal tener un libro a mano, escrito por expertos, donde se describa con mayor profundidad algunos de los aspectos más complejos de la plataforma Android.

Según mi experiencia como desarrollador, éstos son algunos de los libros que más útiles me han parecido a la hora de aprender sobre esta tecnología, todos en sus últimas ediciones (todas ellas en inglés).

Professional Android 4 Application Development (Wrox Professional Guides)

Reto Meier es un tech lead en el equipo de relaciones con desarrolladores android en Google y este es su tercer libro sobre Android, actualizado también a la versión 4 Ice Cream Sandwich, en su libro nos cuenta de primera mano las mejores prácticas para desarrollar en esta plataforma y cubre temas tanto básicos como avanzados, por ejemplo NFC y wifi direct, drag and drop, animación avanzada y una pequeña guía sobre como marketizar tus apps entro otros temas interesantes. Sin duda una buena compra.


Pro Android 4 (Apress)
Si ya tienes un nivel decente, en este libro te cuentan todo lo que necesitas saber sobre Android hasta la versión 4, incluyendo la action bar y los fragments introducidos en la versión 3 de Android, sin olvidar los temas básicos como intents, content providers, diálogos, y otros más avanzados como son las preferencias, multithreading, broadcasts, widgets, animación 2D y por supuesto sensores, localización y mapas. También existe una versión para principiantes que se llama Beginning Android 4 (Beginning Apress)


Android in Practice
Este libro, al contrario que los demás, es más bien un libro de recetas de Android, no te enseña a programar para Android sino más bien a cómo usar bien lo que Android te da. Digamos que el SDK te ofrece unas herramientas para hacer tus apps pero con este libro las usarás de la mejor manera posible y respetando las buenas prácticas. Su autor es el creador de la app Qype Radar entre otras y es muy recomendable para sacarle el máximo jugo a la plataforma de desarrollo.


Android Programming Tutorials
Commonsware ha sacado 3 libros pero no son libros comunes, por 40$ al año tienes tienes una suscripción a la última versión de sus libros con ejemplos básicos y avanzados y tutoriales sobre android siempre con lo ultimísimo que haya salido. Además, ofrecen gratis aquellas versiones de los libros que hayan vendido 4000 copias o tengan más de 4 años. Lo encontrarás en commonsware.com y si quieres la versión impresa los puedes encontrar en amazon en formato impreso.


Android Cookbook

Y hablando de recetas, O’Reilly tiene un wiki sobre android que también está lleno de recetas para hacer cosas concretas en android como por ejemplo, integrar twitter y facebook, bluetooh, sensores, juegos, bastante más básico que los demás pero mantenido por la comunidad. Lo puedes ver online en http://androidcookbook.com/



Beginning Android 4 Application Development

Este es un libro para empezar, cubre los aspectos más básicos para empezar a desarrollar con Android incluyendo servicios, geolocalización, networking… así como ejercicios para hacer por el lector.


Charlas sobre apps móviles en Campus Party 15

Han pasado unos meses desde campus party y he encontrado por mi escritorio algunos enlaces a charlas que se dieron en Campus Party 15 el verano pasado y que pienso que pueden ser interesantes.

Todas las charlas de campus party (o casi todas) las emiten por streaming en tiempo real y además las puedes ver en diferido en la propua web de campus party, pero habiendo tantas y estando tan mal ordenadas, os comparto aquí algunas que rescaté sobre temas de movilidad, y dicho sea de paso, una vez dentro podéis ver otras charlas de otros temas que sean de vuestro interés… Salud!

APPS NO NATIVAS http://tv.campus-party.org/player-valencia.php?v=jE7Sq-tyDw4

SMARTPHONES http://tv.campus-party.org/player-valencia.php?v=smzUpQWZL0k
ANDROID I http://tv.campus-party.org/player-valencia.php?v=WFLnhYvzKpo (@flipper83)
ANDROID II http://tv.campus-party.org/player-valencia.php?v=DsIH-qGC21I (@flipper83)
IPHONE I http://tv.campus-party.org/player-valencia.php?v=kY4d0ors1bM
IPHONE II http://tv.campus-party.org/player-valencia.php?v=HmzjAcyKNjY

HTML5 I http://tv.campus-party.org/player-valencia.php?v=6qSPIoWQMoc (@jorgecasar)
HTML5 II http://tv.campus-party.org/player-valencia.php?v=cP29BthW5Q0 (@jorgecasar)

HTML5 y CSS3 http://tv.campus-party.org/player-valencia.php?v=7megqzhhU6s

Primeros pasos con Arduino


El pasado mes de Agosto estuve participando en un taller de iniciación a Arduino en el que un voluntario nos estuvo explicando, durante un mes más o menos, cómo empezar a hacer nuestros cacharritos electrónicos basándonos en la plataforma de hardware libre Arduino.

No voy a hacer un tutorial, que para eso hay cientos, sino que voy a enseñaros algunas cosillas sencillas que hicimos allí para que os pique la curiosidad.

Una de las herramientas que me parecieron súper útiles es Frizting (http://fritzing.org/) que es una herramienta para dibujar esquemas electrónicos y realizar las conexiones y que luego además permite exportar el esquema para imprimir en una placa.

Algunas de las cosas que hicimos fue imitar la respiración del led que tiene el macbook cuando entra en suspensión, que es un LED blanco que se enciende y se apaga suavemente como si respirase. Yo decidí hacerlo con la función seno para que quedase mejor y este es el resultado en vídeo:

y el código fuente

También nos pidieron hacer el efecto de las luces del coche fantástico (aunque a mi me gusta más llamarlo efecto Cylon) con este resultado, de nuevo la función seno daba mejores resultados.

y el código fuente

y luego ya por mi cuenta he hecho un medidor de luz con una célula fotoeléctrica y un servo, quedando así de chulo:

con su código fuente para que no digáis que no contribuyo 😛

y ahora lo que estoy intentando, siguiendo esta guía, es conectar mi teléfono Android con Arduino para controlar hardware desde el teléfono, así que si lo consigo, lo pondré por aquí.

Eventos developers en Madrid


Madrid es una ciudad genial para vivir, pero también es genial para las personas emprendedoras e inquietas a las que les gusta participar en todo tipo de iniciativas “mentally challenging” (lo siento, me gusta más como suena en inglés).

Y es que, si eres desarrollador, en Madrid puedes hacer muchas cosas, por ejemplo, puedes asistir a las reuniones periódicas mensuales del Grupo de Usuarios de Tecnologías de Google (GTUG), dónde se reúnen entusiastas de las tecnologías de Google a contarnos, en pequeñas charlas y debates, cosas interesantes sobre Android, Google App Engine, HTML5, incluso Arduino y su interacción con Android, además, en su lista de correo pueden aparecer ofertas de trabajo sobre temas relacionados

Por otra parte, si eres un desarrollador más genérico, puedes pasarte por el BetaBeers, a compartir conocimientos en tecnologías, generalmente pero no limitado a web (tanto front com back) y después compartir unas birras y seguir charlando en un ambiente más informal.

¿Que te gusta más el hardware y la plataforma Arduino? Acaba de montarse un grupo de trabajo sobre Arduino para aprender desde cero y puedes apuntarte aquí.
A MediaLab Prado no he ido nunca, pero sé de buena tinta que también trabajan mucho con hardware, pero a un nivel más artístico.

¿Eres desarrollador de apps para móviles? Entonces puedes pasarte por The App Date y Mobile Monday aunque si prefieres un ambiente mas coloquial y con colegas, puedes pasarte por Android Startup aunque has de estar atento porque se pronuncian muy poco!

Y si por el contrario, te gusta más la acción y lo que quieres es montar una empresa, no dejes de ir a Iniciador, Innosfera y saluda a los chicos de TetuanValley o puedes asistir a alguno de los eventos anuales para lanzar un proyecto en un fin de semana con un grupo de gente emprendedora, como pueden ser iWeekend o Startup Weekend.

Y seguro que me dejo un montón, pero eso ya lo tendrás que investigar por tu cuenta, el caso es que si desarrollas, en Madrid no puedes aburrirte. Una ayuda para empezar… eventosfera.com

Usar Appcelerator Titanium y Studio a través de proxy

Appcelerator Titanium Logo
Buenas,

se que no escribo mucho últimamente y lo poco que escribo es casi a modo de chuleta para futura referencia y para quién necesite estos pequeños trozos de información que siempre tiene que andar uno recopilando en varios sitios.

Hoy voy a contaros como arrancar Appcelerator Titanium Developer y Titanium Studio detrás de un proxy corporativo.

Para conseguir arrancar Titanium Developer, hay que incluir el proxy en las variables de entorno:

HTTP_PROXY: http://username:password@proxyhost:proxyport
HTTPS_PROXY: http://username:password@proxyhost:proxyport

Referencia: http://wiki.appcelerator.org/display/guides/Installing+on+Windows+7#InstallingonWindows7-PCbehindproxyserver

Por el contrario, si queremos arrancar Titanium Studio (antes Aptana Studio y basado en Eclipse) nos tenemos que ir al siguiente archivo:

%Titanium_Studio_Path%\jre\lib\net.properties

En mi caso: C:\Users\usuario\AppData\Local\Titanium Studio\jre\lib

y editar las siguientes líneas con nuestros datos:

http.proxyHost=yourProxy.com
http.proxyPort=8080
http.nonProxyHosts=localhost|127.0.0.1
 
https.proxyHost=yourProxy.com
https.proxyPort=8080

En este caso ignoro si se puede incluir la información de usuario y password como en el caso anterior pero se puede intentar.

Referencia: http://developer.appcelerator.com/question/118402/cant-log-in-to-titanium-studio

También es necesario crear un link simbólico para que al inidicar la ruta al SDK de android, éste encuentre el adb.exe.
Abrir una consola de comandos de ms-dos y poner lo siguiente:

cd %ANDROID_SDK%\tools
mklink adb.exe ..\platform-tools\adb.exe
mklink AdbWinApi.dll ..\platform-tools\AdbWinApi.dll

Fuente: http://wiki.appcelerator.org/display/tis/Getting+Started+with+Titanium+Studio

Algunas configuraciones de dispositivos para probar layouts en Android con ADT

Esto puede ser útil a las personas que estén desarrollando aplicaciones para Android.

He creado algunas configuraciones para probar los layouts con la versión 0.10 del plugin ADT para Eclipse, para ver como queda la interfaz de usuario con distintas resoluciones de pantalla. Las he creado para el EVO 4G, Galaxy TAB de 7 pulgadas, de 8.9 pulgadas y para el motorola Xoom de 10.1 pulgadas, además, he creado una nueva para el Nexus One.

Las puedes ver haciendo clic en la imagen siguiente

ADT Device configurations