tus camisetas frikis en camisetafriki.com

Archive

Archive for the ‘Programacion’ Category

Charlas sobre apps móviles en Campus Party 15

September 28th, 2011 No comments

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

September 9th, 2011 No comments


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 :P

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í.

Categories: Freaks, Programacion Tags: ,

Eventos developers en Madrid

July 26th, 2011 58 comments


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

June 13th, 2011 No comments

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

Categories: Programacion Tags: ,

Algunas configuraciones de dispositivos para probar layouts en Android con ADT

March 31st, 2011 2 comments

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

Categories: Android, Programacion Tags:

Android dev: Abrir Google Navigation mediante Intent

December 23rd, 2010 2 comments

Un snippet muy práctico, para abrir Google Navigation con el destino que nosotros queramos, desde nuestra ubicación actual, con indicaciones habladas, vista oblicua e información del tráfico, mediante un intent:

1
2
3
4
5
//point es del tipo GeoPoint
String location = (point.getLatitudeE6()/1E6)+","+(point.getLongitudeE6()/1E6);
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("google.navigation:q="+location));
context.startActivity(i);

Google Navigation

Categories: Android, Programacion Tags: ,

Los programadores de Android son unos cachondos

October 29th, 2010 1 comment

android death star
No hay mas que ver la cantidad de detalles curiosos de la documentación oficial, como por ejemplo, constantes definidas con la gravedad de los planetas, la estrella de la muerte y la isla de Lost (que no podía ser otra que 4.815162342).

Además, he metido la gamba con una libreria y al reconstruir el proyecto me sale el siguiente mensaje intimidatorio, que indica que algo no estoy haciendo bien, y que si es algo intencionado, la aplicación fallará y seré culpado, acusado y me llevará al dolor, sufrimiento, pena y lamento…

Attempt to include a core class (java.* or javax.*) in something other
than a core library. It is likely that you have attempted to include
in an application the core library (or a part thereof) from a desktop
virtual machine. This will most assuredly not work. At a minimum, it
jeopardizes the compatibility of your app
with future versions of the
platform. It is also often of questionable legality.

If you really intend to build a core library -- which is only
appropriate as part of creating a full virtual machine distribution,
as opposed to compiling an application -- then use the
"--core-library" option to suppress this error message.

If you go ahead and use "--core-library" but are in fact building an
application, then be forewarned that your application will still fail
to build or run, at some point. Please be prepared for angry customers
who find, for example, that your application ceases to function once
they upgrade their operating system. You will be to blame for this
problem.

If you are legitimately using some code that happens to be in a core
package, then the easiest safe alternative you have is to repackage
that code. That is, move the classes in question into your own package
namespace. This means that they will never be in conflict with core
system classes. If you find that you cannot do this, then that is an
indication that the path you are on will ultimately lead to pain,
suffering, grief, and lamentation.

Categories: Android, Freaks, Programacion Tags: ,

Android: Formas de manejar un evento

August 24th, 2010 1 comment

Escribo esto casi como un recordatorio de las posibles formas de manejar eventos en Android, pongo por caso cómo manejar los eventos OnClick de un botón:

Inline:

1
2
3
4
5
this.btnCalcular.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
       	calcularRuta();
      }
});

Con un delegado:

1
2
3
4
5
6
7
8
9
private OnClickListener btnMyLocation_OnClick = new OnClickListener() {		
	@Override
	public void onClick(View v) {
		// Desde aquí no tenemos acceso a la clase 
		// así que podemos llamar a una método de 
		// la clase para modificarla			
	}
};
this.btnMyLocation.setOnClickListener(this.btnMyLocation_OnClick);

Implementando OnClickListener como una interfaz (esta opción no permitiría manejar eventos OnClick diferenetes salvo que hagamos un switch del View en la función OnClick para identificarlo):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ExampleActivity extends Activity implements OnClickListener {
    protected void onCreate(Bundle savedValues) {
        ...
        Button button = (Button)findViewById(R.id.corky);
        button.setOnClickListener(this);
    }
 
    // Implement the OnClickListener callback
    public void onClick(View v) {
      switch(v.getId())
      {
          case(R.id.corky):
          ...
      }
    }
    ...
}

En el XML del layout:

1
2
3
4
<Button
android:onClick="metodo"
... 
/>
1
2
3
4
public void metodo(View v)
{
   //hacer algo
}

(fuente: http://developer.android.com/guide/topics/ui/ui-events.html)

Categories: Android, Programacion Tags:

Android: Cambiar el color de un botón sin alterar su comportamiento

August 23rd, 2010 2 comments

Últimamente ando con temas de Android en el curro y estoy aprendiendo un montón, tanto que tengo pensados unas serie de posts sobre Android donde contaré cómo hacer aquellas cosas que no están demasiado bien explicadas en la documentación, o que hay que investigar un poco para conseguir hacerlas.

Como aún sigo trasteando, voy a empezar con una entrada cortita.

En este caso queremos pintar un botón de un color que no sea el del tema que estemos usando pero no queremos coger el photoshop y currarnos un botón bonito y sombreado desde cero y todos sus estados de seleccionado, pulsado, etc. solo para cambiarle el color, así que tiraremos de una función muy sencilla integrada en Android que consiste en aplicarle un filtro de color alpha al botón en cuestión partiendo de la base del típico botón gris:

boton coloreado

Para lograr esto sólo tenemos que aplicar esta línea:

1
button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);

Siendo 0xFFFF0000 el color en formato ARGB que queremos aplicar, en este caso, rojo.

Es muy interesante poder aplicar este tipo de filtros porque nos permite hacer un montón de efectos sobre los controles predefinidos en Android. Esta técnica no es exclusiva de Android, sino que también es muy usada en Photoshop para cambiar colores por ejemplo.

Aquí una tablita con las operaciones que se pueden hacer (no se si Android soporta todas)
alpha composition

(fuente: Stack Overflow)

Categories: Android, Programacion Tags:

Empezando con PhoneGap + Windows

July 28th, 2010 64 comments

En la Campus Party 2010 he asistido a una charla de espresso-team relacionada con aplicaciones web para móviles que se ejecutan como si fueran nativas. En este ámbito PhoneGap se lleva la palma y dado que las instrucciones de la web no son todo lo aclaratorias que deberían ser, voy a a indicar algunos consejos que me han ayudado a compilar el .jar con las librerías y a crear el proyecto de prueba:

Pasos:

1. Instalar el Java JDK:
http://java.sun.com/javase/downloads/index.jsp

2. Instalar Eclipse:
http://www.eclipse.org/downloads/ (extraer en algún sitio)

3. Instalar Android SDK:
http://developer.android.com/sdk/index.html (descomprimir en alguna ruta sin espacios, ej e:\android-sdk)
Importante para evitar dolores de cabeza después, añadir a la variable de entorno PATH la ruta hasta la carpeta del SDK (ej e:\android-sdk) y a la carpeta tools (ej. e:\android-sdk\tools)

4. Instalar el plugin ADT para Eclipse:
http://developer.android.com/sdk/eclipse-adt.html

5. Añadir componentes del SDK:
http://developer.android.com/sdk/adding-components.html

Si hay alguna duda hasta aquí, es como seguir la guía de Android para desarrolladores: http://developer.android.com/sdk/index.html

6. Instalar Apache ANT:
http://ant.apache.org/index.html (descomprimir en una carpeta sin espacios ej. e:\apache-ant)
IMPORTANTE: Crear dos variables de entorno, JAVA_HOME con la ruta al java_sdk (ej. C:\Program Files (x86)\Java\jdk1.6.0_20) y ANT_HOME con la ruta a la carpeta de ANT (ej. e:\apache-ant), además, añadir la ruta al /bin de ANT al PATH (ej. e:\apache-ant\bin)

7. Instalar ruby
Con instalador: http://rubyinstaller.org/

8. Instalar PhoneGap:
Hay dos opciones, instalar un cliente de github y bajárselo con él, o descargarte la última versión a mano de http://github.com/phonegap/phonegap-android (descomprimir en una carpeta)

9. Correr el comando mágico que creará tu .jar y el proyecto de ejemplo:
Dentro de la carpeta de phonegap-android:
ruby ./droidgap [ruta al android sdk] [nombre aplicacion] [nombre del package] [ruta al www] [ruta al proyecto de prueba]

dónde:
[ruta al android sdk] = ruta donde has descomprimido el SDK de android
[nombre aplicacion] = el que quieras, será el nombre de la aplicación
[nombre del package] = el que quieras, será el nombre del paquete
[ruta al www] = ruta donde están las fuentes html, que si no tienes, puedes poner la carpeta example de phonegap-android
[ruta al proyecto de prueba] = carpeta donde se creará el proyecto para abrir con Eclipse

En mi caso:
ruby ./droidgap e:\\Android\\android-sdk-windows test com.forgotten example/ e:\\Android\\proyectos\\phonegap1

10. Abrir Eclipse, crear un nuevo proyecto Android e indicar que lo queremos crear a partir de un código fuente existente, que será el que hemos indicado en [ruta al proyecto de prueba]

11. En el árbol de ficheros, clic derecho en libs/phonegap.jar > Build path > Add to build path

12. Clic derecho en la carpeta del proyecto dentro de Ecplise > Run As > Android Aplication.
Debes tener configurado un AVD compatible con el build target indicado en el manifest.xml.
Para más info sobre esto mejor ver el quick start de http://developers.android.com

Posibles errores:
./droidgap:37:in “’: No such file or directory – ant jar (Errno::ENOENT)
Solución, añadir la ruta de ANT a la variable de entorno PATH.

./droidgap:49:in “’: No such file or directory – android create project
Solución, añadir la ruta a las tools de Android SDK a la variable de entorno PATH.

Esto me ha llevado un montón conseguirlo por no leer las cosas, así que espero que sirva de ayuda

Categories: Programacion Tags: ,