<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3559855180572225356</id><updated>2024-04-15T19:43:13.369-07:00</updated><category term="android"/><category term="droid 2 global"/><category term="motorola"/><category term="Verizon"/><category term="android 2.3"/><category term="gingerbread"/><category term="motorola droid 2"/><category term="android gingerbread"/><category term="android 4"/><category term="android jelly bean"/><category term="android sdk"/><category term="droid2. telcel"/><category term="Fragment"/><category term="Google"/><category term="Icecream sandwitch"/><category term="droid 2"/><category term="galaxy nexus"/><category term="samsung"/><category term="update"/><category term="3G"/><category term="Java"/><category term="LayoutInflater"/><category term="Linux"/><category term="Postgresql"/><category term="Version.4.5.600.A956.Verizon.en.US"/><category term="ViewPager"/><category term="actualizacion"/><category term="adb"/><category term="android foryo"/><category term="cyanogenmod7"/><category term="droid 2 bootstrapper"/><category term="flash"/><category term="flashear"/><category term="github"/><category term="honeycomb"/><category term="layout"/><category term="mexico"/><category term="rom manager"/><category term="sbf"/><category term="3.0"/><category term="Activity"/><category term="Admob"/><category term="Android Dev Bites. LayoutTransition. LinearLayout."/><category term="Android Jellybean"/><category term="Android Studio"/><category term="Animacion"/><category term="Build"/><category term="Dockerfile"/><category term="Fragmento"/><category term="GSM"/><category term="Internet"/><category term="Maven"/><category term="Nexus Galaxy"/><category term="OTA"/><category term="OnPageChangeListener"/><category term="Oracle"/><category term="PLSQL"/><category term="R"/><category term="RSD Lite"/><category term="Tecnologia."/><category term="android device manager"/><category term="android market"/><category term="angdroid"/><category term="apk"/><category term="bateria"/><category term="celulares"/><category term="cliq"/><category term="configuraciones"/><category term="custom rom"/><category term="cyanogenmod9"/><category term="desarrollador"/><category term="development"/><category term="docker"/><category term="droid"/><category term="fission"/><category term="galaxy 7"/><category term="getResources"/><category term="google+"/><category term="gradle"/><category term="inflar vistas"/><category term="isc"/><category term="jelly bean"/><category term="mejoras"/><category term="mvn"/><category term="sbf_flash"/><category term="sistema operativo"/><category term="tablet"/><category term="team defuse"/><category term="videos"/><category term="xml"/><category term="1000"/><category term="2.3"/><category term="20 años"/><category term="4.3"/><category term="4G"/><category term="8.4"/><category term="ADT"/><category term="ALT"/><category term="Android 3.0. Chet Haase"/><category term="Android 4.0"/><category term="Android ICS"/><category term="Angry Birds"/><category term="Animation"/><category term="BDD"/><category term="Bases de Datos"/><category term="Bitmap"/><category term="CPU"/><category term="CPUMasterFree"/><category term="Chet Hase"/><category term="China."/><category term="Chrome"/><category term="Chrome OS"/><category term="Chromium"/><category term="Cyanogenmod"/><category term="DBMS"/><category term="DrawerLayout"/><category term="FPSE"/><category term="Framework"/><category term="Galaxy S3"/><category term="Google Breakfast"/><category term="Google Development"/><category term="Google Notebook"/><category term="HTC One X."/><category term="Honeycomb 3.1"/><category term="I/O"/><category term="IDE"/><category term="IT"/><category term="Ice-scream sandwich"/><category term="JPEG"/><category term="Japon"/><category term="Javacertificate"/><category term="Juan Alberto Cruz Cruz"/><category term="LinearLayout"/><category term="ListView"/><category term="Maquinas Virtuales"/><category term="MySql"/><category term="NFS"/><category term="Nexus 4"/><category term="Ninja Jump"/><category term="OJCP"/><category term="OpenSuse"/><category term="PNG"/><category term="PageTranformer"/><category term="Pingüinos"/><category term="PreferenceActivity"/><category term="PreferenceManager"/><category term="Rails"/><category term="Rails 3"/><category term="Rails for Zombies"/><category term="Recoery mode"/><category term="Reto Meier. Google I/O"/><category term="Robots"/><category term="Romain Guy"/><category term="Ruby"/><category term="Ruby on Rails"/><category term="SJCP"/><category term="SNesoid"/><category term="SharedPreferences"/><category term="TDD"/><category term="Tapcontext"/><category term="Terminal emulator"/><category term="Transicion"/><category term="UMTS"/><category term="View"/><category term="ViewGroup"/><category term="VirtualBox"/><category term="WCDMA"/><category term="Web Apps"/><category term="Web Store"/><category term="XBMC"/><category term="XPS501X"/><category term="ahome"/><category term="android 4.1"/><category term="android 4.2"/><category term="android ISC"/><category term="android at home"/><category term="android froyo"/><category term="android open accessory"/><category term="android project"/><category term="aplicaciones"/><category term="apn"/><category term="bateria baja."/><category term="bill"/><category term="c#"/><category term="camara"/><category term="cargador"/><category term="casette"/><category term="cd"/><category term="certification"/><category term="certified"/><category term="chuscos"/><category term="clockworkmod"/><category term="cm9"/><category term="codigo"/><category term="comandos"/><category term="comecial"/><category term="comerciales"/><category term="compartir"/><category term="conmemoracion"/><category term="construir"/><category term="cosas interesantes"/><category term="custom home"/><category term="custom view"/><category term="cyanogenmod 10."/><category term="cyanogenmod 9"/><category term="cyanogenmod."/><category term="debug"/><category term="debuggin"/><category term="desbloquear"/><category term="descarga"/><category term="dext"/><category term="dinamicos"/><category term="dinero"/><category term="dvd"/><category term="eclipse"/><category term="edge"/><category term="efectos"/><category term="ejemplo"/><category term="email"/><category term="emulador"/><category term="escritorio"/><category term="features"/><category term="fission rom manager"/><category term="formatear"/><category term="froyo"/><category term="funciones"/><category term="galaxy 10"/><category term="galaxy 4"/><category term="gameboy"/><category term="getIdentifier"/><category term="getString"/><category term="global"/><category term="gnome 3"/><category term="google plus"/><category term="google tv"/><category term="hexen"/><category term="hibernar"/><category term="hilights"/><category term="how to"/><category term="huddle"/><category term="humanidad"/><category term="identificador"/><category term="ihome"/><category term="instant upload"/><category term="ipad"/><category term="jelly-bean"/><category term="junit"/><category term="jvm"/><category term="kernel"/><category term="kubernetes"/><category term="la cuenta"/><category term="launcher"/><category term="liberado"/><category term="liberar"/><category term="logcat"/><category term="manual"/><category term="market"/><category term="mockito"/><category term="modmymobile"/><category term="monetizar"/><category term="money"/><category term="mono"/><category term="motorola droid"/><category term="motorola droid 2 global"/><category term="movistar"/><category term="multimedia"/><category term="music beta"/><category term="nexus q"/><category term="no free software"/><category term="noticias"/><category term="notificaciones"/><category term="npgsql"/><category term="obsoleta"/><category term="onCreateViev"/><category term="onDestroyView"/><category term="openhome"/><category term="openjdk"/><category term="overlock"/><category term="petaflops"/><category term="pgsql"/><category term="post"/><category term="poster"/><category term="preferencias"/><category term="procesadores"/><category term="programmer"/><category term="pruebas de unidad"/><category term="publicidad"/><category term="raspberry pi"/><category term="recovery"/><category term="recursos"/><category term="registro"/><category term="resources"/><category term="restaurant"/><category term="restore"/><category term="revision"/><category term="revnumbers"/><category term="rom"/><category term="rom toolbox"/><category term="root android"/><category term="screenshot"/><category term="setcontentview"/><category term="settins"/><category term="shop4apps"/><category term="sideload"/><category term="smartphones"/><category term="software"/><category term="split"/><category term="spock"/><category term="spring"/><category term="spring boot"/><category term="spring test"/><category term="super computadoras"/><category term="super usuario"/><category term="supersuer"/><category term="suspender"/><category term="tablelayout"/><category term="tablerow"/><category term="tablets"/><category term="telcel"/><category term="television"/><category term="test driven development"/><category term="titanium backup"/><category term="top 10"/><category term="tutorial"/><category term="twitter"/><category term="unit test"/><category term="update.zip"/><category term="usb"/><category term="usbd"/><category term="visitas"/><category term="vista personalizada"/><category term="vistas"/><category term="widgets"/><category term="xoom"/><category term="yast"/><category term="z4Root"/><title type='text'>El Blog del ti3r</title><subtitle type='html'>Blog sobre Tecnología, Desarrollo y mas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-1554200361327350465</id><published>2020-08-26T12:37:00.001-07:00</published><updated>2020-08-26T12:37:04.710-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Build"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Dockerfile"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="jvm"/><category scheme="http://www.blogger.com/atom/ns#" term="kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="Maven"/><category scheme="http://www.blogger.com/atom/ns#" term="mvn"/><category scheme="http://www.blogger.com/atom/ns#" term="openjdk"/><title type='text'>Optimizar MultiStage build en Docker y Maven</title><content type='html'>&lt;p&gt;&amp;nbsp;En esta entrada les quiero presentar un truco pequeño sobre como optimizar sus builds en Docker y Maven con tan solo cambiar una linea de código.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ya es bien sabido que Docker se ha convertido en una herramienta básica para los desarrolladores al momento de distribuir sus aplicaciones. Los contenedores de docker pueden ser descargados y ejecutados en cualquier ambiente compatible y ademas es uno de los manéjadores de contenedores soportados por kubernetes que se ha vuelto el estándar para correr aplicaciones en la nube.&amp;nbsp;&lt;/p&gt;&lt;p&gt;No solo eso. Con el soporte de multi-stage builds en Docker es posible támbien simplificar la manera en que las aplicaciones son compiladas y empaquetadas antes de ser distribuidas en su contenedor final. En un build multi-stage docker prepara un contenedor donde se ejecutan algunas instrucciones de compilado / pruebas y el resultado final es copiado a un nuevo contenedor.&lt;/p&gt;&lt;p&gt;Con esto se simplifica la manera en la que nuevos desarrolladores o servidores CI compilan las aplicaciones. Solo es necesario tener docker y poder descargar un contenedor con todas las herramientas ya listas para la compilación. Es este articulo lo haremos con maven.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Un ejemplo de un multi-stage build con maven y docker, y que ademas se encuentra mucho en proyectos de github, se puede estructurar como sigue.&lt;/p&gt;&lt;pre style=&quot;background-color: #2b2b2b; font-family: &amp;quot;jetbrains mono&amp;quot;, monospace; font-size: 9.8pt;&quot;&gt;&lt;pre style=&quot;font-family: &amp;quot;jetbrains mono&amp;quot;, monospace; font-size: 9.8pt;&quot;&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;FROM &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;maven:&lt;/span&gt;&lt;span style=&quot;color: #6897bb;&quot;&gt;3.6&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;jdk-11 as &lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;build&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;WORKDIR &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;/src&lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;* /src&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;RUN &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;mvn package &lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;DskipTests&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;FROM &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;adoptopenjdk:11-jre-hotspot&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;COPY --&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;from=&lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;build &lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;app.jar &lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;app&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;app.jar&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;CMD &lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;java&quot;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;-jar&quot;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;/app/app.jar&quot;&lt;/span&gt;&lt;span style=&quot;color: #a9b7c6;&quot;&gt;]&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;EXPOSE &lt;/span&gt;&lt;span style=&quot;color: #6897bb;&quot;&gt;8080&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Este método es muy común. Simplemente descargamos un contenedor docker que cuente con maven y java. Luego agregamos todo el proyecto completo al directorio src y empaquetamos el proyecto.&lt;/p&gt;&lt;p&gt;Luego tomamos un nuevo contenedor que sera encargado de correr nuestra aplicación. Copiamos el jar final desde el contenedor con alias build y lo colocamos en nuestro contenedor final con propiedades extra para poder correr nuestra aplicación.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Como optimizar este build?&amp;nbsp;&lt;/h3&gt;&lt;div&gt;El build se puede optimizar con solo agregar dos lineas de código en nuestro Dockerfile. Lo primero sera copiar el archivo pom.xml por sí solo y correr mvn package.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Esto instruye a docker a correr un build de maven, descargar todas las dependencias y crear una capa en el cache de docker con todas las dependencias.&lt;/div&gt;&lt;div&gt;El archivo se ve como sigue.&lt;/div&gt;&lt;pre style=&quot;font-family: &amp;quot;jetbrains mono&amp;quot;, monospace; font-size: 9.8pt;&quot;&gt;&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &amp;quot;jetbrains mono&amp;quot;, monospace; font-size: 9.8pt;&quot;&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;FROM &lt;/span&gt;maven:&lt;span style=&quot;color: #6897bb;&quot;&gt;3.6&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;-&lt;/span&gt;jdk-11 as &lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;build&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;WORKDIR /&lt;/span&gt;src&lt;span style=&quot;color: grey;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;ADD &lt;/span&gt;pom.xml .&lt;br /&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;RUN &lt;/span&gt;mvn package &lt;span style=&quot;color: #cc7832;&quot;&gt;-&lt;/span&gt;DskipTests&lt;br /&gt;&lt;span style=&quot;color: grey;&quot;&gt;# Este paso optimiza los builds hasta que el archivo pom o las dependencias cambien&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;ADD &lt;/span&gt;src src&lt;br /&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;RUN &lt;/span&gt;mvn package &lt;span style=&quot;color: #cc7832;&quot;&gt;-&lt;/span&gt;DskipTests&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;FROM &lt;/span&gt;adoptopenjdk:11-jre-hotspot&lt;span style=&quot;color: #cc7832;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;COPY --&lt;/span&gt;from=&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;build &lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;src&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;target&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;app.jar &lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;app&lt;span style=&quot;color: #cc7832;&quot;&gt;/&lt;/span&gt;app.jar&lt;br /&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;CMD &lt;/span&gt;[&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;java&quot;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;-jar&quot;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;/app/app.jar&quot;&lt;/span&gt;]&lt;br /&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;EXPOSE &lt;/span&gt;&lt;span style=&quot;color: #6897bb;&quot;&gt;8080&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que esta capa este en el cache de docker. Cualquier build que siga y comparta él mismo cache ya no necesitara descargar todas las dependencias y solo se enfocara en compilar los archivos dentro del directorio src.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Espero y este pequeño truco les sirva para optimizar sus proyectos que utilizan maven y docker&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/1554200361327350465/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2020/08/optimizar-multistage-build-en-docker-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1554200361327350465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1554200361327350465'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2020/08/optimizar-multistage-build-en-docker-y.html' title='Optimizar MultiStage build en Docker y Maven'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-6650500221544932042</id><published>2020-06-18T15:27:00.000-07:00</published><updated>2020-06-18T15:27:29.360-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="desarrollador"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Dockerfile"/><category scheme="http://www.blogger.com/atom/ns#" term="Maquinas Virtuales"/><category scheme="http://www.blogger.com/atom/ns#" term="Maven"/><category scheme="http://www.blogger.com/atom/ns#" term="mvn"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><title type='text'>De Regreso &amp; Docker</title><content type='html'>Hola que tal a todos,&lt;br /&gt;
&lt;br /&gt;
Pues como a muchos nos ha pasado en este 2020 y con toda la locura del corona virus (SARS COv2), los proyectos en el trabajo y en la vida personal han disminuido. A Varios meses ya de estar encerrado y con algo de tiempo libre. He decidido re tomar este blog y escribir un poco sobre lo he aprendido durante esta cuarentena. Durante el encierro he estado desarrollando algunos proyectos que me parecen interesantes y que quisiera compartir en una serie de posts. Empezaremos con algunas entradas básicas que serán fundamentales para poder avanzar y entender un poco más sobre el desarrollo en la nube (cloud computing).&lt;br /&gt;
&lt;br /&gt;
Esta entrada se tratara sobre docker y algunas de sus características un poco avanzadas sobre el sistema. Ya llevo varios años trabajando con docker en varias de las compañías en las que he desarrollado proyectos y la verdad es que es una herramienta fácil de entender y una vez que nos acostumbremos a desarrollar con docker no nos podremos imaginar no instalarlo tan pronto obtengamos una nueva computadora.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Una explicación sencilla&lt;/h4&gt;
&lt;br /&gt;
Algunos de nosotros todavía nos acordaremos de los viejos tiempos del desarrollo de software (no soy tan antiguo como otros pero sí me han tocado varias transformaciones). Primero se obtenía el código fuente, se modificaba y se probaba localmente. Luego se enviaba a otro grupo para que estos compilaran, lo empaquetaran y lo instalaran en la maquina donde se ejecutaba. Pero qué pasa?, si el sistema operativo, las librerías,&amp;nbsp; las versiones de las herramientas de compilación, etc son diferentes en cada uno de los diferentes pasos. Esto podría provocar problemas en el desarrollo.&lt;br /&gt;
&lt;br /&gt;
Docker intenta minimizar estos problemas al empaquetar la aplicación y las librerías que se necesitan en un solo contenedor que puede ser ejecutado en una gran variedad de plataformas. Algunas personas mencionan a las Maquinas Virtuales (virtualbox) como un paso intermedio entre maquinas físicas y docker para ejecutar programas. La diferencia es que las maquinas virtuales necesitan un sistema operativo base + librerías para poder ejecutar programas.&lt;br /&gt;
&lt;br /&gt;
Docker agrupa las librerías y herramientas básicas para ejecutar el sistema y tu programa sobre la plataforma docker que corre encima de un el sistema operativo nativo.&lt;br /&gt;
&lt;br /&gt;
Para mas información sobre como instalar docker y mas explicaciones visita&amp;nbsp;&lt;a href=&quot;https://docs.docker.com/get-docker/&quot;&gt;https://docs.docker.com/get-docker/&lt;/a&gt;&amp;nbsp;o&amp;nbsp;&lt;a href=&quot;https://docs.docker.com/get-started/part2/&quot;&gt;https://docs.docker.com/get-started/part2/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Un simple ejemplo de como construir una imagen (Dockerfile).&lt;/h4&gt;
&lt;br /&gt;
En la actualidad la mayoría de los proyectos utilizan alguna herramienta de construcción como Maven, Npm o Make. Estas herramientas simplifican la compilación, prueba y empaquetamiento del programa. Pero aun tenemos el problema de la distribución es por eso que muchos proyectos agregan el archivo Dockerfile al lado del archivo de proyecto como el pom.xml.&lt;br /&gt;
&lt;br /&gt;
Todos los ejemplos los podemos encontrar en el repositorio:&amp;nbsp;&lt;a href=&quot;https://github.com/ti3r/demostracion-simple-java-docker&quot;&gt;https://github.com/ti3r/demostracion-simple-java-docker&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez que los desarrolladores modifican el código es tan fácil como ejecutar para obtener la imagen final:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;docker build -t proyecto:latest .&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
(este comando utiliza el archivo:&amp;nbsp;&lt;a href=&quot;https://github.com/ti3r/demostracion-simple-java-docker/blob/main/Dockerfile&quot;&gt;https://github.com/ti3r/demostracion-simple-java-docker/blob/main/Dockerfile&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Con esta técnica, el proyecto debe de estar compilado, probado y empaquetado para que el resultado final sea agregado a la imagen de docker. Generalmente este paso es realizado en un servidor de Integración Continua (CI), como CircleCI, Jenkins, etc. el cual se encargara de construir la imagen de docker que sera ejecutada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Un ejemplo un poco mas complejo (Dockerfile multi stage build)&lt;/h4&gt;
&lt;br /&gt;
Cómo vemos empaquetar aplicaciones con docker es muy sencillo. Es muy común también que nuevos desarrolladores no tengan las herramientas para construir la aplicación, o que algún servidor de CI tenga versiones diferentes o que haya librerías diferentes o que no tengamos acceso a instalar algunos requerimientos para poder compilar, probar y empaquetar la aplicación. Una manera de resolver estos problemas es utilizar Multi-Stage Docker Builds. Para este ejercicio utilizaremos el archivo:&lt;br /&gt;
&lt;br /&gt;
Podemos ejecutar:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;docker build -t proyecto:latest -f Dockerfile.multi .&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una explicación rápida de que es lo que pasa en este archivo.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Definimos un stage utilizando una image base con nómbre &quot;build&quot;&lt;/li&gt;
&lt;li&gt;Definimos un directorio donde se copiaran los archivos del proyecto&lt;/li&gt;
&lt;li&gt;Copiamos todos los archivos fuente, el archivo pom y el wrapper de maven a ejecutar (para saber mas sobre mvn wrapper puedes leerlo aquí:&amp;nbsp;&lt;a href=&quot;https://github.com/takari/maven-wrapper&quot;&gt;https://github.com/takari/maven-wrapper&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ejecutamos maven para que cree el programa final&lt;/li&gt;
&lt;li&gt;Definimos la imagen base del programa de resultado&lt;/li&gt;
&lt;li&gt;Definimos las etiquetas y directorios de la imagen final&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Copiamos el resultado de la compilación del stage &quot;build&quot; a nuestra imagen final&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Utilizar multi-stage builds en docker resuelve varios problemas sobre cómo el preparar y compilar nuestra aplicación final. De esta manera podemos:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Estandarizar todas las herramientas necesarias para obtener nuestra aplicación final dentro de nuestro repositorio.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Utilizar diferentes imágenes para compilar y correr nuestro programa reduciendo el tamaño de la imagen final ya que no necesitamos&lt;/li&gt;
&lt;li&gt;Acelerar el desarrollo del proyecto ya que nuevos desarrolladores no necesitaran instalar nada en el sistema antes de aportar. Solo tener docker, clonar el repositorio y ejecutar los comandos necesarios&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/6650500221544932042/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2020/06/de-regreso-docker.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6650500221544932042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6650500221544932042'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2020/06/de-regreso-docker.html' title='De Regreso &amp; Docker'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total><georss:featurename>Minneapolis, MN, USA</georss:featurename><georss:point>44.977753 -93.2650108</georss:point><georss:box>44.7980145 -93.5877343 45.1574915 -92.9422873</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-8858817916090768702</id><published>2015-12-11T10:55:00.000-08:00</published><updated>2015-12-11T11:24:04.612-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BDD"/><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="junit"/><category scheme="http://www.blogger.com/atom/ns#" term="mockito"/><category scheme="http://www.blogger.com/atom/ns#" term="pruebas de unidad"/><category scheme="http://www.blogger.com/atom/ns#" term="spock"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><category scheme="http://www.blogger.com/atom/ns#" term="spring boot"/><category scheme="http://www.blogger.com/atom/ns#" term="spring test"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><category scheme="http://www.blogger.com/atom/ns#" term="test driven development"/><category scheme="http://www.blogger.com/atom/ns#" term="unit test"/><title type='text'>Mocking Tests Con Spring Boot, Spock y Gradle</title><content type='html'>Hola que tal, ya tenia mucho tiempo que no escribía en este blog. Para ser sinceros lo había abandonado ya que cambie de residencia, trabajo varias veces, hobbies y demás. Hacia falta un poco de distracción y enfoque en mi carrera profesional. En las ultimas semanas he tenido un poco de tiempo libre para investigar y desarrollar algunos ejemplos en las tecnologías en las que me he enfocado.&lt;br /&gt;
&lt;br /&gt;
En esta ocasión les tengo un sencillo ejemplo de como utilizar &lt;a href=&quot;https://github.com/spockframework/spock&quot; target=&quot;_blank&quot;&gt;Spock framework&lt;/a&gt;&amp;nbsp;para hacer pruebas de unidad en un proyecto. Existen muchas soluciones para las pruebas de unidad como JUnit, NUnit, etc. La ventaja de Spock es que se integra muy bien con diferentes IDEs y&amp;nbsp;&lt;a href=&quot;http://gradle.org/&quot; target=&quot;_blank&quot;&gt;Gradle&lt;/a&gt;&amp;nbsp;(que ha venido creciendo en adopción como constructor automatizado de proyectos) ya que utiliza ampliamente el lenguaje Groovy. Ademas que apoya al desarrollador a escribir las pruebas de unidad en una forma&lt;br /&gt;
&lt;br /&gt;
En lo particular me he tardado en adoptar el lenguaje groovy y todas las ventajas que este trae pero en cuanto a pruebas de unidad e integración es verdad que ofrece varias ventajas. El código fuente de el proyecto lo pueden encontrar en mi perfil de &lt;a href=&quot;https://github.com/ti3r/spring-boot-spock-test&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;&amp;nbsp;y a continuación les ofrezco una pequeña explicación de como esta conformado el proyecto.&lt;br /&gt;
&lt;br /&gt;
En primera es un proyecto gradle de naturaleza mixta entre Java y Groovy y todas las dependencias se pueden encontrar en el archivo build.gradle.&lt;br /&gt;
&lt;br /&gt;
A continuación en el directorio src/main/java/.... encontraran las clases Java Greeting, HelloResource y&amp;nbsp;SpringBootSpockTestApplication. Estas 3 clases sirven para construir una aplicación spring-boot rapida que expondrá un servicio web rest en la url /hello (Si necesitan saber mas sobre spring-boot pueden visitar este &lt;a href=&quot;http://projects.spring.io/spring-boot/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;). Como ven hasta aqui es una aplicación muy basica, la finalidad de este proyecto no es realizar la aplicación si no demostrar como hacer pruebas de unidad ya que en la actualidad es una parte muy importante de todo desarrollo de software.&lt;br /&gt;
&lt;br /&gt;
Dentro del directorio src/test/groovy/.... se encuentra una sola clase que es la que contiene todas las pruebas de unidad expresadas en lenguaje spock y las cuales intentare explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtm9ZstLPeoiNtRaXBPuCjuoNUiE7ff3cRYm1446K2Mt69qZKhIbnYFqVupm1-SoKvh3q4nHX1fVCksUZ47dXvZScJHfsLk1MHwLykUfbaL2ccdLf2PZ11XRO4FYVGJ8bEscEaK6tANk4/s1600/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.20.57+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtm9ZstLPeoiNtRaXBPuCjuoNUiE7ff3cRYm1446K2Mt69qZKhIbnYFqVupm1-SoKvh3q4nHX1fVCksUZ47dXvZScJHfsLk1MHwLykUfbaL2ccdLf2PZ11XRO4FYVGJ8bEscEaK6tANk4/s320/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.20.57+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Primero describimos una clase (en este caso SpringBootSpockTestApplicationTests) la cual extiende la clase base Specification de spock. Luego definimos dos objetos compartidos para todas las pruebas (los cuales están marcados por la anotación&amp;nbsp;@Shared). El primero de ConfigurableApplicationContext que es donde tendremos nuestro contexto de spring para poder acceder a beans específicos si es que necesitamos. El segundo de tipo MockMvc la cual utilizaremos para realizar llamadas rest hacia nuestros recursos REST y verificar su funcionamiento. &amp;nbsp;El método setupSpec() solo prepara estos dos objetos utilizando la conflagración de spring para que estén disponibles para las pruebas.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRbBHvXJhNaVXfxaUQ47f0drtzzXbQ0dVpG7wfNjob1VbW41RjA7Pz63Ub4IrAjMy0BC8qKvb3miCtrE0MOmmympFSeDRA06k2dK3tDfRD5TwQvt0wLjzUj4xbMdBpB8lIlsbkyxsfwzs/s1600/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.29.59+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRbBHvXJhNaVXfxaUQ47f0drtzzXbQ0dVpG7wfNjob1VbW41RjA7Pz63Ub4IrAjMy0BC8qKvb3miCtrE0MOmmympFSeDRA06k2dK3tDfRD5TwQvt0wLjzUj4xbMdBpB8lIlsbkyxsfwzs/s320/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.29.59+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Luego del setup vienen los métodos de prueba (o feature methods) los cuales están descritos por un titulo (normalmente una explicación de lo que la prueba esta intenta hacer) y dentro los bloques de la prueba ( when , then). Estos bloques permiten describir la prueba de una manera mas explicita y visible para los usuarios u otros programadores. Por ejemplo en estas pruebas solo hacemos una llamada GET utilizando nuestro objeto mockMvc en nuestro bloque When y en nuestro bloque Then verificamos que el resultado de la llamada contenga los valores que requerimos utilizando jsonPath.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spock se integra muy bien con diferentes ides asi que si este proyecto es abierto en eclipse las pruebas se pueden correr como una jUnit normal y el monitor de resultados nos dara los resultados como normalmente de muestran para junits normales. Ademas al construir nuestro proyecto utilizando gradle, estas pruebas también serán detectadas y desplegadas en nuestro reporte de pruebas. &amp;nbsp;Un ejemplo seria, al descargar el proyecto y ejecutar el comando&lt;br /&gt;
&quot; ./gradle clean build &quot; dentro del directorio del proyecto el archivo&amp;nbsp;build/reports/tests/index.html sera creado con los resultados de las pruebas el cual se vera a algo parecido a la ultima imagen del post.&lt;br /&gt;
&lt;br /&gt;
El mejor lugar para iniciar a entender spock es su pagina de basics la cual explica muy bien como definir pruebas en lenguaje spock. La pagina la pueden encontrar aquí&amp;nbsp;&lt;a href=&quot;https://code.google.com/p/spock/wiki/SpockBasics&quot; target=&quot;_blank&quot;&gt;https://code.google.com/p/spock/wiki/SpockBasics&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOSORu9k-Pz5zbO4rWjvM-0qqFyl0sUd4jqK8e1cWqwvIWBzGGe4JmM8r2dKFoUa_sb-oH9oucfxGOH2nqQV8ihH5WfgBJIagIB0Oixy5eHr_76en0TwAeNCPUkVM4j7DivyBMJEJGSxI/s1600/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.38.34+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOSORu9k-Pz5zbO4rWjvM-0qqFyl0sUd4jqK8e1cWqwvIWBzGGe4JmM8r2dKFoUa_sb-oH9oucfxGOH2nqQV8ihH5WfgBJIagIB0Oixy5eHr_76en0TwAeNCPUkVM4j7DivyBMJEJGSxI/s320/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.38.34+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlyfdy-wITBCNyO6HtIv-MON3tHE7Hmw8yxya_PmXlQH5OPRehY_8muSpXiNHLAzOKcMF1SSxNCidam_EB5d_OiV5A_NxZs92AsHq6MN417VLhVVF_NGwTLadzAG4bok6Bc5O2589-Ss/s1600/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.38.52+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;271&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlyfdy-wITBCNyO6HtIv-MON3tHE7Hmw8yxya_PmXlQH5OPRehY_8muSpXiNHLAzOKcMF1SSxNCidam_EB5d_OiV5A_NxZs92AsHq6MN417VLhVVF_NGwTLadzAG4bok6Bc5O2589-Ss/s320/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.38.52+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gZgbxTgCgpIjuVedr_gbIwf9wEaZ5NNAP6NgXB8roLNjHV050AJX7Rxm1Bh7_180McFVxDxAwwWrU5rkfQRZ8B8ZzGf8hcHaBYzebmUEgfSpz3L4cDaqfeDGhsBGdtJDAEIYhYPIQfU/s1600/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.53.01+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gZgbxTgCgpIjuVedr_gbIwf9wEaZ5NNAP6NgXB8roLNjHV050AJX7Rxm1Bh7_180McFVxDxAwwWrU5rkfQRZ8B8ZzGf8hcHaBYzebmUEgfSpz3L4cDaqfeDGhsBGdtJDAEIYhYPIQfU/s320/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.53.01+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bueno eso es todo por hoy, espero y este post les sea de ayuda. Espero y seguir escribiendo en el blog mas seguido.</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/8858817916090768702/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2015/12/mocking-tests-con-spring-boot-spock-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8858817916090768702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8858817916090768702'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2015/12/mocking-tests-con-spring-boot-spock-y.html' title='Mocking Tests Con Spring Boot, Spock y Gradle'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtm9ZstLPeoiNtRaXBPuCjuoNUiE7ff3cRYm1446K2Mt69qZKhIbnYFqVupm1-SoKvh3q4nHX1fVCksUZ47dXvZScJHfsLk1MHwLykUfbaL2ccdLf2PZ11XRO4FYVGJ8bEscEaK6tANk4/s72-c/Captura+de+pantalla+2015-12-11+a+la%2528s%2529+12.20.57+PM.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Minneapolis, Minnesota, EE. UU.</georss:featurename><georss:point>44.977753 -93.265010800000027</georss:point><georss:box>44.7980145 -93.587734300000022 45.1574915 -92.942287300000032</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-512642766185658701</id><published>2013-07-26T08:05:00.000-07:00</published><updated>2013-07-26T08:05:13.062-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="4.3"/><category scheme="http://www.blogger.com/atom/ns#" term="actualizacion"/><category scheme="http://www.blogger.com/atom/ns#" term="adb"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="android sdk"/><category scheme="http://www.blogger.com/atom/ns#" term="camara"/><category scheme="http://www.blogger.com/atom/ns#" term="comandos"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy nexus"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Breakfast"/><category scheme="http://www.blogger.com/atom/ns#" term="manual"/><category scheme="http://www.blogger.com/atom/ns#" term="Nexus Galaxy"/><category scheme="http://www.blogger.com/atom/ns#" term="OTA"/><category scheme="http://www.blogger.com/atom/ns#" term="Recoery mode"/><category scheme="http://www.blogger.com/atom/ns#" term="sideload"/><category scheme="http://www.blogger.com/atom/ns#" term="update"/><title type='text'>Android 4.3 en Galaxy Nexus (Instalación Manual)</title><content type='html'>Algunos de ustedes ya sabrán que hace unos días se realizo el evento &quot;Google Breakfast&quot;, así llamaron a la pequeña conferencia nada comparada con google I/O pero donde se anunciaron nuevos productos de Google. La nueva nexus 7 (la cual incluira el nuevo android), Google Chromecast, y por supuesto Android 4.3 aun llamado Jelly Bean. Esta nueva versión de Android es una actualización menor al sistema pero que trae interesantes nuevas características. La primera es OpenGL 3.0, luego mejor rendimiento en Bluetooth, y una nueva API para DRM la cual supuesta-mente permitirá mejor calidad en el vídeo. Se dijo que Netflix sera el primero en utilizar este nuevo código en su aplicación pero esperemos y otras apps como youtube o ulu lo hagan también. &lt;br /&gt;
&lt;br /&gt;
Fue una conferencia interesante, si desean ver un resumen de lo que sucedió pueden visitar el siguiente &lt;a href=&quot;http://www.engadget.com/2013/07/24/google-breakfast-liveblog/&quot;&gt;link&lt;/a&gt;. Uno de los mejores anuncios fue que las actualizaciones Android 4.3 por OTA ya han comenzado y Galaxy Nexus es uno de los dispositivos que obtendrán esta actualización. Es bueno saber que Google no nos ha olvidado como usuarios, la desventaja es que en ocasiones esta actualización puede tardar hasta semanas enteras en llegar al dispositivo, dependiendo del carrier. Si son como yo, tal vez el tiempo se les haga eterno así que me di a la tarea de actualizar mi dispositivo manualmente y probar esta nueva actualización. Aqui abajo les dejo los pasos para hacerlo. Lo que necesitaran sera el Android SDK y los drivers para galaxy nexus en su computadora (si es que utilizan windows, si son linux users como yo no es necesario preocuparse por los drivers).&lt;br /&gt;
1. Descarguen el archivo de actualización y coloquen lo en la carpeta platform-tools dentro del sdk. Este es el &lt;a href=&quot;http://android.clients.google.com/packages/data/ota/google_maguro/6c7ff815e7762f651ad6f8c74e5cb281093f1e0b.signed-yakju-JWR66V-from-JDQ39.6c7ff815.zip&quot;&gt;link para descargarlo&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Apaguen el teléfono e inicien en modo recovery con el dispositivo conectado a la pc.&lt;br /&gt;
&lt;i&gt;Para iniciar en modo recovery es necesario&amp;nbsp;presionar&amp;nbsp;las dos teclas de volumen y el&amp;nbsp;botón&amp;nbsp;de encendido al mismo tiempo, una vez que inicie el menu con el android este listo pueden usar volumen arriba o abajo para seleccionar &quot;Recovery Mode&quot; y luego presionar la tecla de encendido.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
3. Una vez que aparezca el Android con un símbolo de exclamasión es necesario acceder al menú de recovery, presionen las tecla volumen arriba y encendido varias veces hasta que el menú en azul aparezca. Una vez ahí seleccionen &quot;apply update from adb&quot; utilizando la tecla de endendido.&lt;br /&gt;
&lt;br /&gt;
4. Una vez que el teléfono este esperando la actualización tenemos que ejecutar el siguiente comando en una consola:&lt;br /&gt;
&lt;b&gt;adb sideload &lt;nombre archivo=&quot;&quot; del=&quot;&quot; descargamos=&quot;&quot; que=&quot;&quot;&gt;&lt;/nombre&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Si quieren verificar que el teléfono este listo para recibir la actualización antes de ejecutarla pueden escribir el siguiente comando:&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;adb devices&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Y debe de mostrar el telefono en modo sideload. Algo parecido a esto:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;List of devices attached&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;01467D551201000E&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sideload&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
5.0 Una vez que la actualización se haya completado solo seleccionamos &quot;reboot&quot; en el menú para que el teléfono se reinicie y poder utilizar la nueva versión de Android en nuestro Galaxy Nexus.&lt;br /&gt;
&lt;br /&gt;
Por el momento no he notado una gran diferencia entre esta nueva versión y la anterior, en teoría el rendimiento debería ser mejor pero hasta el momento no he podido notar la diferencia. La única diferencia visible es la aplicación de la cámara de fotos, la cual ya cuenta con una nueva interfaz y con la opción de timer para tomar las fotografías, esta era una de las opciones que mas quería en la aplicación. &lt;br /&gt;
&lt;br /&gt;
Una de mis sorpresas es que tenia un problema con mi entrada de audífonos y esta quedo arreglada. En la ultima semana el teléfono detectaba que los audífonos estaban conectados aun cuando no lo estaban y no era posible poder escuchar las llamadas por el auricular como normalmente lo hacia. Inclusive des arme el teléfono y reemplace la pieza por una nueva pero ni aun así ayudo en ese tiempo así que creo que era un problema con el software. Muy bien aquí abajo les dejo unas imágenes de como se ve el sistema y en los siguientes días comentare si encuentro diferencias grandes en cuanto al rendimiento o al sistema.&lt;br /&gt;
&lt;br /&gt;
P.D. si desean realizar esta actualización manualmente o esperar por la actualización manual comenten sus ideas en la sección de abajo.&lt;br /&gt;
&lt;br /&gt;
Update: Si tienen problemas con los drivers o el ejecutar comandos en la consola en teoría debe de ser posible aplicar el update desde la memoria interna del teléfono, yo no lo hice así pero esta es otra opción. Lo único que hay que hacer es colocar el archivo de actualización dentro del teléfono y seleccionar &quot;apply update from sdcard&quot; en el menú de recovery.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoNibA5qJTXgSXmg8k8uk3nP-WJOYMut71rFqSNBxscrhQOh30jfpMlKg_KC_epyJhGf-vryvJtOh7arRdFLGDNGFCpHT0lP_m0PncWJp9ML6g_KcktxUZe_e5VWvPizlEzdNJ2cPKrs/s1600/device-2013-07-26-095725.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoNibA5qJTXgSXmg8k8uk3nP-WJOYMut71rFqSNBxscrhQOh30jfpMlKg_KC_epyJhGf-vryvJtOh7arRdFLGDNGFCpHT0lP_m0PncWJp9ML6g_KcktxUZe_e5VWvPizlEzdNJ2cPKrs/s320/device-2013-07-26-095725.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim7K0-EmaQ359HreuklXUnYhYGV_nSLy3n1tVcEMIpo96_LKJmP4qIGQCnOKq0nxM-NupTBXid1fjjpL0ulGDoyn3tSSkGWVFo_e2m-pElo31GZ7C2YwbkDTHXx4OJZQGtCXJGQJ8j9GA/s1600/device-2013-07-26-095706.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim7K0-EmaQ359HreuklXUnYhYGV_nSLy3n1tVcEMIpo96_LKJmP4qIGQCnOKq0nxM-NupTBXid1fjjpL0ulGDoyn3tSSkGWVFo_e2m-pElo31GZ7C2YwbkDTHXx4OJZQGtCXJGQJ8j9GA/s320/device-2013-07-26-095706.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ_fxv04Sa3RiIhkpVms097Duy10PFzII6Oo9U6N6CnJKRv39G4VCejLbkV1t6NXyhl8szXcbYCyKpn-i9m5cpQMt_aB5EfFzBogsU-9sN9kvFPuGlddo5SbACi-QTThWrRxMHBeLbN8A/s1600/device-2013-07-26-095543.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ_fxv04Sa3RiIhkpVms097Duy10PFzII6Oo9U6N6CnJKRv39G4VCejLbkV1t6NXyhl8szXcbYCyKpn-i9m5cpQMt_aB5EfFzBogsU-9sN9kvFPuGlddo5SbACi-QTThWrRxMHBeLbN8A/s320/device-2013-07-26-095543.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimKy_XUHs77h6FoXIG9RThCcm1L9GxjDd_HQnUBT07ALVUldP6Vqa0b2wgrPwa-VjcJa-OjnHr5QRjbK_P_XgV2TCDLp2tLr6QJS4PPmCoiMZONHBIAONhaEfWm9bawF7zYjDFPc4DjWw/s1600/device-2013-07-26-095511.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimKy_XUHs77h6FoXIG9RThCcm1L9GxjDd_HQnUBT07ALVUldP6Vqa0b2wgrPwa-VjcJa-OjnHr5QRjbK_P_XgV2TCDLp2tLr6QJS4PPmCoiMZONHBIAONhaEfWm9bawF7zYjDFPc4DjWw/s320/device-2013-07-26-095511.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIE5Pu7j5kWTJQa6yVxHt7ol7lgcvULEms8s0iEjHPs52CStnbbs7-IkFtINzHmq7zVB-RVVn3JWKFP2_jVrCt0WgViaptZxXlsnGE2QInAo1FhyphenhyphenQPS5YAoq2pUbTxvgrWEvuPu9DKg6g/s1600/device-2013-07-26-095627.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIE5Pu7j5kWTJQa6yVxHt7ol7lgcvULEms8s0iEjHPs52CStnbbs7-IkFtINzHmq7zVB-RVVn3JWKFP2_jVrCt0WgViaptZxXlsnGE2QInAo1FhyphenhyphenQPS5YAoq2pUbTxvgrWEvuPu9DKg6g/s320/device-2013-07-26-095627.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/512642766185658701/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/07/android-43-en-galaxy-nexus-instalacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/512642766185658701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/512642766185658701'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/07/android-43-en-galaxy-nexus-instalacion.html' title='Android 4.3 en Galaxy Nexus (Instalación Manual)'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicoNibA5qJTXgSXmg8k8uk3nP-WJOYMut71rFqSNBxscrhQOh30jfpMlKg_KC_epyJhGf-vryvJtOh7arRdFLGDNGFCpHT0lP_m0PncWJp9ML6g_KcktxUZe_e5VWvPizlEzdNJ2cPKrs/s72-c/device-2013-07-26-095725.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Minneapolis, MN, USA</georss:featurename><georss:point>44.983334 -93.266669999999976</georss:point><georss:box>44.8035955 -93.589393499999971 45.1630725 -92.943946499999981</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-4233665275445721910</id><published>2013-07-10T14:38:00.000-07:00</published><updated>2013-07-11T19:07:45.843-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Activity"/><category scheme="http://www.blogger.com/atom/ns#" term="Admob"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Dev Bites. LayoutTransition. LinearLayout."/><category scheme="http://www.blogger.com/atom/ns#" term="Android Jellybean"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="DrawerLayout"/><category scheme="http://www.blogger.com/atom/ns#" term="Fragment"/><category scheme="http://www.blogger.com/atom/ns#" term="Fragmento"/><category scheme="http://www.blogger.com/atom/ns#" term="getResources"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="google+"/><category scheme="http://www.blogger.com/atom/ns#" term="ListView"/><title type='text'>Ejemplo Con Action Drawer</title><content type='html'>Hoy vamos a realizar un pequeño ejemplo de una aplicación con ActionDrawer. La mayoría de las aplicaciones utilizan este componente en la actualidad para desplegar menús de opciones. En un inicio el menú de opciones por defecto fue reemplazado por el Action Bar al aparecer las Tablets y hoy Google recomienda migrar nuestras aplicaciones a utilizar este diseño para proveer una mejor experiencia al usuario; claro que esto no es estrictamente necesario, podemos desarrollar una app sin utilizar ActionDrawers y no habrá ningún problema.&lt;br /&gt;
&lt;div&gt;
Si aun no identifican que es ActionDrawer, es la barra deslizable que presenta opciones al usuario en alguno de las puntos finales de la pantalla (generalmente el extremo izquierdo). Google+ nos presenta esta barra con las opciones de fotos, comunidades, etc.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfVJTUBy9-GF1Uji2giQ-QLEBDCHxBbuqj-JS3kIxRNYxvUFRPRSvEje7_ogZBMIu68C6Jy46bvd8nXP-831u4dTeWYGe81M8FMPybWlh5z6Ix6yZev5qCvjniCIehqR80jPLE9CGjpPc/s1600/google_plus.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfVJTUBy9-GF1Uji2giQ-QLEBDCHxBbuqj-JS3kIxRNYxvUFRPRSvEje7_ogZBMIu68C6Jy46bvd8nXP-831u4dTeWYGe81M8FMPybWlh5z6Ix6yZev5qCvjniCIehqR80jPLE9CGjpPc/s320/google_plus.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Muy bien manos a la obra, lo primero que aremos es crear un proyecto de Android por defecto. Esto nos debe de crear una actividad principal y un layout para nuestra actividad. Generalmente el nodo raíz de este layout es un LinearLayout o RelativeLayout (o lo que hayamos especificado por defecto), es aquí donde viene el primer cambio. El nodo raíz de &amp;nbsp;nuestro xml ahora sera un &quot;android.support.v4.widget.DrawerLayout&quot;; esta vista es dibujada de la siguiente manera. El primero nodo hijo sera el contenido que sera desplegado en la pantalla y el segundo nodo debe de ser de tipo &quot;ListView&quot; que sera el que desplegara la lista de opciones. En esta aplicacion de prueba nuestro main_layout.xml se vera de la siguiente manera:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL40wHFWvflnSAwnPmm7IDFEpWVEgt_UQcv2hZkNfJrz3dztTQ0nlhajrfz-7ND1Paj4k7VRpdHm3ohur8BqE7_o-vuIFTBRbVN_ch-xU77QxQ3tbmock3iIJzhn5N8CDe-bsRWG0x67A/s1600/main_layout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL40wHFWvflnSAwnPmm7IDFEpWVEgt_UQcv2hZkNfJrz3dztTQ0nlhajrfz-7ND1Paj4k7VRpdHm3ohur8BqE7_o-vuIFTBRbVN_ch-xU77QxQ3tbmock3iIJzhn5N8CDe-bsRWG0x67A/s400/main_layout.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Básicamente lo que este layout describe es DrawerLayout con id &quot;main_act_drawer&quot; como principal; este contiene&amp;nbsp;un primer hijo de tipo FrameLayout con id &quot;content_frame&quot; y un segundo nodo de tipo ListView con id &quot;left_drawer&quot;. &amp;nbsp;Ya habíamos dicho que el primer nodo dentro de DrawerLayout sera lo que se desplegara en pantalla, en este caso FrameLayout lo vamos a utilizar para desplegar un mensaje por defecto (TextView contenido dentro) y cuando el usuario seleccione algo del menú el contenido sera reemplazado por un fragmento definido.&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;Nota: Es importante resaltar que layout_height &amp;amp; layout_width de la mayoría de las vistas están definidas con constantes, esto bloquea a AndroidStudio de desplegar una vista previa de la pantalla pero al momento de ejecutar la&amp;nbsp;aplicación&amp;nbsp;esta corre sin&amp;nbsp;ningún&amp;nbsp;problema.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
El ListView (left_drawer) lo utilizaremos para desplegar las opciones en nuestro ActionDrawer y por lo tanto necesitamos crear un adaptador que contenga los valores para nuestras opciones. Por lo tanto agregaremos a nuestro archivo strings.xml los siguientes elementos:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHkMPk5x-wIRs4ts0v-kDgZ4XewO5DkJ3tEfzHcIEFQAuEBv8dWkSJtOSzU-nWoZHx3_T2OUzQRW0g2ySseIrTtBQAuxY3HFa5v6VjdIns1ylD-15HgmZrqMiVYtAe3TW77kjx6CgkYfw/s1600/strings.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHkMPk5x-wIRs4ts0v-kDgZ4XewO5DkJ3tEfzHcIEFQAuEBv8dWkSJtOSzU-nWoZHx3_T2OUzQRW0g2ySseIrTtBQAuxY3HFa5v6VjdIns1ylD-15HgmZrqMiVYtAe3TW77kjx6CgkYfw/s1600/strings.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
El primero es la lista de opciones para nuestro menú el segundo es una lista de colores que definen el valor del color correspondiente en valor hexadecimal. AndroidStudio nos presenta el valor del color en un recuadro en la barra lateral; este es una opción no disponible anteriormente en eclipse ADT y que me parece es un poco cool.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ahora escribiremos un poco de código para iniciar correctamente nuestras opciones ya que si no el ActionDrawer no sera desplegado en nuestra aplicación por que no contiene ninguna opción. Así que escribimos el siguiente código en nuestra actividad principal.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAD3asivx190znm8I10h3ByiwrgDeLWLqH7n6qlo2We2AZe47wTpZb-kFLr3SDJmZMpT5lxSpMpTuOvd9uI5cyWaXinnoISU1TQoAK9qoYAB4AGood6Rm47dqI98WbT_7ceME2Puhstnk/s1600/prepare_action_drawer.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAD3asivx190znm8I10h3ByiwrgDeLWLqH7n6qlo2We2AZe47wTpZb-kFLr3SDJmZMpT5lxSpMpTuOvd9uI5cyWaXinnoISU1TQoAK9qoYAB4AGood6Rm47dqI98WbT_7ceME2Puhstnk/s400/prepare_action_drawer.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
En simples palabras una vez que establezcamos el layout de nuestra actividad, llamaremos el método prepareActionDrawer para efectivamente iniciar nuestro menú. Lo primero que hacemos es retraer las vistas de nuestro layout con findViewById. Luego creamos un ArrayAdapter utilizando el arreglo que definimos en strings.xml (main_act_drawer_opts) y lo establecemos a nuestra lista. Luego podemos ver que establecemos un nuevo OnItemClickListener en nuestra lista, esta clase sera la encargada de hacer el &amp;nbsp;cambio de fragmentos en nuestra vista contenedora así que revisaremos esta clase con mas detalle luego. Al final de nuestro método creamos un nuevo objeto ActionBarDrawerToggle que estará encargado de abrir y cerrar el action drawer cuando demos clic en el icono de nuestra app (parte superior izquierda). Es por esto que nuestra primera linea en el método es setDisplayHomeAsUpEnabled(true) para que este botón aparezca en nuestra barra.&lt;br /&gt;
&lt;br /&gt;
El ultimo código que agregaremos en nuestra actividad principal sera sobrescribir el método onOptionsItemSelected para que nuestro objeto ActionBarDrawerToggle detecte si una de las opciones del menú ha sido seleccionada y el drawer se cierre. El código se ve de la siguiente manera.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBbgmdJSwn7m1KAELIDfddbM2Av8zB47Em3WwPcwjnqE6-Dv9AOrhZcFYQUggb3FofSsNrgyZV9q6v21cko5MZfK4t57n64EtXVCP5YFT18oDxBrM3qx9LMxy9i2S-T4VNMd3S730uElI/s1600/options_menu_item_selected.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBbgmdJSwn7m1KAELIDfddbM2Av8zB47Em3WwPcwjnqE6-Dv9AOrhZcFYQUggb3FofSsNrgyZV9q6v21cko5MZfK4t57n64EtXVCP5YFT18oDxBrM3qx9LMxy9i2S-T4VNMd3S730uElI/s400/options_menu_item_selected.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
La parte final sera crear la clase encargada de manejar el contenido de nuestra aplicación &quot;DrawerClickListener&quot;, esta clase sera la encargada de actualizar el fragmento que desplegara el contenido por cada una de las opciones que el usuario seleccione. Para esto necesitamos fragmentos que serán colocados en nuestro &quot;content_frame&quot;; aquí vamos a hacer uso de una vieja clase &lt;a href=&quot;https://github.com/ti3r/view_pager_test/blob/master/src/org/blanco/tests/viewpager/PlainColorFragment.java&quot;&gt;PlainColorFragment&lt;/a&gt;&amp;nbsp;del proyecto anterior &lt;a href=&quot;https://github.com/ti3r/view_pager_test&quot;&gt;view_pager_test&lt;/a&gt;&amp;nbsp;(si no recuerdan este proyecto visiten los posts de Ejemplos con View Pager &lt;a href=&quot;http://blogti3r.blogspot.com/2011/09/ejemplo-con-viewpager-en-android.html&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;http://blogti3r.blogspot.com/2013/03/ejemplo-con-viewpager-extendido.html&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;http://blogti3r.blogspot.com/2013/04/ejemplo-con-view-pager-super-extendido.html&quot;&gt;3&lt;/a&gt; ). El codigo de esta clase se ve como se muestra aqui abajo:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCQ8bc42dNhfRY2_YJx5UhWCBHwBowLStzHZJJGY-tvA4rDTtty8Nq89TRsC05WQ9kfEnU1CAZDUMfb5wjhZ4Sy3Ci9WRmqkQrybeiREo2puCf3iC5yLYpW_pJ17YoB6Rj7OJxQCIo3yY/s1600/drawer_click_listener.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;335&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCQ8bc42dNhfRY2_YJx5UhWCBHwBowLStzHZJJGY-tvA4rDTtty8Nq89TRsC05WQ9kfEnU1CAZDUMfb5wjhZ4Sy3Ci9WRmqkQrybeiREo2puCf3iC5yLYpW_pJ17YoB6Rj7OJxQCIo3yY/s400/drawer_click_listener.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
En el constructor de la clase necesitamos 3 referencias, la primera a un FragmentManager que sera el encargado de cambiar los fragmentos en el contenido (proviene del fragment manager de la actividad principal). El segundo es la referencia a nuestro DrawerLayout el cual nos permitirá manipular el layout y el tercero nuestra lista de opciones en el Drawer para poder cerrarla. &amp;nbsp;Ademas de esto creamos la referencia a los valores de los colores que almacenamos en strings.xml utilizando getResources() desde una de nuestras vistas.&lt;br /&gt;
Luego de nuestro constructor tenemos el evento importante onItemClick, este es el evento que se ejecuta cada vez que una opción de nuestro ActionDrawer es seleccionada. Lo primero que hacemos es seleccionar el color de nuestro arreglo basado en el valor del indice que nos manda la selección. Luego mandamos cerrar la lista de nuestro drawer con el método closeDrawer de nuestro DrawerLayout para que el usuario vea el cambio en el contenido. Por ultimo utilizaremos nuestra clase PlainColorFragment para crear instancias del fragmento que se desplegara basándonos en el color que se ha seleccionado; iniciamos una nueva transacción en nuestro FragmentManager y reemplazamos el contenido de content_frame, con el fragmento que acabamos de crear y le ponemos el nombre del color que seleccionamos. Al final hacemos commit en la transacción para que sea aceptada.&lt;br /&gt;
&lt;br /&gt;
En los screens que se muestran abajo les muestro como se ve la app ya terminada y como siempre el código esta disponible para el que así lo desee en mi perfil de &lt;a href=&quot;https://github.com/ti3r/ActionDrawerExample/releases/v1.0&quot;&gt;github&lt;/a&gt;. Espero y este articulo les sea de utilidad ya que la mayoría de las aplicaciones ahora están desplegando Drawers como este.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Update: Si quieren descargar la aplicación funcionando desde play store pueden hacerlo con este link. Si lo hacen se los agradecería ya que ayudarían a que continué desarrollando para android.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=org.blanco.android.actiondrawerexample&quot;&gt;https://play.google.com/store/apps/details?id=org.blanco.android.actiondrawerexample&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Saludos a todos&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVDnCp1oEtBP3HNx7p3btL6QExCYrAgkAlCqcsgZamph98GbV1hCjTv5bboBks1psCnxmrPXoHen6xzLTAXGT3PpjYn-i_SYV9XhToyJd40qo_HOepaK2r7fXrBSaBvlD9n0_7S_1hjvw/s1600/device-2013-07-10-171048.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVDnCp1oEtBP3HNx7p3btL6QExCYrAgkAlCqcsgZamph98GbV1hCjTv5bboBks1psCnxmrPXoHen6xzLTAXGT3PpjYn-i_SYV9XhToyJd40qo_HOepaK2r7fXrBSaBvlD9n0_7S_1hjvw/s320/device-2013-07-10-171048.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrxiXTYOSUc4vglhdBNu4SayS9gTCSN2BN7QTZ6etAm9BBdmHnej20EDYcLQivtNz8p1W3_wHFVxmSlsBcCvetxwvNmeM0JVSXsCSKOUA4D4tjk24E6B7VNCG8WP-hgLrVzjFxFjufnh8/s1600/device-2013-07-10-171152.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrxiXTYOSUc4vglhdBNu4SayS9gTCSN2BN7QTZ6etAm9BBdmHnej20EDYcLQivtNz8p1W3_wHFVxmSlsBcCvetxwvNmeM0JVSXsCSKOUA4D4tjk24E6B7VNCG8WP-hgLrVzjFxFjufnh8/s320/device-2013-07-10-171152.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9BlGHU8r47_Mkv0uUSVGLHKIMWHWDHi_miSzg3n3Dj1uazMWi9Vn2OttVk-ahKPipeMPuhNeJ8Brbg7pgLNfHSbm_hto6biNQg2uouJUCLC93IwzXt-UHSvsVBDgZS50hnXQMvn-gOoU/s1600/device-2013-07-10-171227.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9BlGHU8r47_Mkv0uUSVGLHKIMWHWDHi_miSzg3n3Dj1uazMWi9Vn2OttVk-ahKPipeMPuhNeJ8Brbg7pgLNfHSbm_hto6biNQg2uouJUCLC93IwzXt-UHSvsVBDgZS50hnXQMvn-gOoU/s320/device-2013-07-10-171227.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Z8CyZWYOXm4R0kZTLznsntQ1ERDGC9uHNeqceaI-Exz1vVH0bDuDJQ-DJOo2DTpAG9T8FcjcWL2xwornW5oLKL2cGVejKZTrVVbqoBGRImdlg70Lj0KkKGpm-qf72dpGfd1m8NGDop8/s1600/device-2013-07-10-171249.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Z8CyZWYOXm4R0kZTLznsntQ1ERDGC9uHNeqceaI-Exz1vVH0bDuDJQ-DJOo2DTpAG9T8FcjcWL2xwornW5oLKL2cGVejKZTrVVbqoBGRImdlg70Lj0KkKGpm-qf72dpGfd1m8NGDop8/s320/device-2013-07-10-171249.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvp2L307DJ_Yke4p9NNspOQGyh7zRAEmkL3ddcdahYOdjjFstr9vnQ9RBhusuBDGOrYGi3sQt0wxjsqc2CGiWnLeT0zvlj2v4kuQugyuQSaRzzWl-0W9j_VG8EoALPPdG9rUahTdmKLIc/s1600/device-2013-07-10-171304.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvp2L307DJ_Yke4p9NNspOQGyh7zRAEmkL3ddcdahYOdjjFstr9vnQ9RBhusuBDGOrYGi3sQt0wxjsqc2CGiWnLeT0zvlj2v4kuQugyuQSaRzzWl-0W9j_VG8EoALPPdG9rUahTdmKLIc/s320/device-2013-07-10-171304.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIJhnFy6gVI99Hk3IMOXR2UT9iQp1aOjnu560IJ7SDamuDfhGfWB88Y6HK-Kf0ySseG7E46nk_GXdoqy59NhLvSmyDEyYmZhcWe2UibsO39gEUgRg_yx2013O98EKNB0HEdzdt6dL41y8/s1600/device-2013-07-10-171331.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIJhnFy6gVI99Hk3IMOXR2UT9iQp1aOjnu560IJ7SDamuDfhGfWB88Y6HK-Kf0ySseG7E46nk_GXdoqy59NhLvSmyDEyYmZhcWe2UibsO39gEUgRg_yx2013O98EKNB0HEdzdt6dL41y8/s320/device-2013-07-10-171331.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sZOEtvJdBLGAIXd_zoL1N9MkQvfZmGiGJlfmqpWGci9t3rpg70A-E8gwwkkpqakrKsXhragKQSKWWYiUO2J0jIftAd8u05AlmVvoubKKMS2hCj-sJzR3fJ4crjZU7zRQDAcUKFc4lA8/s1600/device-2013-07-10-171402.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sZOEtvJdBLGAIXd_zoL1N9MkQvfZmGiGJlfmqpWGci9t3rpg70A-E8gwwkkpqakrKsXhragKQSKWWYiUO2J0jIftAd8u05AlmVvoubKKMS2hCj-sJzR3fJ4crjZU7zRQDAcUKFc4lA8/s320/device-2013-07-10-171402.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgMOycHSOr1rL7SFNb5sVpyMXL4APsF-1RNeDHvIIJ8vICihkvZj2TIfdd-ORK56DRsUBpdRCXGHaLIBJ6RTfSt81PI5smfKNuJ3nUzZmRVFFe9sEmD961rVKPGtwKs7hd3lBKiUtQ3wg/s1600/device-2013-07-10-171343.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgMOycHSOr1rL7SFNb5sVpyMXL4APsF-1RNeDHvIIJ8vICihkvZj2TIfdd-ORK56DRsUBpdRCXGHaLIBJ6RTfSt81PI5smfKNuJ3nUzZmRVFFe9sEmD961rVKPGtwKs7hd3lBKiUtQ3wg/s320/device-2013-07-10-171343.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv0efS5-j5CNl69jG6aYsHKN6XT7KR6X8hQ44h6t-hhspYIAzzS3bWWpbxzK4J3_ml_PRqhtzFJlBUSfaNH8z0p7DaQdDH2tqvOSxKNH35NWSaG8PL9ylTIQY51cA2QWCZiG9hX8AEeLQ/s1600/device-2013-07-10-171416.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv0efS5-j5CNl69jG6aYsHKN6XT7KR6X8hQ44h6t-hhspYIAzzS3bWWpbxzK4J3_ml_PRqhtzFJlBUSfaNH8z0p7DaQdDH2tqvOSxKNH35NWSaG8PL9ylTIQY51cA2QWCZiG9hX8AEeLQ/s320/device-2013-07-10-171416.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/4233665275445721910/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/07/ejemplo-con-action-drawer.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4233665275445721910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4233665275445721910'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/07/ejemplo-con-action-drawer.html' title='Ejemplo Con Action Drawer'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfVJTUBy9-GF1Uji2giQ-QLEBDCHxBbuqj-JS3kIxRNYxvUFRPRSvEje7_ogZBMIu68C6Jy46bvd8nXP-831u4dTeWYGe81M8FMPybWlh5z6Ix6yZev5qCvjniCIehqR80jPLE9CGjpPc/s72-c/google_plus.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-4151350883126211092</id><published>2013-07-03T13:16:00.003-07:00</published><updated>2013-07-08T10:33:36.683-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Admob"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="comerciales"/><category scheme="http://www.blogger.com/atom/ns#" term="dinero"/><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="IDE"/><category scheme="http://www.blogger.com/atom/ns#" term="monetizar"/><category scheme="http://www.blogger.com/atom/ns#" term="publicidad"/><category scheme="http://www.blogger.com/atom/ns#" term="Tapcontext"/><title type='text'>Ejemplo de Comerciales</title><content type='html'>Hola que tal, un saludo a todos los lectores. Una disculpa por estar ausente durante bastante tiempo, varias cosas han pasado que me han impedido dedicarle un espacio al blog. Una de ellas es que aun me estoy adaptando a Android Studio (el nuevo IDE para Android que esta basado en IntelliJ). En esta ocasión les quiero compartir un pequeño ejemplo de como monetizar una aplicación utilizando un framework llamado TapContext. En la actualidad existen varias alternativas de monetizar una aplicación para Android, ademas de AddMob el framework por defecto de Google, un developer puede añadir el la librería de su preferencia para desplegar comerciales y comenzar a ganar dinero (a eso me refiero con monetizar).&lt;br /&gt;
&lt;br /&gt;
Escogí la librería de TapContext por que es muy sencillo de utilizar y configurar; aun cuando no te da mucha libertad en la configuración; es un buen punto de partida para comenzar a trabajar con comerciales. Lo primero que debemos de hacer es registrar una cuenta en&amp;nbsp;&lt;a href=&quot;https://www.tapcontext.com/&quot;&gt;https://www.tapcontext.com/&lt;/a&gt;&amp;nbsp;y&amp;nbsp;descargar la librería del SDK. Una vez que tengamos la descarga lo único que debemos de hacer es colocar el jar en la carpeta &lt;b&gt;lib&lt;/b&gt; de nuestro proyecto y el archivo tapcontext_notification_layout.xml bajo &lt;b&gt;src/main/res/layout&lt;/b&gt;. Una vez que realicemos esto es necesario hacer los vínculos y configuraciones necesarias para llamar comerciales en nuestro código.&lt;br /&gt;
&lt;br /&gt;
El primer vinculo es en realidad para que podamos comenzar a utilizar la librería sin que Android Studio nos muestre errores en el código; lo que tenemos que hacer es agregar la librería al classpath de gradle (recuerden que el nuevo sistema de compilación y construcción de Android esta basado en Gradle). Para esto editamos el archivo build.gradle dentro de nuestra carpeta del proyecto y agregamos la siguiente linea dentro del elemento &lt;b&gt;dependencies&lt;/b&gt; &quot;&lt;i&gt;compile files(&#39;libs/TapContext_2.1.jar&#39;)&lt;/i&gt;&quot;. El resultado final de este elemento se debería de ver algo similar a:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;dependencies {&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; compile files(&#39;libs/android-support-v4.jar&#39;)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; compile files(&#39;libs/TapContext_2.1.jar&#39;)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Una vez que hemos corregido nuestras dependencias podemos empezar a configurar nuestro contexto para comerciales. Tenemos que agregar las siguientes lineas a nuestro archivo manifest (AndroidManifest.xml).&lt;br /&gt;
&lt;br /&gt;
Dentro de el nodo Application agregamos:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;&lt;meta-data android:name=&quot;com.tapcontext.DEVELOPERKEY&quot; android:value=&quot;***key***&quot;&gt;&lt;/meta-data&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;meta-data android:name=&quot;com.tapcontext.DEVELOPERKEY&quot; android:value=&quot;***key***&quot;&gt;&lt;/meta-data&gt;&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;&lt;activity android:configchanges=&quot;orientation|keyboardHidden&quot; android:exported=&quot;false&quot; android:name=&quot;com.tapcontext.TapContextActivity&quot; android:theme=&quot;@android:style/Theme.Translucent&quot; nbsp=&quot;&quot;&gt;&lt;/activity&gt;&lt;/i&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;&lt;service android:name=&quot;com.tapcontext.TapContextService&quot;&gt;&lt;/service&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Solo quiero aclarar que la parte que dice &lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;***key***&lt;/span&gt;&lt;/i&gt;&amp;nbsp;tiene que ser reemplazada por la clave que obtuvieron cuando se registraron para el servicio. Esta clave estará disponible en su perfil. Lo que agregamos solo fue la actividad que sera lanzada cuando se desplieguen los comerciales y un servicio que estará escuchando para mantener los comerciales y las estadísticas.&lt;br /&gt;
&lt;br /&gt;
Solo con estas configuraciones ya podemos iniciar a mostrar comerciales en nuestro código. Como las imágenes son un poco grandes yo opino que la mejor manera de mostrarlos es cuando nuestra aplicación inicie (o cuando algún evento importante termine), para eso agregamos el siguiente código en nuestra actividad.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;@Override&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; protected void onStart() {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TapContextSDK adsContext = new TapContextSDK(getApplicationContext());&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adsContext.initialize();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adsContext.showAd();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super.onStart();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Listo solo con este código podremos crear una aplicación que despliegue comerciales al iniciar. TapContext es solo uno de los muchos frameworks par desplegar comerciales que existen. En mi opinión no es el mejor pero si uno de los mas sencillos de usar, cuenta con un dashboard decente para revisar tus publicaciones, avance de ganancias, etc. Ademas de que su soporte a usuarios es bueno. Abajo les dejo pantallas de como se ven los comerciales dentro de la aplicación y como siempre el código fuente esta disponible en mi &lt;a href=&quot;https://github.com/ti3r/adexampleproject&quot;&gt;GitHub&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Saludos y gracias por leer.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEouhaUt1FN2L2yCyPysModZ9wsaRTdeTFIfFbD7VB0nam_m1j8g5e0r-JEot7_jqYrajrKE-vJ27niysCSiMtmYlCN6hLL91n3FE8k4BilekTeyw4svKCWEcssxw2NI2CSAyChepx16E/s1600/Screenshot_2013-07-08-12-05-09.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEouhaUt1FN2L2yCyPysModZ9wsaRTdeTFIfFbD7VB0nam_m1j8g5e0r-JEot7_jqYrajrKE-vJ27niysCSiMtmYlCN6hLL91n3FE8k4BilekTeyw4svKCWEcssxw2NI2CSAyChepx16E/s320/Screenshot_2013-07-08-12-05-09.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKzPuorbgIHjVrlnujuEv49OqINotZFIy5E1mXBpQ1gRBeplU9Z_9igZNM2JbmPi12VkaREJDspoxsTj8DNGHCTAJ5ug4XspKxV1BQGUKOPZTYTd9z4KMh7g8JPlZDc9L-hC19AECzLcg/s1600/Screenshot_2013-07-08-12-06-02.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKzPuorbgIHjVrlnujuEv49OqINotZFIy5E1mXBpQ1gRBeplU9Z_9igZNM2JbmPi12VkaREJDspoxsTj8DNGHCTAJ5ug4XspKxV1BQGUKOPZTYTd9z4KMh7g8JPlZDc9L-hC19AECzLcg/s320/Screenshot_2013-07-08-12-06-02.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBEb0QuYhOVvfuHzCe2CgkTt80LIjfBQ6rcvEF9BGoyQ80OxZEBhaq4PaQPEn4359o02caWPnHJ-7KAunvov-39ypo3t7H5hFmWly2NHfHk3nlzJt-V4tWTCoavtcLa79Mjr-1KTRgkrE/s1600/Screenshot_2013-07-08-12-20-04.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBEb0QuYhOVvfuHzCe2CgkTt80LIjfBQ6rcvEF9BGoyQ80OxZEBhaq4PaQPEn4359o02caWPnHJ-7KAunvov-39ypo3t7H5hFmWly2NHfHk3nlzJt-V4tWTCoavtcLa79Mjr-1KTRgkrE/s320/Screenshot_2013-07-08-12-20-04.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO3RvILBcgQgbDwWzCwvGBrPVdW1ZfUeG5aKMut1gCoQTG7XtlqpSNIfr37ZazwlXnFQBMwX6WgCrdhwN9x8qhN9GSYfj2t22ZS5QfoedRP5st_84EUb322gAqEWWQ9_qU2s5PMG6MY5M/s1600/Screenshot_2013-07-08-12-20-08.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO3RvILBcgQgbDwWzCwvGBrPVdW1ZfUeG5aKMut1gCoQTG7XtlqpSNIfr37ZazwlXnFQBMwX6WgCrdhwN9x8qhN9GSYfj2t22ZS5QfoedRP5st_84EUb322gAqEWWQ9_qU2s5PMG6MY5M/s320/Screenshot_2013-07-08-12-20-08.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/4151350883126211092/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/07/ejemplo-de-comerciales.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4151350883126211092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4151350883126211092'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/07/ejemplo-de-comerciales.html' title='Ejemplo de Comerciales'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEouhaUt1FN2L2yCyPysModZ9wsaRTdeTFIfFbD7VB0nam_m1j8g5e0r-JEot7_jqYrajrKE-vJ27niysCSiMtmYlCN6hLL91n3FE8k4BilekTeyw4svKCWEcssxw2NI2CSAyChepx16E/s72-c/Screenshot_2013-07-08-12-05-09.png" height="72" width="72"/><thr:total>1</thr:total><georss:featurename>Minneapolis, MN, USA</georss:featurename><georss:point>44.983334 -93.266669999999976</georss:point><georss:box>44.8035955 -93.589393499999971 45.1630725 -92.943946499999981</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-2369129594946347806</id><published>2013-04-26T16:00:00.000-07:00</published><updated>2013-04-29T09:16:19.230-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android 4.0"/><category scheme="http://www.blogger.com/atom/ns#" term="Android ICS"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Jellybean"/><category scheme="http://www.blogger.com/atom/ns#" term="Animacion"/><category scheme="http://www.blogger.com/atom/ns#" term="Fragment"/><category scheme="http://www.blogger.com/atom/ns#" term="Fragmento"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="Ice-scream sandwich"/><category scheme="http://www.blogger.com/atom/ns#" term="LayoutInflater"/><category scheme="http://www.blogger.com/atom/ns#" term="onCreateViev"/><category scheme="http://www.blogger.com/atom/ns#" term="onDestroyView"/><category scheme="http://www.blogger.com/atom/ns#" term="OnPageChangeListener"/><category scheme="http://www.blogger.com/atom/ns#" term="PageTranformer"/><category scheme="http://www.blogger.com/atom/ns#" term="ViewPager"/><title type='text'>Ejemplo con View Pager super Extendido (Animación en Pager)</title><content type='html'>Hola que tal, en esta&amp;nbsp;ocasión&amp;nbsp;les quiero compartir otro ejemplo con ViewPager. Voy a extender un poco mas los ejemplos mostrados anteriormente en otros posts para actualizar y explicar un poco mas acerca del funcionamiento del ViewPager y los Fragmentos. Gracias a todos aquellos que escribieron comentarios y preguntas por tomarse el tiempo de leer el blog y practicar con estos sencillos ejemplos.&lt;br /&gt;
&lt;br /&gt;
Aun y cuando los Fragmentos fueron introducidos a Android desde API 11 (Android 3.0 HoneyComb), han evolucionado y cambiado para hacerse mas&amp;nbsp;dinámicos&amp;nbsp;y permitir mucha mas flexibilidad en la&amp;nbsp;interacción&amp;nbsp;con el usuario. Un &lt;a href=&quot;http://developer.android.com/guide/components/fragments.html&quot;&gt;fragmento &lt;/a&gt;es&amp;nbsp;básicamente&amp;nbsp;una mini&amp;nbsp;ejecución&amp;nbsp; que toma parte de la pantalla de nuestra actividad y cuenta con su propio ciclo de vida, eventos, etc. Inicio con una&amp;nbsp;pequeña&amp;nbsp;explicación&amp;nbsp;sobre fragmentos por que si recuerdan en &lt;a href=&quot;http://blogti3r.blogspot.com/2011/09/ejemplo-con-viewpager-en-android.html&quot;&gt;ejemplos&lt;/a&gt; &lt;a href=&quot;http://blogti3r.blogspot.com/2013/03/ejemplo-con-viewpager-extendido.html&quot;&gt;anteriores&lt;/a&gt;&amp;nbsp;comenzamos creando un fragmento el cual sera un poco distinto para cada una de las paginas de nuestro ViewPager. El&amp;nbsp;código&amp;nbsp;que prepare es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;public class PlainColorFragment extends Fragment {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; private static final String PLAIN_COLOR_FRAG_ARG_COLOR = &quot;color&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; int color = Color.GREEN;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; View view = null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; AnalogClock clock = null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; public static PlainColorFragment newInstance(int color) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; PlainColorFragment frag = new PlainColorFragment();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; Bundle frag1Args = new Bundle();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; frag1Args.putInt(PLAIN_COLOR_FRAG_ARG_COLOR, color);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; frag.setArguments(frag1Args);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; frag.setRetainInstance(true);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; return frag;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; @Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; this.color = (getArguments() != null) ? getArguments().getInt(PLAIN_COLOR_FRAG_ARG_COLOR) : Color.GRAY;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; @Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; view = inflater.inflate(R.layout.color_layout, container, false);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; clock = (AnalogClock) view.findViewById(R.id.analogClock1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; clock.setOnClickListener(new OnClickListener() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; public void onClick(View v) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vanishClock();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; view.setBackgroundColor(color);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; return view;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; public void vanishClock() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; if (clock.getAlpha() &amp;lt; 0.4f)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; clock.setAlpha(1.0f);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; clock.setAlpha(clock.getAlpha() - .2f);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A partir de Android 4.0 y la&amp;nbsp;revisión&amp;nbsp;de la&amp;nbsp;librería&amp;nbsp;de soporte 12. Es necesario que nuestros fragmentos tengan un constructor por defecto (sin&amp;nbsp;parámetros) para que puedan ser destruidos y reconstruidos por el FragmentManager.&amp;nbsp;Por lo tanto en nuestro&amp;nbsp;código&amp;nbsp;creamos un&amp;nbsp;método&amp;nbsp;estático (newInstance) que nos ayudara a crear instancias de nuestro fragmento basado en el color que pasemos como&amp;nbsp;parámetro. Y ya que cuando un fragmento es creado su&amp;nbsp;método&amp;nbsp;onCreate es ejecutado podremos retraer el color de nuestro fragmento por el&amp;nbsp;método&amp;nbsp;getArguments(). Pueden notar que en nuestro&amp;nbsp;método&amp;nbsp;newInstance asignamos estos&amp;nbsp;parámetros&amp;nbsp;a nuestra nueva instancia; el FragmentManager conservara estos&amp;nbsp;parámetros&amp;nbsp;por nosotros y si es necesario destruir nuestro fragmento por baja memoria o&amp;nbsp;algún&amp;nbsp;otro factor, los&amp;nbsp;parámetros&amp;nbsp;serán&amp;nbsp;guardados para estar disponibles cuando nuestro fragmento se reconstruya. En el&amp;nbsp;código&amp;nbsp;también&amp;nbsp;se puede observar que en el&amp;nbsp;método&amp;nbsp;onCreateView; ademas de asignar nuestro color de fondo; inflamos un layout contenido en una&amp;nbsp;definición&amp;nbsp;XML el cual le&amp;nbsp;dará&amp;nbsp;cuerpo a nuestro fragmento. Es importante notar que el metodo onCreateView es ejecutado no solo una vez si no varias veces, en ocasiones es necesario por cuestiones de recurso destruir vistas y reconstruirlas mas tarde cuando estos recursos esten disponibles; pero eso lo explicare mas delante. Ya con nuestra vista extendida, lo que hacemos es asignar nuestro identificador clock al componente reloj que se encuentra dentro de nuestro xml y asignarle un&amp;nbsp;pequeño&amp;nbsp;método&amp;nbsp;(vanishClock) a su evento click. Esto ira desvaneciendo el reloj por cada&amp;nbsp;clic&amp;nbsp;que el usuario haga sobre el.&amp;nbsp;Aquí&amp;nbsp;abajo les dejo la definicion XML de la vista que inflamos para nuestro fragmento.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe2Ab_sCU4XSDxipyU-ABPef8AbngWXvoV4KvhPnOXIkXvBi1I2ipDeAMvxBpuxistJl7VecQVCR_KjwVv0H6lk3QDS8IFUw1zA8u7rbNVIZQ1FicejrhNWh5SX_fXxKToBS1S-AiyosM/s1600/fragment_layout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe2Ab_sCU4XSDxipyU-ABPef8AbngWXvoV4KvhPnOXIkXvBi1I2ipDeAMvxBpuxistJl7VecQVCR_KjwVv0H6lk3QDS8IFUw1zA8u7rbNVIZQ1FicejrhNWh5SX_fXxKToBS1S-AiyosM/s400/fragment_layout.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Muy bien ahora iremos con nuestra actividad principal, el codigo se ve como el que sigue:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihpmqRJdSI8c4Ul64Kcf90lhM8HeusBnvpe28LkCPX84BsJsBvZO_YihLGBH5fo-ZxABzpFqdQzg9x2KezAjh-3D81oCYYSWozjDf1g3lKjgc3j_ER7T65ikIjDAJ4ztPnygdoyz1nYrk/s1600/MainActivity.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihpmqRJdSI8c4Ul64Kcf90lhM8HeusBnvpe28LkCPX84BsJsBvZO_YihLGBH5fo-ZxABzpFqdQzg9x2KezAjh-3D81oCYYSWozjDf1g3lKjgc3j_ER7T65ikIjDAJ4ztPnygdoyz1nYrk/s400/MainActivity.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Lo que podemos ver&amp;nbsp;aquí&amp;nbsp;es que tenemos dos propiedades, nuestro ViewPager (pager) y nuestro PageChangeListener (pageChangeListener). View pager es el encargado de cambiar de pagina cada vez que el usuario deslice el dedo en&amp;nbsp;nuestra&amp;nbsp;actividad y la clase PageChangeListener, la utilizaremos para algunas operaciones auxiliares las cuales explicare un poco mas adelante. Lo importante viene en el&amp;nbsp;método&amp;nbsp;onCreate de&amp;nbsp;nuestra&amp;nbsp;actividad; primero establecemos nuestra vista (R.layout.main), la cual contiene en su&amp;nbsp;definición&amp;nbsp;un ViewPager con el id pager. La definicion de este contenido lo pondre un poco mas abajo. Luego creamos un objeto MyFragmentPagerAdapter (una clase definida por nosotros) y agregamos 3 fragmentos de creamos manualmente&amp;nbsp;también. Noten que para nuestros fragmentos mandamos llamar al&amp;nbsp;método&amp;nbsp;estático&amp;nbsp;que preparamos (newInstance) con 3 distintos colores como&amp;nbsp;parámetros. Luego asignamos a nuestro ViewPager el pageChangeListener, el adaptador que acabamos de preparar y un nuevo transformador que&amp;nbsp;también&amp;nbsp;explicare un poco mas tarde. Y eso es todo por el momento para nuestra actividad principal. Ahora les dejo el layout que asignamos para esta actividad&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzipcJunl8MKVpPYAq1rI41ljZjazlgtAu5ljGFyUik5FKa1d1v2tM2APkHeitKobhFwYhUuJa6Qo0vzPky57bZBKPIxKzsk38MoqJExeelunrm7Ek8bt-u-8ELRBdYQv4S7hv_0NWd4/s1600/main_layout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzipcJunl8MKVpPYAq1rI41ljZjazlgtAu5ljGFyUik5FKa1d1v2tM2APkHeitKobhFwYhUuJa6Qo0vzPky57bZBKPIxKzsk38MoqJExeelunrm7Ek8bt-u-8ELRBdYQv4S7hv_0NWd4/s400/main_layout.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Como pueden observar no es algo muy complejo solo un Text View para mantener un titulo en nuestra actividad en todo momento y nuestra clase importante, nuestro ViewPager. Pero como vimos en el&amp;nbsp;código&amp;nbsp;nuestro ViewPager solo es asignado con varios recursos, en realidad el ViewPager es el conector entre nuestros distintas clases las cuales en realidad son las que hacen el trabajo pesado. Arriba pudimos ver que tenemos una clase llamada MyFragmentPageAdapter y a la cual se agregamos nuestros 3 fragmentos que creamos con el&amp;nbsp;método&amp;nbsp;addFragment; por lo tanto vamos a revisar esta clase.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyMb4syT_O1XRKbOe8A4ktO276PEBmJtNKbS0WSq4gVZA8-b___7o7uhzrMPQt-SG73XMIKRgw21dQxSydJcUFa2tdxxVRnH9JAqf5Eg932JtzIbgU4bMNA6_BPZwG6MJy_FNyGyEGrkY/s1600/MyFragmentPageAdapter.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyMb4syT_O1XRKbOe8A4ktO276PEBmJtNKbS0WSq4gVZA8-b___7o7uhzrMPQt-SG73XMIKRgw21dQxSydJcUFa2tdxxVRnH9JAqf5Eg932JtzIbgU4bMNA6_BPZwG6MJy_FNyGyEGrkY/s400/MyFragmentPageAdapter.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Esta clase extiende de la clase abstracta FragmentPageAdapter, la cual esta cargo de manejar los fragmentos que&amp;nbsp;estarán&amp;nbsp;disponibles para nuestro ViewPager. Cada vez que el usuario cambie de pagina deslizando el dedo el ViewPager solicitara al adaptador que le regrese el fragmento correspondiente a la pagina que el usuario esta cambiando hasta que lleguemos a nuestro getCount(), cuando ya no haya mas paginas disponibles el ViewPager no&amp;nbsp;permitirá&amp;nbsp;al usuario seguir cambiando de pagina hacia adelante. Como ven la implementacion es sencilla. Solo tenemos una lista de fragmentos y cada vez que vayamos agregando un nuevo fragmento al adaptador este se agregara a nuestra lista. Cuando el Pager solicite una pagina en especifico con el&amp;nbsp;método&amp;nbsp;getItem, nosotros regresaremos el fragmento correspondiente de la lista y el getCount sera igual al&amp;nbsp;tamaño&amp;nbsp;de nuestra lista.&lt;br /&gt;
&lt;br /&gt;
Luego tenemos nuestro PageChangeListener&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9D2LIC_i4jMFfX171HOCDewXjVrCrUrMVmMBpYAHjBIeWIJUR78Faq5zR2ZDpOPh0M-RWWu0cxYKV5jizy-CoK-JzIAylOGnULboA2o8wtIj5GIBkyyhoArXZj2IY6ddYs6XBy3Exoyk/s1600/PageChangeListener.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9D2LIC_i4jMFfX171HOCDewXjVrCrUrMVmMBpYAHjBIeWIJUR78Faq5zR2ZDpOPh0M-RWWu0cxYKV5jizy-CoK-JzIAylOGnULboA2o8wtIj5GIBkyyhoArXZj2IY6ddYs6XBy3Exoyk/s400/PageChangeListener.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Esta clase es muy sencilla, cuando un evento de cambio de pagina suceda en nuestro ViewPager, esta clase sera llamada y en la cual podemos interceptar&amp;nbsp;información&amp;nbsp;valiosa. En nuestro caso solo tenemos una propiedad currentIndex, la cual sera asignada cada vez que una pagina sea seleccionada (onPageSelected) y la cual expondremos por medio de un&amp;nbsp;método&amp;nbsp;publico getCurrentIndex. La finalidad de esta clase la&amp;nbsp;podrán&amp;nbsp;ver mas delante. Lo ultimo que asignamos a nuestro ViewPager es un nuevo objeto PageTransformer con el&amp;nbsp;método&amp;nbsp;setPageTransformer. Esta clase lo que&amp;nbsp;hará&amp;nbsp;sera dar una buena&amp;nbsp;animación&amp;nbsp;al cambio de pagina. Una nota personal&amp;nbsp;aquí&amp;nbsp;es que yo no soy muy bueno para&amp;nbsp;diseñar&amp;nbsp;animaciones y esta clase la tome de uno de los ejemplos de Google solo la modifique un poco&amp;nbsp;así&amp;nbsp;que no&amp;nbsp;pondré&amp;nbsp;el&amp;nbsp;código, este lo pueden obtener en mi github junto con el&amp;nbsp;código&amp;nbsp;fuente.&amp;nbsp;&amp;nbsp;Así&amp;nbsp;que con esto ya tenemos un muy buen ejemplo casi igual al que&amp;nbsp;teníamos&amp;nbsp;anteriormente, pueden ejecutar la&amp;nbsp;aplicación&amp;nbsp;y&amp;nbsp;podrán&amp;nbsp;ver como al deslizar de pagina los distintos fragmentos de colores van apareciendo y al dar clic en el reloj este se va desvaneciendo poco a poco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTVZN38ETep3Lz0P21zbb2oDcNrwsyN-upvtQyZnZars8KYeD7J05eGqvMh33ScK1mx8NVDWFdnOOetKnx3jOKiznWFRFXr8eHKw4IYb89ZDP95VlZ8qAtZUMkzlvPDmEWmDMtWrjWB2E/s1600/device-2013-04-29-101536.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTVZN38ETep3Lz0P21zbb2oDcNrwsyN-upvtQyZnZars8KYeD7J05eGqvMh33ScK1mx8NVDWFdnOOetKnx3jOKiznWFRFXr8eHKw4IYb89ZDP95VlZ8qAtZUMkzlvPDmEWmDMtWrjWB2E/s320/device-2013-04-29-101536.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8MnRs2M58Btmm-KZxiSmlgC1wbLZsm1ZhP1q_nHY5a_BXZcq301Qc-9UKl1A9XNxjZWSsy7-Nk8wKNUG7EROkNqz1vMb-FFD2h072N0dXmVvgbDTo5kRuyofum5h5FnQs3yJ87We4kI/s1600/device-2013-04-29-101622.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8MnRs2M58Btmm-KZxiSmlgC1wbLZsm1ZhP1q_nHY5a_BXZcq301Qc-9UKl1A9XNxjZWSsy7-Nk8wKNUG7EROkNqz1vMb-FFD2h072N0dXmVvgbDTo5kRuyofum5h5FnQs3yJ87We4kI/s320/device-2013-04-29-101622.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pero les&amp;nbsp;daré&amp;nbsp;una pista, ya&amp;nbsp;habíamos&amp;nbsp;dicho que el&amp;nbsp;método&amp;nbsp;onCreateView de los fragmentos es llamado en varias ocasiones.&amp;nbsp;Así&amp;nbsp;que que es lo que tal vez ya&amp;nbsp;habrán&amp;nbsp;notado que si desvanecen el reloj hasta cierto punto y cambian de paginas varias veces, el reloj que anteriormente estaba desvanecido ha vuelto a la normalidad. Esto sucede ya que cuando cambiamos de pagina el sistema reclama la memoria de las vistas que&amp;nbsp;están&amp;nbsp;ocultas y estas son destruidas. El cuando esto&amp;nbsp;sucederá&amp;nbsp;depende del sistema, de los recursos disponibles, etc., tal vez en ciertos dispositivos poderosos como el S4 esto no pase, pero es mejor estar precavidos y dar a nuestros usuarios la mejor experiencia.&amp;nbsp;Así&amp;nbsp;que lo que haremos sera sobre escribir el&amp;nbsp;método&amp;nbsp;onViewDestroyed para salvar el estado de nuestro reloj y&amp;nbsp;así&amp;nbsp;poder re-establecerlo al momento de que esta vista sea creada de nuevo. Lo que haremos sera agregar un poco de&amp;nbsp;código&amp;nbsp;a nuestro fragmento como el que sigue.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_T6MxA2BBHlWLY_qP9RHnCefVA9vvQgsYdfpc9FkjBE2E66J1k8b2J8wC2sOrxNHcq1Y8684tOeMkDh10n1WlsttlQkZVfQCLtgUr-yP9SWNoLkQXJvANJWFALavKmGy50tu74F3ff_k/s1600/saving_state.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_T6MxA2BBHlWLY_qP9RHnCefVA9vvQgsYdfpc9FkjBE2E66J1k8b2J8wC2sOrxNHcq1Y8684tOeMkDh10n1WlsttlQkZVfQCLtgUr-yP9SWNoLkQXJvANJWFALavKmGy50tu74F3ff_k/s400/saving_state.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Lo que hicimos es crear dos propiedades un Bundle (viewRecreateState) que sera donde guardaremos nuestro estado. Recuerden que lo que es destruido es nuestra vista pero las propiedades del fragmento se quedan intactas hasta que el fragmento sea destruido&amp;nbsp;también&amp;nbsp;si es que esto ocurre. Entonces crearemos una nombre&amp;nbsp;estático&amp;nbsp;el cual utilizaremos como indice en nuestro bundle y el&amp;nbsp;método&amp;nbsp;restoreClockState que sera en cargado de establecer el alpha del reloj si es que tenemos este valor guardado en nuestras preferencias. Creo que el&amp;nbsp;método&amp;nbsp;onDestroyView es muy&amp;nbsp;fácil&amp;nbsp;de entender, solo guardaremos el alpha de nuestro reloj antes de que la vista sea destruida. Por lo tanto lo&amp;nbsp;único&amp;nbsp;que tenemos que hacer ahora es llamar a nuestro&amp;nbsp;método&amp;nbsp;restoreClockState dentro de onCreateView para que si la vista fue destruida anteriormente esta vuelva al estado anterior cuando es recreada. Ahora nuestro&amp;nbsp;método&amp;nbsp;se vera&amp;nbsp;así:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr6vpHy2b0Ht7ktllPpHJJBroekE_fHoRbOKmSVBZUFdPGcUShZE0BokEvFDJAS86I5j0pOx_l8hxsvDqHz8dcEXqdpT7uhLpHMaYjkKssPDu2PI6R-S6DrdV1OjV5SKshs04qKuVyYyI/s1600/onCreateView2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr6vpHy2b0Ht7ktllPpHJJBroekE_fHoRbOKmSVBZUFdPGcUShZE0BokEvFDJAS86I5j0pOx_l8hxsvDqHz8dcEXqdpT7uhLpHMaYjkKssPDu2PI6R-S6DrdV1OjV5SKshs04qKuVyYyI/s400/onCreateView2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y ya para terminar agregaremos los&amp;nbsp;métodos&amp;nbsp;necesarios para seguir el mismo funcionamiento de el articulo anterior. Esto es crear un menu para lanzar una&amp;nbsp;animación en la pagina actual cuando el usuario haga clic en el item. Esto muestra de manera sencilla como interactuar con los fragmentos desde un agente externo. Recuerdan que&amp;nbsp;teníamos&amp;nbsp;un listener (PageChangeListener) en nuestro pager que guardaba la pagina actual? Y agregaremos a cada fragmento tiene un&amp;nbsp;método&amp;nbsp;publico startAnimationClock que animara el reloj y el cual sera llamado para animar el reloj interno. El codigo se ve asi.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdsJ-GlFrvNah2Ev-rghoP0Xdc3rLMIX4il_lD4sX6PK74BADwp1blMRYvQTDOaRCSG2wXSyXbI6k1e492lPjC3r53Ol19MunpckeTTamAESE2MjBksElr1Xza-Dew6VYnUDyELI-W32c/s1600/start_animation_clock.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;70&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdsJ-GlFrvNah2Ev-rghoP0Xdc3rLMIX4il_lD4sX6PK74BADwp1blMRYvQTDOaRCSG2wXSyXbI6k1e492lPjC3r53Ol19MunpckeTTamAESE2MjBksElr1Xza-Dew6VYnUDyELI-W32c/s400/start_animation_clock.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Y en nuestra actividad principal agregamos:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz_a28F0kF9JN0SIiUvKAOSphBVAh0VyCngXedroXfSzmnM0SbNvW4osDZ6tmIDxruJBlmrRcRQsgf3wb9KFur0ixd1dSr2KK3mEKn2DPWI0ty6dbQzYslTiLxuv6qYjSAwnqkX4V1zpM/s1600/start_animation_methods.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz_a28F0kF9JN0SIiUvKAOSphBVAh0VyCngXedroXfSzmnM0SbNvW4osDZ6tmIDxruJBlmrRcRQsgf3wb9KFur0ixd1dSr2KK3mEKn2DPWI0ty6dbQzYslTiLxuv6qYjSAwnqkX4V1zpM/s400/start_animation_methods.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Así que al final tendremos nuestra&amp;nbsp;aplicación&amp;nbsp;terminada y sin importar si cambiamos de pagina mil veces, mientras nuestro fragmento este en el sistema nuestra&amp;nbsp;aplicación&amp;nbsp;siempre presentaran una interfaz consistente a nuestros usuarios. Bueno como siempre, el&amp;nbsp;código&amp;nbsp;completo de este ejemplo lo pueden encontrar en mi perfil de github en esta&amp;nbsp;&lt;a href=&quot;https://github.com/ti3r/view_pager_test/tree/ejemplo_con_viewpager_super_extendido&quot;&gt;tag&amp;nbsp;&lt;/a&gt;del repositorio. Y ya saben si tienen alguna duda, sugerencia y/o comentario no duden en comentar o escribir un correo. Una disculpa por el post tan largo pero trate de explicarme lo mejor posible.&lt;br /&gt;
Saludos a todos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRVYUsQCWC09toJyx-JV9b1sQA3XiZu_ETG-cYbrhNElfgBW-ep6rKZVl5Mu8kGpeJ6X3goWCQSJEtxQHasexl6Bn7B6wSqBWLl1UhrBAL-vtTNRxp6bm19CjRlWgiTypewAQTHON3G44/s1600/device-2013-04-29-104851.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRVYUsQCWC09toJyx-JV9b1sQA3XiZu_ETG-cYbrhNElfgBW-ep6rKZVl5Mu8kGpeJ6X3goWCQSJEtxQHasexl6Bn7B6wSqBWLl1UhrBAL-vtTNRxp6bm19CjRlWgiTypewAQTHON3G44/s320/device-2013-04-29-104851.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8MnRs2M58Btmm-KZxiSmlgC1wbLZsm1ZhP1q_nHY5a_BXZcq301Qc-9UKl1A9XNxjZWSsy7-Nk8wKNUG7EROkNqz1vMb-FFD2h072N0dXmVvgbDTo5kRuyofum5h5FnQs3yJ87We4kI/s1600/device-2013-04-29-101622.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8MnRs2M58Btmm-KZxiSmlgC1wbLZsm1ZhP1q_nHY5a_BXZcq301Qc-9UKl1A9XNxjZWSsy7-Nk8wKNUG7EROkNqz1vMb-FFD2h072N0dXmVvgbDTo5kRuyofum5h5FnQs3yJ87We4kI/s320/device-2013-04-29-101622.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTSXK0y9sGn5Msd3BiI1JpNYH2Nb4ziYazxh0VPDyjOCPONHEDTNN70HW94zFllFrjLy3_yjC2BviETG02He0fpDPNEX53aruv0xVguXwOK0U5jNnAl2MqN0SJX4upd1yxVpaPmNE144M/s1600/device-2013-04-29-104859.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTSXK0y9sGn5Msd3BiI1JpNYH2Nb4ziYazxh0VPDyjOCPONHEDTNN70HW94zFllFrjLy3_yjC2BviETG02He0fpDPNEX53aruv0xVguXwOK0U5jNnAl2MqN0SJX4upd1yxVpaPmNE144M/s320/device-2013-04-29-104859.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/2369129594946347806/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/04/ejemplo-con-view-pager-super-extendido.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/2369129594946347806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/2369129594946347806'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/04/ejemplo-con-view-pager-super-extendido.html' title='Ejemplo con View Pager super Extendido (Animación en Pager)'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe2Ab_sCU4XSDxipyU-ABPef8AbngWXvoV4KvhPnOXIkXvBi1I2ipDeAMvxBpuxistJl7VecQVCR_KjwVv0H6lk3QDS8IFUw1zA8u7rbNVIZQ1FicejrhNWh5SX_fXxKToBS1S-AiyosM/s72-c/fragment_layout.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Richfield, MN, USA</georss:featurename><georss:point>44.8832982 -93.283002099999976</georss:point><georss:box>44.8382907 -93.363683099999975 44.928305699999996 -93.202321099999978</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-8156690486965262089</id><published>2013-04-10T21:14:00.001-07:00</published><updated>2013-04-25T19:24:43.258-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android 3.0. Chet Haase"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Dev Bites. LayoutTransition. LinearLayout."/><category scheme="http://www.blogger.com/atom/ns#" term="Animacion"/><category scheme="http://www.blogger.com/atom/ns#" term="Animation"/><category scheme="http://www.blogger.com/atom/ns#" term="layout"/><category scheme="http://www.blogger.com/atom/ns#" term="Transicion"/><title type='text'>Ejemplo con Layout Animation Y Android</title><content type='html'>Hola que tal, en esta&amp;nbsp;ocasión&amp;nbsp;quiero compartir un&amp;nbsp;pequeño&amp;nbsp;ejemplo sobre como Animar&amp;nbsp;fácilmente&amp;nbsp;vistas en un layout usando Android. Este&amp;nbsp;pequeño&amp;nbsp;ejemplo esta basado en el articulo que publico Chet Haase en &lt;a href=&quot;http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=55wLsaWpQ4g&quot;&gt;Androide Dev Bites&lt;/a&gt;. En realidad el ejemplo es muy sencillo y tratare de explicarlo lo mejor posible extendiendo un poco mas para hacerlo un poco mas atractivo. Con esto espero poder hacer una serie de&amp;nbsp;artículos&amp;nbsp;acerca de animaciones en Android.&lt;br /&gt;
&lt;br /&gt;
Con la entrada de la android API versión&amp;nbsp;11 (Android 3.0) la clase LayoutTransition nos permite ejecutar animaciones cuando haya algun cambio en el layout de un contenedor. Como puede ser un LinearLayout, RelativeLayout, etc.&lt;br /&gt;
&lt;br /&gt;
Muy bien vayamos al ejemplo. Lo primero que tenemos es un simple layout con dos botones y un contenedor. El contenido de nuestro main_layout xml es como el que sigue:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOxAVAM4pvHHWIvcRDAXPQHM6UFQ4EVtMbPJ19enp8sKHGvQPQFI9YCDjITKiJDjkfVZleJe7Cg20Ut7drweNX3LDCQX8-oRIHf__C_FkQzugFbl1EikKegBCk3B-KGagHakCCtlNQvKo/s1600/main_layout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;292&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOxAVAM4pvHHWIvcRDAXPQHM6UFQ4EVtMbPJ19enp8sKHGvQPQFI9YCDjITKiJDjkfVZleJe7Cg20Ut7drweNX3LDCQX8-oRIHf__C_FkQzugFbl1EikKegBCk3B-KGagHakCCtlNQvKo/s640/main_layout.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Es muy simple, nuestro main layout es LinearLayout con&amp;nbsp;orientación&amp;nbsp;vertical. Luego un&amp;nbsp;botón&amp;nbsp;para agregar una vista (Add View), un&amp;nbsp;botón&amp;nbsp;para remover una vista (Remove View) y al final otro LinearLayout el cual tomara el resto de la pantalla para el&amp;nbsp;también&amp;nbsp;con&amp;nbsp;orientación&amp;nbsp;vertical. El punto interesante en este ultimo contenedor es la propiedad android:animateLayoutChanges=&quot;true&quot;; esta propiedad es la que nos&amp;nbsp;dirá que cada vez que haya un cambio en este layout estos cambios&amp;nbsp;deberán&amp;nbsp;de animarse. Por defecto solo los cambios de entrada y salida de vistas&amp;nbsp;serán&amp;nbsp;animadas pero eso lo arreglaremos mas tarde.&lt;br /&gt;
&lt;br /&gt;
Ahora si en nuestra actividad principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;public class MainActivity extends Activity {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;LinearLayout container = null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;private static LayoutParams mParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;ViewGroup.LayoutParams.WRAP_CONTENT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;protected void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;setContentView(R.layout.activity_main);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;container = (LinearLayout) findViewById(R.id.layout_container);&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void btnAddViewClicked(View view){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;Button btn = new Button(view.getContext());&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; &amp;nbsp;btn.setLayoutParams(mParams); btn.setText(&quot;Useless Button&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;container.addView(btn,0);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void btnRemoveViewClicked(View view){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if (container != null &amp;amp;&amp;amp; container.getChildCount() &amp;gt; 0){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;container.removeViewAt(&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt;(int)(Math.random() &amp;nbsp;* (container.getChildCount()))&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}else{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;Toast.makeText(view.getContext(), &quot;No views to remove&quot;, Toast.LENGTH_LONG).show();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Lo primero que haremos en onCreate sera establecer nuestro xml como el contenido y luego vamos a retraer el contenedor que definimos para almacenarlo en la variable container. Este objeto container ya tiene las animaciones establecidas. Luego los dos&amp;nbsp;métodos&amp;nbsp;para agregar y&amp;nbsp;eliminar&amp;nbsp;vistas, como lo definimos en nuestro xml cuando el&amp;nbsp;botón&amp;nbsp;Add View es presionado el metodo btnAddViewClicked se ejecuta; en este&amp;nbsp;método&amp;nbsp;lo que haremos sera crear un nuevo&amp;nbsp;botón&amp;nbsp; asignarle las propiedades y el texto correspondiente y luego agregarlo al contenedor con el&amp;nbsp;método&amp;nbsp;container.addView.&lt;br /&gt;
&lt;br /&gt;
De la misma manera el&amp;nbsp;método&amp;nbsp;btnRemoveViewClicked sera ejecutado cuando el&amp;nbsp;botón&amp;nbsp;Remove View es presionado; este&amp;nbsp;método&amp;nbsp;lo&amp;nbsp;único&amp;nbsp;que se encarga es de remover una vista del contenedor de una&amp;nbsp;posición&amp;nbsp;alternativa si el contenedor ni tiene ninguna vista asociada (esto es su childCount no es&amp;nbsp;mayor&amp;nbsp;que 4) simplemente mostramos un mensaje con Toast.&lt;br /&gt;
&lt;br /&gt;
Y eso es todo como pueden ver no tenemos&amp;nbsp;ningún&amp;nbsp;código extra sobre animaciones, efectos, etc. El sistema se encargara de hacer las animaciones&amp;nbsp;automáticamente&amp;nbsp;al momento de que se agreguen y remuevan vistas. Como pueden ver es un ejemplo muy sencillo pero nos ayudara a darle un poco mas de&amp;nbsp;presentación&amp;nbsp;a nuestras aplicaciones.&lt;br /&gt;
&lt;br /&gt;
Aquí abajo les dejo una muestra de como se comporta la&amp;nbsp;aplicación&amp;nbsp;y en un post futuro veremos como extender esta&amp;nbsp;aplicación&amp;nbsp;para hacerla mas&amp;nbsp;dinámica. Como siempre pueden obtener el &lt;a href=&quot;https://github.com/ti3r/AnimationExamples/tree/master/LayoutAnimationExample&quot;&gt;codigo fuente&lt;/a&gt; de este y otros proyectos visitando mi perfil de &lt;a href=&quot;https://github.com/ti3r&quot;&gt;github&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S estoy extrayendo el vídeo para que vean como se ve pero aun estoy probando distintas apps para screencast. En cuanto lo tenga actualizo el post. (No creo que sea de mucha ayuda si subo fotos :P). Saludos&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dy1TUS8rAT63uLjKwXQ8AVTExkrRQkJMN4lx7bfPf56AkBDOCUCjk58QBwzkjTzMW6tp31h9ku6oko-J9NU&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
Update: Aqui les dejo el video, no muy buena calidad pero pasa.</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/8156690486965262089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/04/ejemplo-con-layout-animation-y-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8156690486965262089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8156690486965262089'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/04/ejemplo-con-layout-animation-y-android.html' title='Ejemplo con Layout Animation Y Android'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOxAVAM4pvHHWIvcRDAXPQHM6UFQ4EVtMbPJ19enp8sKHGvQPQFI9YCDjITKiJDjkfVZleJe7Cg20Ut7drweNX3LDCQX8-oRIHf__C_FkQzugFbl1EikKegBCk3B-KGagHakCCtlNQvKo/s72-c/main_layout.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Richfield, MN, USA</georss:featurename><georss:point>44.8832982 -93.283002099999976</georss:point><georss:box>44.8382907 -93.363683099999975 44.928305699999996 -93.202321099999978</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-7464963953442779445</id><published>2013-03-05T09:00:00.000-08:00</published><updated>2013-03-05T09:00:18.794-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="actualizacion"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Build"/><category scheme="http://www.blogger.com/atom/ns#" term="configuraciones"/><category scheme="http://www.blogger.com/atom/ns#" term="debuggin"/><category scheme="http://www.blogger.com/atom/ns#" term="desarrollador"/><category scheme="http://www.blogger.com/atom/ns#" term="Galaxy S3"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC One X."/><category scheme="http://www.blogger.com/atom/ns#" term="jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="jelly-bean"/><category scheme="http://www.blogger.com/atom/ns#" term="Nexus 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Nexus Galaxy"/><title type='text'>Opciones de Desarrollador en Android Jellybean (4.2)</title><content type='html'>Hola que tal a todos, este es un&amp;nbsp;pequeño comentario sobre la ultima&amp;nbsp;actualización&amp;nbsp;que se&amp;nbsp;envió&amp;nbsp;a Android Jelly-Bean (4.2). Puede ser que ya lo hayan notado pero&amp;nbsp;a partir de la ultima&amp;nbsp;actualización&amp;nbsp;de Jelly Bean&amp;nbsp;&amp;nbsp;el&amp;nbsp;menú&amp;nbsp;de opciones de desarrollador no se encuentra disponible en el&amp;nbsp;menú&amp;nbsp;configuraciones. Google consolido todas las opciones de desarrollador dentro de una&amp;nbsp;sección&amp;nbsp;en el&amp;nbsp;menú&amp;nbsp;de configuraciones, la&amp;nbsp;mayoría&amp;nbsp;de las veces lo&amp;nbsp;único&amp;nbsp;que&amp;nbsp;realizábamos&amp;nbsp;en este&amp;nbsp;menú&amp;nbsp;es activar o desactivar el USB Debugging para que al conectar el cable USB el&amp;nbsp;teléfono&amp;nbsp;nos mostraba una carita de Android en la barra de notificaciones (hace mas que eso pero no quiero hacerla larga).&lt;br /&gt;
Para poder activar este&amp;nbsp;menú&amp;nbsp;de nuevo en la nueva&amp;nbsp;versión&amp;nbsp;de Android es necesario decirle al&amp;nbsp;teléfono&amp;nbsp;que su usuario es un desarrollador, hay que ir al&amp;nbsp;menú&amp;nbsp;de &lt;b&gt;Configuraciones -&amp;gt; Acerca del&amp;nbsp;Teléfono&amp;nbsp;-&amp;gt; Numero de Build&lt;/b&gt;. Hay que tocar varias veces este&amp;nbsp;ítem&amp;nbsp;después&amp;nbsp;de varias&amp;nbsp;ocasiones veremos un mensaje diciendo &quot;estas a X clicks de ser desarrollador&quot;, luego de sobrepasar este numero el menu se&amp;nbsp;hará&amp;nbsp;visible en las configuraciones donde anteriormente estaba.&lt;br /&gt;
Esta movida fue publicada por google ya que en los&amp;nbsp;teléfonos&amp;nbsp;mas comerciales como el Galaxy S3 o One X, etc el usuario&amp;nbsp;común&amp;nbsp;no quiere ver este&amp;nbsp;menú. Por lo tanto nuevos&amp;nbsp;teléfonos con Jelly Bean no desplegaran este&amp;nbsp;menú&amp;nbsp;hasta que sean activados como desarrollador. He probado esta&amp;nbsp;opción&amp;nbsp;en mi Nexus Galaxy, Galaxy S4 y HTC One X+ y en todos me ha funcionado.&amp;nbsp;Así&amp;nbsp;que si eres desarrollador y extrañas este&amp;nbsp;menú en tu dispositivo ya sabes el por que y como volver a activarlo.&lt;br /&gt;
&lt;br /&gt;
Saludos a todos </content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/7464963953442779445/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/03/opciones-de-desarrollador-en-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7464963953442779445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7464963953442779445'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/03/opciones-de-desarrollador-en-android.html' title='Opciones de Desarrollador en Android Jellybean (4.2)'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total><georss:featurename>Richfield, MN, USA</georss:featurename><georss:point>44.8832982 -93.283002099999976</georss:point><georss:box>44.8382907 -93.363683099999975 44.928305699999996 -93.202321099999978</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-849429399843458379</id><published>2013-03-04T22:30:00.000-08:00</published><updated>2013-03-04T22:30:39.604-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Activity"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="ejemplo"/><category scheme="http://www.blogger.com/atom/ns#" term="Fragment"/><category scheme="http://www.blogger.com/atom/ns#" term="isc"/><category scheme="http://www.blogger.com/atom/ns#" term="OnPageChangeListener"/><category scheme="http://www.blogger.com/atom/ns#" term="post"/><category scheme="http://www.blogger.com/atom/ns#" term="ViewPager"/><title type='text'>Ejemplo Con ViewPager Extendido</title><content type='html'>&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;En esta&amp;nbsp;ocasión&amp;nbsp;vamos a continuar un poco mas con ejemplos de Android. Hace&amp;nbsp;algún&amp;nbsp;tiempo publique un post sobre como utilizar &lt;a href=&quot;http://blogti3r.blogspot.com/2011/09/ejemplo-con-viewpager-en-android.html&quot;&gt;ViewPager&lt;/a&gt; en Android y hace algunos&amp;nbsp;días&amp;nbsp;recibí&amp;nbsp;una pregunta de un lector sobre como hacer cosas mas avanzadas en el View Pager. Para recordar un poco aquel ejemplo desplegaba dos vistas similares (el reloj de Android) pero con un color de fondo diferente. Al deslizar la vista hacia la derecha o izquierda el View Pager cambiaba la vista a desplegar en pantalla y se puede observar el cambio en el color de fondo. La pregunta de Oscar Sanchez (gracias por leer el blog) es, como acceder al reloj dentro de cada uno de los fragmentos y realizar operaciones con el ?.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;Bueno en Android como en casi todas las plataformas existen varias maneras de hacer las cosas, solo es&amp;nbsp;cuestión&amp;nbsp;de seleccionar la que mas te guste y analizar los pros y contras.&amp;nbsp;Así&amp;nbsp;que para&amp;nbsp;contestar&amp;nbsp;esta pregunta la primera&amp;nbsp;aproximación&amp;nbsp;que utilizaremos sera el manejo interno. &amp;nbsp;Como ya&amp;nbsp;habíamos&amp;nbsp;visto en nuestro ejemplo anterior&amp;nbsp;habíamos&amp;nbsp;creado un PageAdapter que nos manejaba los diferentes fragmentos que&amp;nbsp;agregábamos&amp;nbsp;en una lista y añ&lt;/span&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;adiamos &amp;nbsp;3 fragmentos iguales pero con diferente color de fondo. Como la&amp;nbsp;documentación&amp;nbsp;de Android lo dice, un fragmento es una&amp;nbsp;poción&lt;/span&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;&amp;nbsp;de una actividad que cuenta con su propio ciclo de vida y espacio para dibujar vistas. Por lo tanto en nuestro fragmento podemos manejar nuestras vistas y eventos internamente. Entonces vamos a extender nuestra clase fragmento para que se vea de esta manera.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;public class PlainColorFragment extends Fragment {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;int color = Color.GREEN;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;View view = null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;AnalogClock clock = null;&lt;/span&gt;&lt;span style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public PlainColorFragment(int color){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;this.color = color;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public View onCreateView(LayoutInflater inflater, ViewGroup container,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;view = inflater.inflate(R.layout.color_layout, null);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;clock = (AnalogClock) view.findViewById(R.id.analogClock1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;clock.setOnClickListener(new OnClickListener() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;public void onClick(View v) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;startAnimationOnClock();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;});&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;view.setBackgroundColor(this.color);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;return view;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void startAnimationOnClock(){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Animation anim =&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;clock.startAnimation(anim);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;span style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;Lo que hicimos, es simplemente tener una variable que apunte a nuestro AnalogClock llamada clock y en el evento onCreateView asignar esa variable a la vista analogClock1 que se encuentra dentro de nuestro layout. Y ya con nuestra variable clock le asignamos un evento OnClickListener para que cuando el usuario toque la pantalla una simple&amp;nbsp;animación&amp;nbsp;se ejecute, esto es llamar al&amp;nbsp;método&amp;nbsp;startAnimationOnClock ( vean que el&amp;nbsp;método&amp;nbsp;es publico y visible para otras clases, por que luego lo usaremos para otras cosas). Ahora si, al modificar nuestra&amp;nbsp;aplicación&amp;nbsp;previa de esta manera veremos al tocar el reloj de cualquier fragmento seleccionado la&amp;nbsp;animación&amp;nbsp;se ejecutara.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Nuestra segunda&amp;nbsp;aproximación, en algunas ocasiones es necesario mandar una señal desde fuera de nuestros fragmentos hacia el interior para ejecutar ciertas instrucciones; como por ejemplo la&amp;nbsp;selección&amp;nbsp;de&amp;nbsp;algún&amp;nbsp;ítem&amp;nbsp;del&amp;nbsp;menú o&amp;nbsp;algún&amp;nbsp;otro evento externo&amp;nbsp;. En esta&amp;nbsp;ocasión, haremos que la&amp;nbsp;animación&amp;nbsp;del reloj del fragmento seleccionado se ejecute cuando se seleccione desde el&amp;nbsp;menú. Lo primero que&amp;nbsp;tendríamos&amp;nbsp;que hacer es saber cual fragmento es el que esta actualmente seleccionado; cual reloj de los varios disponibles tendremos que animar para que el usuario lo vea (no&amp;nbsp;tendría&amp;nbsp;caso animar un reloj que este invisible para el usuario,&amp;nbsp;obvias&amp;nbsp;razones). Por lo tanto crearemos una clase que nos guarde el indice del fragmento que el usuario selecciona. La clase se ve de esta manera:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;public class PageChangeListener implements OnPageChangeListener {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;int currentIndex = 0;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void onPageScrollStateChanged(int arg0) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;//Do Nothing&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void onPageScrolled(int arg0, float arg1, int arg2) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;//No Nothing&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void onPageSelected(int arg0) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;currentIndex = arg0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: x-small; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;public int getCurrentIndex() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;return currentIndex;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;Hace nada, nomas que guardar el numero de indice de la pagina seleccionada en una variable y exponerla por medio de un getter. Esta clase se va a relacionar con el ViewPager con el&amp;nbsp;método&amp;nbsp;setOnPageChangeListener para que cada vez que se haga un cambio de pagina el indice sea almacenado en nuestra variable currentIndex. Y por ultimo en nuestra actividad principal agregaremos&amp;nbsp;métodos&amp;nbsp;para que cuando el&amp;nbsp;botón&amp;nbsp;del&amp;nbsp;menú&amp;nbsp;sea presionado el fragmento visible sea&amp;nbsp;retraído&amp;nbsp;desde nuestro Adapter y llamar al metodo startAnimationOnClock (es por esto que nuestro&amp;nbsp;método&amp;nbsp;es&amp;nbsp;públicamente&amp;nbsp;visible). Asi que nuestra actividad principal se ve de esta manera:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;public class MainActivity extends FragmentActivity {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ViewPager pager = null;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;PageChangeListener pageChangeListener = null;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;/** Called when the activity is first created. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; @Override&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setContentView(R.layout.main);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pager = (ViewPager) findViewById(R.id.pager);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MyFragmentPagerAdapter adapter =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;new MyFragmentPagerAdapter(getSupportFragmentManager());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adapter.addFragment(new PlainColorFragment(Color.RED));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adapter.addFragment(new PlainColorFragment(Color.GREEN));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adapter.addFragment(new PlainColorFragment(Color.BLUE));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pageChangeListener = new PageChangeListener();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pager.setOnPageChangeListener(pageChangeListener);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pager.setAdapter(adapter);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void startAnimationOnCurrentPage(){&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;MyFragmentPagerAdapter adapter = &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;(MyFragmentPagerAdapter) pager.getAdapter();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;PlainColorFragment fragment =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;(PlainColorFragment) adapter.getItem(pageChangeListener.getCurrentIndex());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;fragment.startAnimationOnClock();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public boolean onCreateOptionsMenu(Menu menu) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;MenuInflater inflater = new MenuInflater(this);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;inflater.inflate(R.menu.main_menu, menu);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;return super.onCreateOptionsMenu(menu);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public boolean onOptionsItemSelected(MenuItem item) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;switch(item.getItemId()){&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;case R.id.main_menu_start_anim_current_item:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;startAnimationOnCurrentPage();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;default:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;return super.onOptionsItemSelected(item);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;} &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;El&amp;nbsp;método&amp;nbsp;importante en esta actividad es startAnimationOnCurrentPage, ya que dentro de el retraemos nuestro adaptador y utilizamos el indice de&amp;nbsp;nuestro&amp;nbsp;pageChangeListener para&amp;nbsp;así&amp;nbsp;poder obtener el fragmento que esta siendo desplegado al usuario. Una vez que tenemos nuestro fragmento lo&amp;nbsp;único&amp;nbsp;que hacemos es llamar startAnimationOnClock() para que la&amp;nbsp;animación&amp;nbsp;en el reloj sea ejecutada. De esta manera logramos propagar un evento ocurrido en el&amp;nbsp;menú&amp;nbsp;de nuestra actividad hacia dentro de las vistas localizadas dentro de nuestro ViewPager.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;En esta&amp;nbsp;ocasión&amp;nbsp;vimos como ejecutar una simple&amp;nbsp;operación&amp;nbsp;de&amp;nbsp;animación en la pagina actual de nuestro ViewPager pero en su lugar&amp;nbsp;podríamos&amp;nbsp;&amp;nbsp;realizar cualquier otro tipo de&amp;nbsp;operación. Retraer las vistas internas, hacerlas invisibles, eliminarlas, cambiarles colores, fondos, etc. Este&amp;nbsp;pequeño&amp;nbsp;post es simplemente para ejemplificar un poco mas como trabajar con ViewPagers en Android.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;Espero y el ejemplo les sea de utilidad y como siempre, el&amp;nbsp;código&amp;nbsp;fuente esta a su&amp;nbsp;disposición&amp;nbsp;en mi pagina de github&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/ti3r/view_pager_test&quot;&gt;https://github.com/ti3r/view_pager_test&lt;/a&gt;. Pueden descargar, revisar y utilizar el&amp;nbsp;código&amp;nbsp;a su conveniencia. Si este post les gusto por favor dejen sus comentarios, compartan el blog o escriban un e-mail o comentario con dudas &amp;nbsp;o recomendaciones para poder mejorar este espacio.&lt;br /&gt;
&lt;br /&gt;
Un Saludo a todos y gracias por leer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIknLz4PZ_7iOdwwwPKG0tLCHQwJNRxDTQ6K8O4YECIh75L5qwp89mu0JgS7r2RfO9cH3U8wAFgF5FMho1RkJLNRwCV7n-3HAdfaEc12tAf994un1ee370U08-gmCfWz18G0xxDlhyPrM/s1600/device-2013-03-05-002241.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIknLz4PZ_7iOdwwwPKG0tLCHQwJNRxDTQ6K8O4YECIh75L5qwp89mu0JgS7r2RfO9cH3U8wAFgF5FMho1RkJLNRwCV7n-3HAdfaEc12tAf994un1ee370U08-gmCfWz18G0xxDlhyPrM/s320/device-2013-03-05-002241.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXfD4uml5vzosls0-Pbeiwm6AhQBN4i4YCYqfTs1aqyN-jaabdiaK3YHad2opO08jspsGjkePHGWRfK8xwbLo-mdSiYA1ICXi2AlrUw3CMi8HySfmi6hj5NRgFFRgMo1xRdkrpkWQmbs/s1600/device-2013-03-05-002107.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXfD4uml5vzosls0-Pbeiwm6AhQBN4i4YCYqfTs1aqyN-jaabdiaK3YHad2opO08jspsGjkePHGWRfK8xwbLo-mdSiYA1ICXi2AlrUw3CMi8HySfmi6hj5NRgFFRgMo1xRdkrpkWQmbs/s320/device-2013-03-05-002107.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFt_QrsUXczjeQc4mBeHrFb5un0s0ppR5oJZcQb7qUPIMR_z19epXULTWiWqRfgV0gf18zqDBmgOTvnz58a-B2VJQDdvVsFdkZ1MMeQ4GFRwK6MJoaz2kBTgiv82KwGEoEhRN-881txOo/s1600/device-2013-03-05-002223.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFt_QrsUXczjeQc4mBeHrFb5un0s0ppR5oJZcQb7qUPIMR_z19epXULTWiWqRfgV0gf18zqDBmgOTvnz58a-B2VJQDdvVsFdkZ1MMeQ4GFRwK6MJoaz2kBTgiv82KwGEoEhRN-881txOo/s320/device-2013-03-05-002223.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1HCvXqJD_7Kx94w0KOJ2VdqwtnalpMMNyM2ju6az33LmXYM03PwfG-YDmpHQwR8tR0uaihSnoaxOj7YLZcqAljhqK4YjX3Vrdp2O4I1-E0AmWkf1dQ-4wnTuklT9OPfnIHTobQMG0uM/s1600/device-2013-03-05-002256.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1HCvXqJD_7Kx94w0KOJ2VdqwtnalpMMNyM2ju6az33LmXYM03PwfG-YDmpHQwR8tR0uaihSnoaxOj7YLZcqAljhqK4YjX3Vrdp2O4I1-E0AmWkf1dQ-4wnTuklT9OPfnIHTobQMG0uM/s320/device-2013-03-05-002256.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAQT14go3RU41u1zRKZVKPiKzchaq0azeRdNLy-6P56yBFJI3ztoFSEgACzL4C2XYqnuPWCVBnYSq4N8StD9oxPlBpDw033C6a74KD3x4F2ebBXY2KQwbt4dY9K5qQ2CSvkYDaxl__g8I/s1600/device-2013-03-05-002309.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAQT14go3RU41u1zRKZVKPiKzchaq0azeRdNLy-6P56yBFJI3ztoFSEgACzL4C2XYqnuPWCVBnYSq4N8StD9oxPlBpDw033C6a74KD3x4F2ebBXY2KQwbt4dY9K5qQ2CSvkYDaxl__g8I/s320/device-2013-03-05-002309.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Times, Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/849429399843458379/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/03/ejemplo-con-viewpager-extendido.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/849429399843458379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/849429399843458379'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/03/ejemplo-con-viewpager-extendido.html' title='Ejemplo Con ViewPager Extendido'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIknLz4PZ_7iOdwwwPKG0tLCHQwJNRxDTQ6K8O4YECIh75L5qwp89mu0JgS7r2RfO9cH3U8wAFgF5FMho1RkJLNRwCV7n-3HAdfaEc12tAf994un1ee370U08-gmCfWz18G0xxDlhyPrM/s72-c/device-2013-03-05-002241.png" height="72" width="72"/><thr:total>2</thr:total><georss:featurename>Richfield, MN, USA</georss:featurename><georss:point>44.8832982 -93.283002099999976</georss:point><georss:box>44.8382907 -93.363683099999975 44.928305699999996 -93.202321099999978</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-8728488901293182603</id><published>2013-02-27T21:46:00.002-08:00</published><updated>2013-02-27T21:46:31.970-08:00</updated><title type='text'>BDD con Cucumber y Java 2/2</title><content type='html'>Ya vimos en la primera parte de este post como un escenario puede ser especificado y usado por un desarrollador para dirigir sus desarrollos. Normalmente estos escenarios&amp;nbsp;serán&amp;nbsp;escritos por&amp;nbsp;algún&amp;nbsp;agente externo al desarrollo y&amp;nbsp;podrán&amp;nbsp;ser&amp;nbsp;usados para validar la&amp;nbsp;aplicación&amp;nbsp;en&amp;nbsp;cuestión. La parte importante es que en determinadas aplicaciones un agente puede escribir cientos de escenarios diferentes y el validar cada uno de estos&amp;nbsp;después&amp;nbsp;del desarrollo puede llegar a ser una tarea bastante compleja. Es&amp;nbsp;aquí&amp;nbsp;donde entra en juego la&amp;nbsp;automatización&amp;nbsp;de estos escenarios con la ayuda de Cucumber.&lt;br /&gt;
&lt;br /&gt;
Como ya habiamos descrito BDD esta definido en escenarios que describen el comportamiento deseado. Estos escenarios&amp;nbsp;serán&amp;nbsp;escritos en archivos .feature en cucumber. Cucumber framework permite la&amp;nbsp;integración&amp;nbsp;de muchos lenguajes naturales para escribir el comportamiento, lo que nos permite describir comportamientos en muchos de las lenguas mas utilizadas en el mundo. Un ejemplo de un archivo .feature seria el siguiente.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;# language: es
Característica: Calculator ops

Background:
 Dado Ejecuto Limpiar la Calculadora

@calculadora
Escenario: Probar suma
 Cuando escribo 2 en la calculadora
 Y presiono la tecla +
 Y escribo 5 en la calculadora
 Y presiono la tecla =
 Entonces El resultado sera 7
&lt;/pre&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Las etiquetas que se definen sobre cada escenario definen un punto de entrada para la ejecución de las instrucciones. Por cada ejecución de Cucumber-jvm se puede definir una etiqueta la cual ejecutara el o los escenarios marcados y por lo tanto las pruebas correspondientes.&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
En Cucumber como en todos los lenguajes de&amp;nbsp;programación&amp;nbsp;nada es echo por arte de magia. Por lo tanto Cucumber necesita saber como interpretar las instrucciones en&amp;nbsp;español (en este caso) o en el lenguaje que seleccionamos y ejecutar las tareas determinadas. A esto se le llama &quot;glue code&quot; o&amp;nbsp;código&amp;nbsp;de pegamento. Este&amp;nbsp;código&amp;nbsp;puede ser escrito en varios lenguajes de&amp;nbsp;programación. Cucumber-jvm es tan robusto que acepta varios lenguajes de&amp;nbsp;programación&amp;nbsp;entre ellos: Java, Groovy, JRuby, Cloujure, y mas. Para este ejemplo escribiremos una clase Java que&amp;nbsp;contendrá&amp;nbsp;el&amp;nbsp;código&amp;nbsp;de pegado y la cual se vera mas o menos&amp;nbsp;así.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;public class CalculadoraStepDef {

  Calculadora calc = new Calculadora();
  
  @Dado(value=&quot;^Ejecuto Limpiar la Calculadora$&quot;)
  public void I_reset_the_calculator() throws Throwable{
    calc.reset();
  }
  
  @Cuando(value=&quot;^escribo (\\d+) en la calculadora$&quot;)
  public void I_add_to_the_calculator(int number) throws Throwable{
    calc.escribirDigito(number);
  }
  
  @Cuando(value=&quot;^presiono la tecla (.?)$&quot;)
  public void I_press_key(String key) throws Throwable{
    if (&quot;+&quot;.equalsIgnoreCase(key)){
      calc.setOperacion(OPERACIONES.SUMA);
    }else if (&quot;-&quot;.equalsIgnoreCase(key)){
      calc.setOperacion(OPERACIONES.RESTA);
    }else if (&quot;*&quot;.equalsIgnoreCase(key)){
      calc.setOperacion(OPERACIONES.MULTIPLICACION);
    }else if (&quot;/&quot;.equalsIgnoreCase(key)){
      calc.setOperacion(OPERACIONES.DIVISION);
    } else if (&quot;=&quot;.equalsIgnoreCase(key)){
      
      if (calc.getOperacion() != null){
        calc.ejecutarOperacion();
      }else{
        calc.setOperacion(OPERACIONES.IGUAL);
      }
      
    }
  }
  
  @Entonces(value=&quot;^El resultado sera (.*)$&quot;)
  public void result_should_be(double number) throws Throwable {
    Assert.assertEquals(number, calc.getTotal());
  }
  
}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar la clase contiene expresiones regulares las cuales corresponden a los escenarios que definimos anteriormente. Este es el&amp;nbsp;código&amp;nbsp;que hace el trabajo pesado y lleva a cabo las pruebas que se definieron en los archivos feature. Las anotaciones que se encuentran el cada&amp;nbsp;método&amp;nbsp;definen que&amp;nbsp;método&amp;nbsp;de esta clase debe de ser ejecutado cuando un&amp;nbsp;paso de cada escenario es interpretado en el archivo feature.&lt;br /&gt;
&lt;br /&gt;
Por ultimo solo es necesario decirle a Cucumber-jvm que se ejecute. El framework Cucumber-jvm cuenta con varias maneras de&amp;nbsp;ejecución. Una es vinculando la&amp;nbsp;ejecución&amp;nbsp;con una Prueba JUnit. Otra es ejecutando la clase Main (cucumber.api.cli.Main) con los&amp;nbsp;parámetros&amp;nbsp;correspondientes. Esto es lo que nosotros realizaremos en este ejemplo al vincular la&amp;nbsp;ejecución&amp;nbsp;de esta clase con la fase de pruebas de un proyecto maven. Lo que se tiene que hacer es vincular el plugin de Java Execution en nuestro archivo pom.xml como se muestra abajo. Una vez que tengamos nuestro archivo pom correctamente configurado solo sera necesario ejecutar en nuestra consola mvn clean test y nuestras pruebas de Comportamiento se ejecutaran automaticamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;plugin&gt;&lt;/plugin&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;groupid&gt;org.codehaus.mojo&lt;/groupid&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;artifactid&gt;exec-maven-plugin&lt;/artifactid&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;version&gt;1.2.1&lt;/version&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;executions&gt;&lt;/executions&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;execution&gt;&lt;/execution&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;phase&gt;test&lt;/phase&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;goals&gt;&lt;/goals&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;goal&gt;exec&lt;/goal&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;configuration&gt;&lt;/configuration&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;executable&gt;java&lt;/executable&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;arguments&gt;&lt;/arguments&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;-Xms512M&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;-Xmx1024M&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;-XX:MaxPermSize=512M&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;-classpath&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;classpath&gt;&lt;/classpath&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;cucumber.api.cli.Main&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;features/&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;--glue&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;com.bestbuy.test.cucumber_test&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;--tags&lt;argument&gt;&lt;/argument&gt;&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;@calculadora/argument&amp;gt;&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;--format&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;argument&gt;pretty&lt;/argument&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Este articulo formado por dos partes es un poco largo y&amp;nbsp;técnico mas sin embargo espero y les sea de utilidad. Como siempre pongo a&amp;nbsp;disposición un link a mi repositorio de github (&lt;a href=&quot;https://github.com/ti3r/cucumber-tests&quot;&gt;https://github.com/ti3r/cucumber-tests&lt;/a&gt;) donde pueden descargar, modificar, actualizar y jugar con el&amp;nbsp;código que hemos desarrollado en este ejemplo. Cualquier cosa que no este clara no duden en dejar su comentario en el blog o escribirme un correo personal, siempre tratare de ayudar lo mas posible. Si&amp;nbsp;también&amp;nbsp;lo desean pueden agregarme a sus&amp;nbsp;círculos&amp;nbsp;en Google+.&lt;br /&gt;
&lt;br /&gt;
Saludos a todos y gracias por leer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/8728488901293182603/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/02/bdd-con-cucumber-y-java-22.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8728488901293182603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8728488901293182603'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/02/bdd-con-cucumber-y-java-22.html' title='BDD con Cucumber y Java 2/2'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-7372514932865110325</id><published>2013-02-27T21:46:00.001-08:00</published><updated>2013-02-27T21:47:36.866-08:00</updated><title type='text'>BDD con Cucumber y Java 1/2</title><content type='html'>En esta&amp;nbsp;ocasión&amp;nbsp;me voy a salir un poco del tema&amp;nbsp;habitual&amp;nbsp;de Android y celulares, en mi trabajo hemos estado un bastante ocupados y me&amp;nbsp;pareció&amp;nbsp;una buena oportunidad para hablarles sobre como hacer pruebas de comportamiento usando Java y Cucumber usando el framework (cucumber for jvm). Primero que nada durante el desarrollo de software es muy importante realizar la&amp;nbsp;mayoría&amp;nbsp;de pruebas posibles sobre tu&amp;nbsp;código&amp;nbsp;para asegurar la calidad, no mencionare las diferentes ideas y&amp;nbsp;metodologías&amp;nbsp;que existen sobre desarrollo y prueba de software ya que no es la finalidad de este articulo, cada equipo y/o desarrollador es responsable de como manejar su ciclo y asegurar que su&amp;nbsp;aplicación&amp;nbsp;no falle&amp;nbsp;horriblemente.&lt;br /&gt;
&lt;br /&gt;
Dentro de las diferentes&amp;nbsp;técnicas&amp;nbsp;de&amp;nbsp;desarrollo&amp;nbsp;de software; BDD (Behavior&amp;nbsp;Driven Development) o desarrollo basado en comportamiento, se ha vuelto muy popular en varios proyectos de software grandes. Esta&amp;nbsp;técnica complementa muy bien a la&amp;nbsp;metodología&amp;nbsp;ágil y TDD (Test Driven Development) las cuales son la forma y&amp;nbsp;técnicas&amp;nbsp;mas populares de desarrollar software en la actualidad (a mi parecer).&amp;nbsp;Primero una poca de&amp;nbsp;explicación&amp;nbsp;sobre lo que es BDD. Como el nombre en ingles lo dice, este desarrollo se centra en el comportamiento de las cosas;&amp;nbsp;basándose&amp;nbsp;en que el modulo es una caja negra para el usuario. Esto quiere decir que el comportamiento se&amp;nbsp;evalúa&amp;nbsp;de acuerdo a las salidas que este presenta basado en determinadas entradas. En pocas palabras es describir el comportamiento y asegurarse que este comportamiento sea cumplido. La finalidad es que estos escenarios de comportamiento sean escritos por un agente externo, como un business user o un usuario avanzado, en su propio lenguaje (sin necesidad de un lenguaje de&amp;nbsp;programación) y que estos comportamientos se prueben&amp;nbsp;automáticamente en cierto punto del desarrollo.&lt;br /&gt;
&lt;br /&gt;
Cuando iniciemos el desarrollo tendremos una lista de escenarios escritos por nuestro agente los cuales&amp;nbsp;describirán&amp;nbsp;los puntos a considerar para marcar el desarrollo como&amp;nbsp;éxito&amp;nbsp;o fracaso. Por ejemplo digamos que estamos escribiendo un programa que imite a una calculadora. Nuestro agente&amp;nbsp;podría&amp;nbsp;decir para que una calculadora sea efectiva debe de sumar, restar, multiplicar y dividir correctamente, por lo tanto nuestro usuario nos&amp;nbsp;daría&amp;nbsp;una lista de escenarios parecida a esta:&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Escenario: &lt;b&gt;Probar suma&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Escenario: &lt;b&gt;Probar resta&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Cuando escribo &lt;b&gt;2&lt;/b&gt; en la calculadora&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Cuando escribo &lt;b&gt;5&lt;/b&gt; en la calculadora&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y presiono la tecla&amp;nbsp;&lt;b&gt;+&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y presiono la tecla &lt;b&gt;-&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y escribo &lt;b&gt;5&lt;/b&gt; en la calculadora&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y escribo &lt;b&gt;2&lt;/b&gt; en la calculadora&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y presiono la tecla &lt;b&gt;=&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Y presiono la tecla &lt;b&gt;=&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Entonces El resultado sera &lt;b&gt;7&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Entonces El resultado sera &lt;b&gt;3&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
Como se puede ver no es necesario&amp;nbsp;ningún&amp;nbsp;lenguaje de&amp;nbsp;programación, nuestro agente puede especificar cualquier numero de escenarios y en cualquier formato (siempre y cuando siga&amp;nbsp;algún&amp;nbsp;tipo de regla que re pueda programar). Si estos pasos se cumplen al momento de ejecutar nuestra calculadora podemos decir que nuestro&amp;nbsp;código&amp;nbsp;ha sido exitoso.&lt;br /&gt;
&lt;br /&gt;
Vean la &lt;a href=&quot;http://blogti3r.blogspot.com/2013/02/bdd-con-cucumber-y-java-22.html&quot;&gt;segunda parte&lt;/a&gt; de este articulo para saber como utilizar Behavior Driven Development (BDD) con Cucumber y Java.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/7372514932865110325/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/02/bdd-con-cucumber-y-java-12.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7372514932865110325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7372514932865110325'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/02/bdd-con-cucumber-y-java-12.html' title='BDD con Cucumber y Java 1/2'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-6769001562978534488</id><published>2013-01-23T21:24:00.000-08:00</published><updated>2013-01-23T21:24:23.458-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="Bitmap"/><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="email"/><category scheme="http://www.blogger.com/atom/ns#" term="JPEG"/><category scheme="http://www.blogger.com/atom/ns#" term="PNG"/><category scheme="http://www.blogger.com/atom/ns#" term="screenshot"/><title type='text'>Android Screenshot</title><content type='html'>Hola que tal a todos, Muy feliz año 2013 en esta&amp;nbsp;ocasión&amp;nbsp;les quiero compartir una&amp;nbsp;pequeña&amp;nbsp;aplicación&amp;nbsp;para demostrar como obtener un screenshot o una captura de pantalla de nuestra&amp;nbsp;aplicación. Antes que nada una disculpa por no haber escrito tan constantemente como en anteriores ocasiones pero me he enfocado en mi trabajo y otros proyectos personales.&lt;br /&gt;&lt;br /&gt;
El como obtener una copia de una vista en android es muy sencillo,&amp;nbsp;básicamente&amp;nbsp;cualquier componente que nosotros necesitemos podemos copiar su bitmap en un punto determinado lo cual nos&amp;nbsp;dará&amp;nbsp;una imagen de este componente en el tiempo. Esta&amp;nbsp;función&amp;nbsp;es aplicable para nuestra vista principal&amp;nbsp;también&amp;nbsp;la cual nos&amp;nbsp;dará&amp;nbsp;el screenshot completo. El&amp;nbsp;método&amp;nbsp;se llama getDrawingCache(), lo que en realidad pasa es que esta vista regresa el cache que se utiliza para ser dibujada en pantalla en un objeto Bitmap, normalmente este cache esta&amp;nbsp;des-habilitado&amp;nbsp;y la&amp;nbsp;función&amp;nbsp;regresara null pero lo unico que tenemos que hacer antes de llamar al&amp;nbsp;método&amp;nbsp;es habilitarlo con la&amp;nbsp;función:&amp;nbsp;setDrawingCacheEnabled(true). Este bitmap luego puede ser transformado a&amp;nbsp;algún&amp;nbsp;otro formato compreso como PNG o JPEG &amp;nbsp;y guardado en nuestra SD card o cualquier otra&amp;nbsp;locación.&lt;br /&gt;
&lt;br /&gt;
Nota no hay que olvidarnos que luego de terminar es bueno&amp;nbsp;des-habilitar&amp;nbsp;el cache de nuestra vista ya que si no estaremos utilizando memoria en nuestra&amp;nbsp;aplicación&amp;nbsp;que no es necesaria. Muy bien a&amp;nbsp;continuación&amp;nbsp;el&amp;nbsp;código&amp;nbsp;de las funciones para tomar la imagen, transformarla a formato JPEG y guardarla en la carpeta de la Camara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void takeScreenshot(){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;View v = findViewById(R.id.rootLayout);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;v.setDrawingCacheEnabled(true);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Bitmap bitmap &amp;nbsp;= v.getDrawingCache();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;String dest = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;+File.separator+&quot;Camera&quot;+File.separator+&quot;IMG_&quot;+&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;new DateFormat().format(&quot;yyyyMMdd_hhmmss&quot;, new Date())&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;+&quot;.jpg&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Log.d(APP_TAG, &quot;Writing to: &quot;+dest);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;File file = new File(dest);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;try {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;FileOutputStream stream = new FileOutputStream(file);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;bitmap.compress(CompressFormat.JPEG, 100, stream);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;stream.flush();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;stream.close();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;} catch (IOException e) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;Log.e(APP_TAG, &quot;Error taking screenshot.&quot;,e);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}finally{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;v.setDrawingCacheEnabled(false);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Este&amp;nbsp;pequeño&amp;nbsp;tutorial lo desarrolle a&amp;nbsp;petición&amp;nbsp;de un&amp;nbsp;compañero&amp;nbsp;desarrollador que tenia algunas dudas con esta tarea. Espero y les sea de utilidad. Si tienen alguna otra duda o quieren que publique&amp;nbsp;algún&amp;nbsp;otro tipo de tutorial siempre son bien recibidos los comentarios o pueden mandarme un email a cualquier hora. Un saludo a todos y espero ya poder volver a escribir con un poco mas de regularidad.&lt;br /&gt;
&lt;br /&gt;
P.D si desean el codigo completo de esta aplicacion pueden clonar el repositorio de github donde esta almacenada el link es:&amp;nbsp;git://github.com/ti3r/screenshot-android.git&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/6769001562978534488/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2013/01/android-screenshot.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6769001562978534488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6769001562978534488'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2013/01/android-screenshot.html' title='Android Screenshot'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total><georss:featurename>Minneapolis, MN 55423, USA</georss:featurename><georss:point>44.8735964 -93.283513700000015</georss:point><georss:box>44.8285899 -93.364194700000013 44.918602899999996 -93.202832700000016</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-8661990846183716397</id><published>2012-11-23T16:55:00.000-08:00</published><updated>2012-11-23T16:56:40.580-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 4.2"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy 10"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy 4"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy 7"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy nexus"/><category scheme="http://www.blogger.com/atom/ns#" term="jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid"/><category scheme="http://www.blogger.com/atom/ns#" term="samsung"/><title type='text'>Android 4.2 Jelly Bean Update para Nexus Galaxy</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbT8lssn40eeDrddD3rSsSoC7rpXVmz567tHOyvmTeXXqvX7XYz3AkRhpaGXLWbfws-rmFGd9Jrx1dhXhBlg2miDLdOd59oIt0DL2EQX_CColiCj40WBgMNPCQed5mvgDkxMIsHMSxiPw/s1600/device-2012-11-23-185014.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbT8lssn40eeDrddD3rSsSoC7rpXVmz567tHOyvmTeXXqvX7XYz3AkRhpaGXLWbfws-rmFGd9Jrx1dhXhBlg2miDLdOd59oIt0DL2EQX_CColiCj40WBgMNPCQed5mvgDkxMIsHMSxiPw/s200/device-2012-11-23-185014.png&quot; width=&quot;112&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp;Hola que tal a todos, hoy les quiero compartir mi&amp;nbsp;opinión&amp;nbsp;acerca de Android 4.2 (todavía&amp;nbsp;llamado Jelly Bean) que se ha estado enviando a varios celulares desde la semana pasada. Hace dos&amp;nbsp;días&amp;nbsp;recibí&amp;nbsp;la&amp;nbsp;actualización&amp;nbsp;vía&amp;nbsp;OTA y al instalarla lo primero en notar es el icono de la&amp;nbsp;cámara.&amp;nbsp;Así&amp;nbsp;es en esta&amp;nbsp;versión&amp;nbsp;de android Google puso mucho empeño en la&amp;nbsp;cámara&amp;nbsp;de los dispositivos y en darnos la&amp;nbsp;opción&amp;nbsp;de&amp;nbsp;sphere&amp;nbsp;photo (foto&amp;nbsp;esférica)&amp;nbsp;así&amp;nbsp;es que normal que sea el primer punto a notar. Esta&amp;nbsp;opción&amp;nbsp;permite tomar&amp;nbsp;fotografías&amp;nbsp;no solo&amp;nbsp;panorámicas&amp;nbsp;pero en todas direcciones y ensamblarlas en una esfera para dar una&amp;nbsp;ilusión&amp;nbsp;de 3D. Una gran&amp;nbsp;característica&amp;nbsp;si te apasiona la&amp;nbsp;fotografía&amp;nbsp;y tienes tiempo de fabricar una buena foto de un paisaje que te guste (por que toma bastante tiempo hacer una buena foto).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjskckTpA87Hv0D6tvyaqRwObRK-VSWaRGxPO4wBLa6JQ9xOZBoQ2BtKkYkH9y2FVUJ4Gq40Ja5PGIxePTX7RX0TAiVp15YdpBMCVVFYt_yNnhWRbjxk3PY0aH0QBcnXW9OIXF6_z9CBUc/s1600/slide.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;169&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjskckTpA87Hv0D6tvyaqRwObRK-VSWaRGxPO4wBLa6JQ9xOZBoQ2BtKkYkH9y2FVUJ4Gq40Ja5PGIxePTX7RX0TAiVp15YdpBMCVVFYt_yNnhWRbjxk3PY0aH0QBcnXW9OIXF6_z9CBUc/s320/slide.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
La segunda&amp;nbsp;característica&amp;nbsp;y la cual me encanta es la escritura por desliz. Esta&amp;nbsp;característica&amp;nbsp;ya estaba disponible en versiones anteriores de Android como en los Motorola Droid o utilizando aplicaciones externas como TouchPal, lo que permite es arrastrar el dedo por el teclado hacia diferentes teclas y escribir sin necesidad de estar haciendo&amp;nbsp;clic&amp;nbsp;en las diferentes teclas. Creanme es una&amp;nbsp;opción&amp;nbsp;que me encanta, al principio tal vez se les haga complejo escribir algunas palabras o si quieren usar algunas palabras fuera del diccionario (como wey, o hijola :)&amp;nbsp;) el teclado no las reconoce; pero una vez que llevan tiempo escribiendo y su diccionario ha crecido no&amp;nbsp;podrán&amp;nbsp;regresar al modo antiguo de presionar y presionar botones en pantalla.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
La&amp;nbsp;aplicación&amp;nbsp;de reloj y alarma. Se que suena un poco tonto pero me encanta esta nueva&amp;nbsp;versión, el&amp;nbsp;diseño&amp;nbsp;es genial y en esta&amp;nbsp;ocasión&amp;nbsp;cuenta con timer, que se pueden programar unos con otros. Es una gran ventaja para cuando estoy en el&amp;nbsp;gimnasio. Jejejeej solo falta que se puedan programar uno&amp;nbsp;después&amp;nbsp;del otro para los ejercicios de rutina. Estoy tentado a descargar el&amp;nbsp;código&amp;nbsp;fuente de esta&amp;nbsp;aplicación&amp;nbsp;y&amp;nbsp;modificar la&amp;nbsp;para que se pueda hacer. Si tengo tiempo libre lo&amp;nbsp;haré&amp;nbsp;rápidamente&amp;nbsp;y la&amp;nbsp;compartiré&amp;nbsp;con ustedes.&lt;br /&gt;
&lt;br /&gt;
Las animaciones son otra&amp;nbsp;característica&amp;nbsp;que cambio un poco, al iniciar y salir del&amp;nbsp;menú&amp;nbsp;y cambiar de una&amp;nbsp;aplicación&amp;nbsp;a otra se pueden notar algunas variaciones en las animaciones, las cuales se ven&amp;nbsp;esplendidas&amp;nbsp;pero en ocasiones hacen que las&amp;nbsp;transiciones&amp;nbsp;no sean tan suaves como anteriormente lo eran. Tal vez sea por el hardware de mi Nexus Galaxy ya que este sistema esta optimizado para las nexus 7, 10 y el nuevo Nexus 4. Aunque es una pena ya que si esto persiste&amp;nbsp;hará&amp;nbsp;que la experiencia en el Galaxy Disminuya. Aun y cuando Google dice que con el project Butter las animaciones son mas suaves y las transiciones son mejor crean me&amp;nbsp;después&amp;nbsp;del update&amp;nbsp;podrán&amp;nbsp;notas uno o dos glitches que en la&amp;nbsp;versión&amp;nbsp;anterior no se notaban.&lt;br /&gt;
&lt;br /&gt;
Aun y cuando las mejores&amp;nbsp;características&amp;nbsp;de este update solo se pueden ver en las Tablet Nexus esta&amp;nbsp;actualización&amp;nbsp;trae muy buenos features al Galaxy Nexus. Espero que comenten sus experiencias con esta nueva&amp;nbsp;versión en sus dispositivos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU3TUqZYlO_VNrqRfb8wG_hlD6BK2_VwTe0PN7GnTQ-yELDA2CgExDLEgkFYAkn-rQYi7uil30QxTHpM1-uJ10whq4MONXQLAoSPhjfyVpYvjL_VhxA263e89trHkfKXWkipuYHUQj9Fs/s1600/device-2012-11-23-185037.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU3TUqZYlO_VNrqRfb8wG_hlD6BK2_VwTe0PN7GnTQ-yELDA2CgExDLEgkFYAkn-rQYi7uil30QxTHpM1-uJ10whq4MONXQLAoSPhjfyVpYvjL_VhxA263e89trHkfKXWkipuYHUQj9Fs/s320/device-2012-11-23-185037.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikj3bZBfGb6cavOpCz6YhzTz7Hm26DUmD6q6cXlFcWRMyLEx07uVJuFxn4Wt5TqbvHDWdXj6xYc0343mDrRiHU2lxHE2pdeBvzItcYIoc02GEQ-qiEHs15x19aytVlNc7Eiej_tgjbaCU/s1600/device-2012-11-23-185057.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikj3bZBfGb6cavOpCz6YhzTz7Hm26DUmD6q6cXlFcWRMyLEx07uVJuFxn4Wt5TqbvHDWdXj6xYc0343mDrRiHU2lxHE2pdeBvzItcYIoc02GEQ-qiEHs15x19aytVlNc7Eiej_tgjbaCU/s320/device-2012-11-23-185057.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOujxBoZ-QLyhX8Fa7UoEgSOGcJ9a-gha1YcHnAFxgvbmO_JjqPSxyjI5axgZQ_jxIGje0PZSXFtC3qabgsJTD5mh0dl6nUUG_MV2ZB6OnphLWsTGL4mhhdui7dBApLkzCnCmez_z-FSM/s1600/device-2012-11-23-185126.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOujxBoZ-QLyhX8Fa7UoEgSOGcJ9a-gha1YcHnAFxgvbmO_JjqPSxyjI5axgZQ_jxIGje0PZSXFtC3qabgsJTD5mh0dl6nUUG_MV2ZB6OnphLWsTGL4mhhdui7dBApLkzCnCmez_z-FSM/s320/device-2012-11-23-185126.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdmtyri8n1ceX57m02qZEgiFXhw-gRdAxJbzHZQgH_L6mxpT18HdH1j16GisQzD4zmF6CEevAT13P398GVg7JlHRN_1r0JfUzOoJFXzte0BxE8EbK9oQqbI5QsUewi0EKNQ1Ejvxzcdlg/s1600/device-2012-11-23-185150.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdmtyri8n1ceX57m02qZEgiFXhw-gRdAxJbzHZQgH_L6mxpT18HdH1j16GisQzD4zmF6CEevAT13P398GVg7JlHRN_1r0JfUzOoJFXzte0BxE8EbK9oQqbI5QsUewi0EKNQ1Ejvxzcdlg/s320/device-2012-11-23-185150.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/8661990846183716397/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/11/android-42-jelly-bean-update-para-nexus.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8661990846183716397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8661990846183716397'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/11/android-42-jelly-bean-update-para-nexus.html' title='Android 4.2 Jelly Bean Update para Nexus Galaxy'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbT8lssn40eeDrddD3rSsSoC7rpXVmz567tHOyvmTeXXqvX7XYz3AkRhpaGXLWbfws-rmFGd9Jrx1dhXhBlg2miDLdOd59oIt0DL2EQX_CColiCj40WBgMNPCQed5mvgDkxMIsHMSxiPw/s72-c/device-2012-11-23-185014.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>219-287 W 66th St, Richfield, Minnesota 55423, EEUU</georss:featurename><georss:point>44.8832982 -93.2830021</georss:point><georss:box>44.860790699999995 -93.322484100000011 44.9058057 -93.2435201</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-6687307493668448352</id><published>2012-09-28T16:40:00.000-07:00</published><updated>2012-09-28T16:40:02.722-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 4.1"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="bateria"/><category scheme="http://www.blogger.com/atom/ns#" term="bateria baja."/><category scheme="http://www.blogger.com/atom/ns#" term="cargador"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy nexus"/><category scheme="http://www.blogger.com/atom/ns#" term="samsung"/><category scheme="http://www.blogger.com/atom/ns#" term="usb"/><title type='text'>Problema con Bateria Samsung Galaxy Nexus </title><content type='html'>Que tal, en esta&amp;nbsp;ocasión&amp;nbsp;les quiero&amp;nbsp;compartir&amp;nbsp;algo muy sencillo y&amp;nbsp;rápido. Me paso esta semana con mi Galaxy Nexus y fue un poco&amp;nbsp;frustrante&amp;nbsp;así&amp;nbsp;espero y a nadie mas le suceda. Llevo poco tiempo que lo&amp;nbsp;adquirí&amp;nbsp;(creo que como 3 meses). Todo ha funcionado de maravilla,&amp;nbsp;recibí&amp;nbsp;la&amp;nbsp;actualización&amp;nbsp;a Jellybean un poco&amp;nbsp;después&amp;nbsp;de que lo compre y el sistema funciona muy bien. Aun no lo he rooteado por que no me he visto en la necesidad de hacerlo, no necesito aplicaciones que&amp;nbsp;utilicen&amp;nbsp;root, el HotSpot funciona perfecto y con la red de AT&amp;amp;T en Estados Unidos los ver videos en youtube es muy buena experiencia.&lt;br /&gt;
Bueno al problema, a principios de esta semana&amp;nbsp;después&amp;nbsp;de desconectar el&amp;nbsp;teléfono&amp;nbsp;del cargador antes de salir al trabajo note que el indicador de&amp;nbsp;batería&amp;nbsp;marcaba que aun estaba cargando. La primera vez no le di mucha importancia por que&amp;nbsp;desapareció&amp;nbsp;luego de un rato.&amp;nbsp;Después&amp;nbsp;de uno o dos&amp;nbsp;días&amp;nbsp;al observar mas detalladamente vi que el indicador se&amp;nbsp;volvía&amp;nbsp;loco marcaba cargando a los pocos segundos no y&amp;nbsp;así&amp;nbsp;titubeaba entre los dos estados mientras se cuenta con bastante&amp;nbsp;batería&amp;nbsp;no hay problema pero cuando la&amp;nbsp;batería&amp;nbsp;baja a menos del 15% es cuando se vuelve molesto. El mensaje de que la&amp;nbsp;batería&amp;nbsp;esta baja aparece y desaparece a cada rato por este cambio en el indicador.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm0jtTJHQyowYTTTNmKF7kfpDLhMexb2clWw0Sinw9wlU3UYhACltlXRSezBAbt0jdd7NpXOYn5PMAnR0d70eVAeWc5CI54vL8jsC9J-DulJwoCyLTAPQ-oDiNkh4mEdrNM3GKHGe2m-s/s1600/58PNs_medium.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm0jtTJHQyowYTTTNmKF7kfpDLhMexb2clWw0Sinw9wlU3UYhACltlXRSezBAbt0jdd7NpXOYn5PMAnR0d70eVAeWc5CI54vL8jsC9J-DulJwoCyLTAPQ-oDiNkh4mEdrNM3GKHGe2m-s/s200/58PNs_medium.png&quot; width=&quot;111&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Pensé&amp;nbsp;que era&amp;nbsp;algún&amp;nbsp;problema con alguna de las aplicaciones que&amp;nbsp;había&amp;nbsp;instalado por que esta semana estuve probando varios juegos y aplicaciones.&amp;nbsp;Así&amp;nbsp;que&amp;nbsp;decidí&amp;nbsp;hacer un factory reset, por cierto como el Galaxy Nexus no tiene tarjeta SD cuando se hace un factory reset se pierden todos los datos, fotos, etc.,&amp;nbsp;así&amp;nbsp;que es bueno verificar que todo este respaldado en la nube antes de hacerlo, para deshacerme del error. Pero para mi sorpresa&amp;nbsp;después&amp;nbsp;de esto el problema continuo.&lt;br /&gt;
&lt;br /&gt;
Luego de investigar un rato&amp;nbsp;aquí&amp;nbsp;va la&amp;nbsp;solución. Al parecer el contacto micro-usb en la parte baja del&amp;nbsp;teléfono&amp;nbsp;esta algo expuesto y si el cargador se&amp;nbsp;inserta&amp;nbsp;mal o si alguna basura entra en el se presenta este problema. Lo que hay que hacer es con un palillo limpiar el contacto y presionarlo hacia la parte de abajo para que se despegue y ya no haya un falso contacto que haga creer al&amp;nbsp;teléfono&amp;nbsp;que se esta cargando.&lt;br /&gt;
&lt;br /&gt;
Así&amp;nbsp;que si este problema les pasa a ustedes&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&quot;Que no Cunda el Panico y Limpien el Contacto&quot;&lt;/span&gt;&lt;br /&gt;
y con eso se debe de solucionar, espero y este post les ayude a ustedes y no pierdan datos de su&amp;nbsp;teléfono&amp;nbsp;como me paso a mi.&lt;br /&gt;
&lt;br /&gt;
Saludos</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/6687307493668448352/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/09/problema-con-bateria-samsung-galaxy.html#comment-form' title='19 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6687307493668448352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6687307493668448352'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/09/problema-con-bateria-samsung-galaxy.html' title='Problema con Bateria Samsung Galaxy Nexus '/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm0jtTJHQyowYTTTNmKF7kfpDLhMexb2clWw0Sinw9wlU3UYhACltlXRSezBAbt0jdd7NpXOYn5PMAnR0d70eVAeWc5CI54vL8jsC9J-DulJwoCyLTAPQ-oDiNkh4mEdrNM3GKHGe2m-s/s72-c/58PNs_medium.png" height="72" width="72"/><thr:total>19</thr:total><georss:featurename>7720 Penn Ave S, Mineápolis, Minnesota 55423, EEUU</georss:featurename><georss:point>44.864553 -93.308783</georss:point><georss:box>44.8617395 -93.313718500000007 44.8673665 -93.3038475</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-4794115353730113593</id><published>2012-08-31T15:18:00.000-07:00</published><updated>2012-08-31T15:18:21.386-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="raspberry pi"/><category scheme="http://www.blogger.com/atom/ns#" term="XBMC"/><title type='text'>Raspberry PI</title><content type='html'>Hola que tal se que he estado desconectado del blog por bastante tiempo, los tiempos de&amp;nbsp;transición&amp;nbsp;siempre son&amp;nbsp;difíciles&amp;nbsp;entonces espero y pronto poder tener calma y poder seguir en el blog. En esta&amp;nbsp;ocasión&amp;nbsp;les quiero compartir&amp;nbsp;rápidamente&amp;nbsp;una imagen de mi nuevo juguete.&amp;nbsp;Adquirí&amp;nbsp;una unidad de Raspberry PI para experimentar. Algunos de ustedes ya&amp;nbsp;sabrán&amp;nbsp;lo que es, para los que no. Raspberry PI es una&amp;nbsp;proyecto&amp;nbsp;non-profit cuya finalidad es llevar computadoras a los niños para que estos aprendan a programar (revisen la &lt;a href=&quot;http://www.raspberrypi.org/&quot;&gt;pagina&lt;/a&gt; oficial del proyecto). &amp;nbsp;Esta&amp;nbsp;fundación&amp;nbsp;ofrece una computadora completa de un tamaño un poco mayor a una tarjeta de&amp;nbsp;crédito&amp;nbsp;a solo $35 &amp;nbsp;USD. Al parecer existen 2 versiones de la tableta, modelo A de $25 Dlls y modelo B a 35, aunque no he encontrado donde poder comprar el modelo A.&lt;br /&gt;
&lt;br /&gt;
Este proyecto se&amp;nbsp;volvió&amp;nbsp;muy famoso ya que varios proyectos han nacido utilizando esta pc, desde crear un Centro Multimedia Completo usando XBMC hasta robots automatizados y otras cosas avanzadas. Como el hardware es extremadamente barato las ordenes han&amp;nbsp;sobre saturado&amp;nbsp;la&amp;nbsp;producción&amp;nbsp;y existe una larga lista de espera, pero por fin pude obtener la&amp;nbsp;mía. Sobre este hardware se han configurado varias distribuciones de linux para instalar por lo que la computadora se vuelve muy&amp;nbsp;versátil al momento de programar y desarrollar diferentes cosas con ella. Las especificaciones del modelo B son:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Procesador&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;&amp;nbsp;&lt;/span&gt;ARM1176JZF-S&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;&amp;nbsp;a 700&amp;nbsp;&lt;/span&gt;MHz&lt;/li&gt;
&lt;li&gt;Procesador gráfico&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;&lt;/span&gt;VideoCore&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;&amp;nbsp;IV&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;256&amp;nbsp;&lt;/span&gt;MiB&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;&quot;&gt;&amp;nbsp;de&amp;nbsp;&lt;/span&gt;memoria RAM&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Estas especificaciones son mas del doble que la primera computadora personal que&amp;nbsp;adquirió&amp;nbsp;mi familia&amp;nbsp;así&amp;nbsp;que imaginen lo que se puede hacer con ella. Durante un tiempo&amp;nbsp;estaré&amp;nbsp;trabajando en algunos proyectos para esta tabla esperemos y nos vaya bien. Y para aquellos que nos gusta jugar con Android, ya existe un proyecto para portar Android a esta plataforma&amp;nbsp;así&amp;nbsp;que esperemos que pronto sea posible tener el sistema en mi juguete.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Aquí&amp;nbsp;abajo una foto y algunos videos de cosas interesantes que se pueden hacer con raspberry.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ1MsQC6lmq5aXl877P_LUUuSAODXCwuxnBaPIX607F4n7NNxIXZbb6OnW7WOfLjdCgsjoT5waG4prGKID-IJMSUbEwELB9tQDHQg5t9uyPEhPEg4v11VgBaqMUSIqYW-6aSrKxoJrzN4/s1600/IMG_20120829_093630.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ1MsQC6lmq5aXl877P_LUUuSAODXCwuxnBaPIX607F4n7NNxIXZbb6OnW7WOfLjdCgsjoT5waG4prGKID-IJMSUbEwELB9tQDHQg5t9uyPEhPEg4v11VgBaqMUSIqYW-6aSrKxoJrzN4/s320/IMG_20120829_093630.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;object width=&quot;320&quot; height=&quot;266&quot; class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://1.gvt0.com/vi/_U_v9tRD68k/0.jpg&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/_U_v9tRD68k&amp;fs=1&amp;source=uds&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;http://www.youtube.com/v/_U_v9tRD68k&amp;fs=1&amp;source=uds&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/4794115353730113593/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/08/raspberry-pi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4794115353730113593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/4794115353730113593'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/08/raspberry-pi.html' title='Raspberry PI'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ1MsQC6lmq5aXl877P_LUUuSAODXCwuxnBaPIX607F4n7NNxIXZbb6OnW7WOfLjdCgsjoT5waG4prGKID-IJMSUbEwELB9tQDHQg5t9uyPEhPEg4v11VgBaqMUSIqYW-6aSrKxoJrzN4/s72-c/IMG_20120829_093630.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>219-287 W 66th St, Richfield, Minnesota 55423, EEUU</georss:featurename><georss:point>44.8832982 -93.2830021</georss:point><georss:box>44.7932272 -93.4409306 44.9733692 -93.125073600000007</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-1304675910503312939</id><published>2012-07-13T08:22:00.000-07:00</published><updated>2012-07-13T08:25:29.450-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 4"/><category scheme="http://www.blogger.com/atom/ns#" term="android jelly bean"/><category scheme="http://www.blogger.com/atom/ns#" term="Chet Hase"/><category scheme="http://www.blogger.com/atom/ns#" term="Cyanogenmod"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod 10."/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod 9"/><category scheme="http://www.blogger.com/atom/ns#" term="droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy 7"/><category scheme="http://www.blogger.com/atom/ns#" term="galaxy nexus"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="nexus q"/><category scheme="http://www.blogger.com/atom/ns#" term="Reto Meier. Google I/O"/><category scheme="http://www.blogger.com/atom/ns#" term="Romain Guy"/><category scheme="http://www.blogger.com/atom/ns#" term="samsung"/><title type='text'>Google I/O, Nuevo Dispositivo, Android Jelly Bean y otras cosas de mediados de año</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPBEAmKDjDh3FbNdxgGefXE7auYpGjQDSFtdSsJgrJtmFXsbf_bnD-FZl1aHdjKUQAeBD8KcZjm-pdCydLkEhw8QHZoD3D6ccrULSiNz8QeZJUoAOaWacMnvkcMP9sVFar38lfdIwmRAU/s1600/android-jelly-bean.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPBEAmKDjDh3FbNdxgGefXE7auYpGjQDSFtdSsJgrJtmFXsbf_bnD-FZl1aHdjKUQAeBD8KcZjm-pdCydLkEhw8QHZoD3D6ccrULSiNz8QeZJUoAOaWacMnvkcMP9sVFar38lfdIwmRAU/s200/android-jelly-bean.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Hola que tal a todos, quiero comenzar este post con varias disculpas a todos los usuarios de Droid 2 Global. &amp;nbsp;Estuve&amp;nbsp;alejado del post por vario tiempo y no di el soporte ni ayude lo suficiente como hubiera querido, ahora me doy cuenta que adaptarme a la nueva ciudad, trabajo y hobbies&amp;nbsp;lleva&amp;nbsp;tiempo. Con este post hago oficial mi salida de las pruebas de CM9 para Droid 2 Global; si alguno de ustedes&amp;nbsp;estuvo&amp;nbsp;(que envidia :) ) o vio a&amp;nbsp;través&amp;nbsp;de youtube google I/O 2012, se dieron cuenta que Android Jelly Bean (4.1) sera liberado en unos cuantos&amp;nbsp;días OTA (el codigo fuente ya ha sido liberado)&amp;nbsp;y de acuerdo a&amp;nbsp;algunos post en el foro de Cyanogenmod, CM10 ya ha comenzado a ser desarrollado. Las noticias oficiales son que se&amp;nbsp;tendrá&amp;nbsp;un release estable de CM9 basado en ICS a la par que se esta desarrollando la nueva&amp;nbsp;versión. La mala noticia es que el porte de cyanogenmod para Droid 2 Global no es oficialmente reconocido por lo tanto la gente de cyanogenmod no puede prometer un release oficial para este dispositivo. Algunos de los desarrolladores ya han comenzado a trabajar en nuevos&amp;nbsp;proyectos&amp;nbsp;y el trabajo de CM9 para Droid 2 Global se ha disminuido.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghrCTXkXjUKAfB-LPXYbiU0j-BB192g7VwGnkRe9meUzQxxKHrArhkGslVtcVNURL6HFo2mKuSe4NDsNZ8lGLb2X-ctPPlUyt_b_UTS3Ol_XMRjvU-WeSOSfiqynA_zsta9kh9fNvI8xE/s1600/datahog.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghrCTXkXjUKAfB-LPXYbiU0j-BB192g7VwGnkRe9meUzQxxKHrArhkGslVtcVNURL6HFo2mKuSe4NDsNZ8lGLb2X-ctPPlUyt_b_UTS3Ol_XMRjvU-WeSOSfiqynA_zsta9kh9fNvI8xE/s200/datahog.jpg&quot; width=&quot;173&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
El segundo punto que quiero tratar (y que esta relacionado con el primero), es que he adquirido un nuevo celular. Mi Nexus Galaxy llego la semana pasada y esta excelente, y mas por que hoy acaba de ser actualizado a Android 4.1 Jelly Bean. Por los comentarios que se hicieron la semana pasada en Google I/O es que esta semana Nexus Galaxy, Nexus S, Motorola Xoom y Nexus 7 serian actualizados en&amp;nbsp;algún&amp;nbsp;momento de esta semana y&amp;nbsp;así&amp;nbsp;fue. Google&amp;nbsp;cumplió&amp;nbsp;su palabra, eso me lleva al siguiente punto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Android Jelly Bean (4.1) es muy similar en aspecto (abajo les dejare unos screen-shots) pero el&amp;nbsp;desempeño se puede notar desde el primer uso. En google I/O se anuncio que la VSync seria introducido a todo el sistema base de android y que las animaciones serian mas suaves (pueden ver esta platica &lt;a href=&quot;https://developers.google.com/events/io/sessions/gooio2012/105/&quot;&gt;aqui&lt;/a&gt;). Pues esto es cierto&amp;nbsp;la verdad es que las animaciones, el tiempo de respuesta y el uso de los widgets y el&amp;nbsp;menú&amp;nbsp;se sienten mucho mejor desde la primera vez que lo usas, aun y cuando se vean como cosas muy&amp;nbsp;pequeñas&amp;nbsp;esto mejora mucho la experiencia de uso del celular. Lo mejor de esta nueva&amp;nbsp;versión&amp;nbsp;de android es &quot;Google Now&quot;; cuando lo vi anunciado en I/O no me&amp;nbsp;pareció&amp;nbsp;gran cosa, pero la verdad es que si presenta otra cara del sistema, el reconocimiento de voz es excelente. Funciona muy bien y aun en Español&amp;nbsp;y las famosas &quot;CARDS&quot; que presenta en realidad presentan&amp;nbsp;información&amp;nbsp;importante, clima, transito y recordatorios. Es un muy buen feature a mi forma de pensar. Ahora la funcionalidad del reconocimiento de voz ahora funciona aun cuando no se cuenta con&amp;nbsp;Internet&amp;nbsp;en el dispositivo y puede servir para buscar dentro de todos los items del telefono, llamar, tocar&amp;nbsp;música&amp;nbsp;y mas.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1rfl4DJLKV-iIEjnxTuUuO_KvnAOOjFhcyIsjqoHXWiCw8INnr1HV1lZdnHTPgoJX_OMFGVA-Afjhxdi8ok6rijNjuhftG_FDqmzFQuOqxQs-6VXAnigoRrWHFf5VO8A_c_2efsJFVNY/s1600/google-io-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1rfl4DJLKV-iIEjnxTuUuO_KvnAOOjFhcyIsjqoHXWiCw8INnr1HV1lZdnHTPgoJX_OMFGVA-Afjhxdi8ok6rijNjuhftG_FDqmzFQuOqxQs-6VXAnigoRrWHFf5VO8A_c_2efsJFVNY/s1600/google-io-logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Otro punto que&amp;nbsp;quería&amp;nbsp;compartir con ustedes es que ya&amp;nbsp;están&amp;nbsp;disponibles la&amp;nbsp;mayoría&amp;nbsp;de las&amp;nbsp;sesiones&amp;nbsp;de google I/O en youtube. Si alguno de ustedes las vio (como fue mi caso) a&amp;nbsp;través&amp;nbsp;del canal de youtube o si tubo la suerte de ir a San Francisco a verlas en vivo se dio cuenta que hubo bastantes anuncios por parte de la gente de google y muchas platicas interesantes sobre Android y otros productos de Google; ademas, a todos los asistentes al evento les regalaron un Nexus Galaxy, la nueva tablet de google Nexus 7 y el nuevo centro multimedia que desarrollaron Nexus Q. Espero en un futuro poder ir a uno de estos eventos para que me regalen&amp;nbsp;también&amp;nbsp;cosas. Si estan interesados en ver las&amp;nbsp;sesiones&amp;nbsp;pueden encontrar el indice en&amp;nbsp;&lt;a href=&quot;https://developers.google.com/events/io/&quot;&gt;https://developers.google.com/events/io/&lt;/a&gt;; para mi gusto de las mejores fueron &quot;&lt;a href=&quot;https://developers.google.com/events/io/sessions/gooio2012/105/&quot;&gt;What&#39;s new in Android&lt;/a&gt;&quot;, con Romain Guy y Chet Hase y tambien &quot;&lt;a href=&quot;http://www.youtube.com/watch?v=PwC1OlJo5VM&amp;amp;feature=player_embedded&quot;&gt;Making Good Apps Great:..&lt;/a&gt;.&quot; con Reto Meier. Ellos son unos de mis oradores favoritos en cuanto a Android y ya se me esta haciendo costumbre seguirlos en las&amp;nbsp;sesiones&amp;nbsp;de google I/O, las sesiones de Reto aun y cuando habla de cosas avanzadas dentro del sistema se hacen divertidas con los&amp;nbsp;vídeos&amp;nbsp;que muestra.&lt;br /&gt;
&lt;br /&gt;
Bueno pues este es un post un poco largo y no muy&amp;nbsp;técnico, solo&amp;nbsp;quería&amp;nbsp;escribir lo que ha pasado&amp;nbsp;últimamente&amp;nbsp;con mi vida y lo que&amp;nbsp;estará&amp;nbsp;por venir. Espero y poder seguir ayudando a la comunidad de Droid 2 Global e iniciar con&amp;nbsp;desarrollos&amp;nbsp;y hacking para Nexus Galaxy&amp;nbsp;así&amp;nbsp;como futuros ejemplos y tips de algunas nuevas aplicaciones que tengo pensadas desarrollar. Ya para terminar les dejo algunas&amp;nbsp;imágenes&amp;nbsp;de Android Jelly Bean y de mi nuevo dispositivo.&lt;br /&gt;
&lt;br /&gt;
Como siempre un saludo a todos y gracias por leer el blog.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiALvH3aTrLnH6CXbt9Yd0_kzqYCloFKIy37mHpxR4ejoTelVmfOHpXh50w7a9B0csdmODxE-qE-gAJgT2XcCMDM-TsifRGdlK1Zmq9W8Dig1nyE-tqGH7BZg4zs1OBa-10z1J7mWn4WEk/s1600/330766_10151271545504129_858697845_o.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiALvH3aTrLnH6CXbt9Yd0_kzqYCloFKIy37mHpxR4ejoTelVmfOHpXh50w7a9B0csdmODxE-qE-gAJgT2XcCMDM-TsifRGdlK1Zmq9W8Dig1nyE-tqGH7BZg4zs1OBa-10z1J7mWn4WEk/s320/330766_10151271545504129_858697845_o.jpg&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEccTvz76bZzLW8jDr81_W5YHz0UPLW4hyht0DGj1-7vEjso9r4TP8Hzmi_AyV2hIxKiKXvY5af1PVJnjZTb5th8LKUT-FHgQ-3A0L3H3UpptELP0daotZz1dnz8G57Fo4VV5n9_ktwL8/s1600/device-2012-07-13-101046.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEccTvz76bZzLW8jDr81_W5YHz0UPLW4hyht0DGj1-7vEjso9r4TP8Hzmi_AyV2hIxKiKXvY5af1PVJnjZTb5th8LKUT-FHgQ-3A0L3H3UpptELP0daotZz1dnz8G57Fo4VV5n9_ktwL8/s320/device-2012-07-13-101046.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz5XlhSk7uxlHx-OOfi2TubHlduBTRh3X196vitCXaXV7oR1D5YxIUlI65R4qV5hjYjo7NnoYqHyfqlG1y6jCTlZQXJOZJQgE6ae4wrXlFpK3t4bQ-97ohhk3KzzGWONkAb1s9yEh0PfI/s1600/device-2012-07-13-101122.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz5XlhSk7uxlHx-OOfi2TubHlduBTRh3X196vitCXaXV7oR1D5YxIUlI65R4qV5hjYjo7NnoYqHyfqlG1y6jCTlZQXJOZJQgE6ae4wrXlFpK3t4bQ-97ohhk3KzzGWONkAb1s9yEh0PfI/s320/device-2012-07-13-101122.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9r_Xiu2X-4RC8_onClfp69k3GB9rOjuW9jsjvQvE_FkmxecuXWsMhQEMNbNJ-DcqIwvb_CsKzGDtIm6d4R8iKzJsOWPjHsusc4TKs0PyNnpu3UH9XMIYHDjI4NfYPM9Z1WXcLLEGSgmE/s1600/device-2012-07-13-101157.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9r_Xiu2X-4RC8_onClfp69k3GB9rOjuW9jsjvQvE_FkmxecuXWsMhQEMNbNJ-DcqIwvb_CsKzGDtIm6d4R8iKzJsOWPjHsusc4TKs0PyNnpu3UH9XMIYHDjI4NfYPM9Z1WXcLLEGSgmE/s320/device-2012-07-13-101157.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9qyZhMWuKK_jXjzsHANDdM912iY5Q_CJq0jVM3Ma_E8Ziz26qDNjHj_DXKYEG1_ZiGRcUAPFNxYMz9phEM9AG01nVK7O38Dnmw852wP0O7eWNGOOmglwgTEpwbdrni4kARijiXGdrTwY/s1600/device-2012-07-13-101219.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9qyZhMWuKK_jXjzsHANDdM912iY5Q_CJq0jVM3Ma_E8Ziz26qDNjHj_DXKYEG1_ZiGRcUAPFNxYMz9phEM9AG01nVK7O38Dnmw852wP0O7eWNGOOmglwgTEpwbdrni4kARijiXGdrTwY/s320/device-2012-07-13-101219.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGIH54CFqq2nqB5c6MPAPmTAknOgzoOvYoLoA53Lb6yTcc01hyuKhSEpfns0IKTA6vm8XkS-MG2PbWbYBWHEiSQZeMGlyjCnmmj-V6DddYMdEksvCtkv-oba33SvwJhzvDiOzT9jE2hQA/s1600/device-2012-07-13-101240.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGIH54CFqq2nqB5c6MPAPmTAknOgzoOvYoLoA53Lb6yTcc01hyuKhSEpfns0IKTA6vm8XkS-MG2PbWbYBWHEiSQZeMGlyjCnmmj-V6DddYMdEksvCtkv-oba33SvwJhzvDiOzT9jE2hQA/s320/device-2012-07-13-101240.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhWXEOA539d86ExzswphKwvApDpgti3A_4TIW7Rl2axjj-IHMQbw2rPOPNGRJNDKZ277QttoWXkZmih7UuLwFJmWfqm3Ru3d2Ft_mtTZUy0JrzNjxFyhtnC3ngDAWQ9gi8aPpWZUt2WE/s1600/device-2012-07-13-101258.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhWXEOA539d86ExzswphKwvApDpgti3A_4TIW7Rl2axjj-IHMQbw2rPOPNGRJNDKZ277QttoWXkZmih7UuLwFJmWfqm3Ru3d2Ft_mtTZUy0JrzNjxFyhtnC3ngDAWQ9gi8aPpWZUt2WE/s320/device-2012-07-13-101258.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj042Zj5ZEkQ2RZAMI4PdTHarqFd7lrC7xNrxT9CvFouIyYcRrKbWO07PjAdKj4jj4HvzKlytJAFOzumfTXEhNIURNHZK5SmsC4z1ocHdt9yODqW3PiReEnirUn0l0ZUvy6QjxSbb9wSO0/s1600/device-2012-07-13-101316.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj042Zj5ZEkQ2RZAMI4PdTHarqFd7lrC7xNrxT9CvFouIyYcRrKbWO07PjAdKj4jj4HvzKlytJAFOzumfTXEhNIURNHZK5SmsC4z1ocHdt9yODqW3PiReEnirUn0l0ZUvy6QjxSbb9wSO0/s320/device-2012-07-13-101316.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/1304675910503312939/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/07/google-io-nuevo-dispositivo-android.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1304675910503312939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1304675910503312939'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/07/google-io-nuevo-dispositivo-android.html' title='Google I/O, Nuevo Dispositivo, Android Jelly Bean y otras cosas de mediados de año'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPBEAmKDjDh3FbNdxgGefXE7auYpGjQDSFtdSsJgrJtmFXsbf_bnD-FZl1aHdjKUQAeBD8KcZjm-pdCydLkEhw8QHZoD3D6ccrULSiNz8QeZJUoAOaWacMnvkcMP9sVFar38lfdIwmRAU/s72-c/android-jelly-bean.jpg" height="72" width="72"/><thr:total>4</thr:total><georss:featurename>Mineápolis, Minnesota, EEUU</georss:featurename><georss:point>44.983334 -93.26667</georss:point><georss:box>44.893485 -93.4245985 45.073183 -93.108741500000008</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-5583349847555366446</id><published>2012-06-04T08:04:00.000-07:00</published><updated>2012-06-04T08:04:09.516-07:00</updated><title type='text'>Batería Droid 2 Global</title><content type='html'>Hola que tal a todos, antes que nada una disculpa por no haber estado muy al pendiente del blog en los ultimos meses. Me he mudado de trabajo,&amp;nbsp;país&amp;nbsp;y aun me estoy adaptando. Ademas he estado muy envuelto en probar CM9 y todos los builds que han estado saliendo para el cel y no he tenido mucho tiempo de probar muchas cosas mas para el cel.&lt;br /&gt;
&lt;br /&gt;
En esta&amp;nbsp;ocasión&amp;nbsp;les quiero hacer una pregunta a todos los lectores del blog, antes que nada pues el estado del desarrollo de CM9 va bien, se han realizado buenos progresos pero aun tenemos problemas con los modulos HAL de la&amp;nbsp;cámara&amp;nbsp;y el audio pero esperemos tener progresos. Tomar fotos es casi 100% seguro aun tenemos problemas cuando el telefono va a stand by y la&amp;nbsp;cámara&amp;nbsp;esta preparada y el audio con bluetooth esta dando buen dolor de cabeza. Pero pronto ya podremos tener esta excelente rom en nuestro cel.&lt;br /&gt;
&lt;br /&gt;
Bueno la pregunta, en los ultimos dias estube flasheando varios roms y ahora el telefono ya no quiere iniciar, lo ultimo que pude realizar es flashear ROM 608 de Verizon con sbf_flash y rootear el cel y luego de eso ya no inicia el&amp;nbsp;teléfono, se queda en el modo de carga pero la bateria presenta un &quot;?&quot; y si entro al bootloader me dice que no tiene suficiente bateria para programar. Ya intente con varios cargadores y nada, por lo que estube leyendo es problema de la&amp;nbsp;batería&amp;nbsp;pero aun no quiero comprar una&amp;nbsp;batería&amp;nbsp;de reemplazo si este no es el problema. Alguna vez les ha pasado este problema??? si tengo que comprar una bateria de reemplazo estoy pensando seriamente en cambiar tmb el celular por otro modelo y dejar este solo para desarrollo. Pero esperemos y aun pueda durar un poco mas por que la verdad me encanta el telefono.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/5583349847555366446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/06/bateria-droid-2-global.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/5583349847555366446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/5583349847555366446'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/06/bateria-droid-2-global.html' title='Batería Droid 2 Global'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-2305367791364199866</id><published>2012-04-10T10:09:00.000-07:00</published><updated>2012-04-10T10:09:53.215-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android 4"/><category scheme="http://www.blogger.com/atom/ns#" term="android ISC"/><category scheme="http://www.blogger.com/atom/ns#" term="clockworkmod"/><category scheme="http://www.blogger.com/atom/ns#" term="cm9"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod9"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="flashear"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="sbf"/><category scheme="http://www.blogger.com/atom/ns#" term="sbf_flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Verizon"/><title type='text'>Nuevas Noticias para CM9 y Droid 2 Global</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hola que tal a todos, primero que nada una disculpa por haber tardado tanto en escribir de nuevo en el blog. Este ultimo mes ha sido muy&amp;nbsp;ajetreado, cambie de trabajo, de residencia y me tuve que decir hasta luego a muchos de mis amigos en casa :(. Primero que nada les tengo malas noticias a todos los usuarios que recibieron la ultima&amp;nbsp;actualización&amp;nbsp;de Verizon y que trataron de hacer flash a versiones anteriores y que ahora&amp;nbsp;están&amp;nbsp;atorados con el bootloader. Fui personalmente a varios distribuidores de Verizon y trate de explicar la&amp;nbsp;situación, lo&amp;nbsp;único&amp;nbsp;que me dijeron es que eso no se debe de hacer y por lo tanto el&amp;nbsp;teléfono&amp;nbsp;pierde su&amp;nbsp;garantía y como estos&amp;nbsp;teléfonos&amp;nbsp;ya no&amp;nbsp;están&amp;nbsp;siendo distribuidos lo&amp;nbsp;único&amp;nbsp;que podemos hacer es llevarlos para que nos los tomen a cuenta por uno nuevo. Ahorita tienen una&amp;nbsp;promoción&amp;nbsp;de&amp;nbsp;llevar&amp;nbsp;el cel viejo y te hacen un descuento de $50 dolares en la compra de uno nuevo pero me comentaron que ellos no pueden cargar la imagen del sistema,&amp;nbsp;necesitarían&amp;nbsp;mandarlo a un centro de&amp;nbsp;reparación&amp;nbsp;y como ya no tiene&amp;nbsp;garantía&amp;nbsp;tendría&amp;nbsp;un costo para mi. (Creo que la persona del mostrador no me&amp;nbsp;entendió&amp;nbsp;muy bien y lo que&amp;nbsp;quería&amp;nbsp;era venderme uno nuevo :S jejeje). Por lo tanto creo que Verizon no es una&amp;nbsp;opción&amp;nbsp;para reparar el cel,&amp;nbsp;estuve&amp;nbsp;buscando en&amp;nbsp;Internet&amp;nbsp;pero aun no encuentro la manera de obtener la imagen o un archivo de imagen listo para esta nueva&amp;nbsp;versión;&amp;nbsp;así&amp;nbsp;que la espera&amp;nbsp;tendrá&amp;nbsp;que continuar, lo siento por eso.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por otro lado el desarrollo de CM9 para el cel va en progreso, se han tenido grandes avances y creo que hasta este momento ya se puede considerar una&amp;nbsp;versión&amp;nbsp;como Beta, estos probando el build del 3 de abril que realizo Angel y la&amp;nbsp;cámara&amp;nbsp;ya esta funcionando, existen pequeños problemas aun con el&amp;nbsp;vídeo&amp;nbsp;pero ya es poco lo que falta hasta tener una&amp;nbsp;versión&amp;nbsp;estable para el cel. Los invito a probarla y a ayudar a reportar posibles problemas que puedan tener ya sea por este medio o en la pagina oficial de rootzwiki del desarrollo,&amp;nbsp;aquí&amp;nbsp;les dejo el link desde donde pueden descargar la ultima&amp;nbsp;versión lo&amp;nbsp;único&amp;nbsp;que necesitan es estar en la&amp;nbsp;versión&amp;nbsp;608 (Gingerbread) de Verizon y flashear el Zip utilizando clockworkmod yo creo ya la&amp;nbsp;mayoría&amp;nbsp;esta familiarizado con este procedimiento, si no puede dejar un comentario tmb y lo volvemos a revisar.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para descargar el ultimo build visiten:&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://synibox.info/synik4l/x13thangelx/D2G/cm9/&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;http://synibox.info/synik4l/x13thangelx/D2G/cm9/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El thread oficial de desarrollo en RootzWiki&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://rootzwiki.com/topic/17976-cyanogenmod-9-unofficial-for-droid-2-global-ics403-update-31512/&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;http://rootzwiki.com/topic/17976-cyanogenmod-9-unofficial-for-droid-2-global-ics403-update-31512/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;P.D. Si alguien tiene alguna&amp;nbsp;información&amp;nbsp;sobre como sacar o de donde descargar una imagen SBF de la nueva&amp;nbsp;versión&amp;nbsp;de Verizon (&lt;span style=&quot;background-color: white; color: #333333; line-height: 18px; text-align: justify;&quot;&gt;4.5.629) &lt;/span&gt;&lt;span style=&quot;background-color: white; line-height: 18px; text-align: justify;&quot;&gt;se les agradece que comenten.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/2305367791364199866/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/04/nuevas-noticias-para-cm9-y-droid-2.html#comment-form' title='51 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/2305367791364199866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/2305367791364199866'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/04/nuevas-noticias-para-cm9-y-droid-2.html' title='Nuevas Noticias para CM9 y Droid 2 Global'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>51</thr:total><georss:featurename>219-299 W 66th St, Richfield, Minnesota 55423, EEUU</georss:featurename><georss:point>44.8832982 -93.2830021</georss:point><georss:box>44.793216199999996 -93.4409306 44.9733802 -93.125073600000007</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-6367262830549811187</id><published>2012-03-01T18:52:00.001-08:00</published><updated>2012-03-05T15:55:51.775-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 4"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod."/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod9"/><category scheme="http://www.blogger.com/atom/ns#" term="droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="droid2. telcel"/><category scheme="http://www.blogger.com/atom/ns#" term="Icecream sandwitch"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2"/><title type='text'>Cyanogenmod 9 en Droid 2 Global</title><content type='html'>Hola que tal a Todos, les tengo muy buenas noticias, se ha estado trabajando duro en el porte de Cyanogenmod 9 para el droid 2 global y les quiero comentar que el build que se hizo el dia de hoy es bastante bueno, los dos grandes problemas que se tenian anteriormente era con los datos 3g en las redes GSM y la camara. En este build ya se puede configurar la red de datos al 100 % y la camara aun presenta unos pequeños problemas que esperemos podamos corregir en los dias siguientes.&lt;br /&gt;
Muchas gracias a Gasai Yuno, X13thangelx, entre otros y a la gente de rootzwiki.&lt;br /&gt;
&lt;br /&gt;
A continuacion les dejo los links de donde descargar el rom para su instalacion. Es necesario estar en kernel de gingerbread y flashear los siguientes archivos utilizando clockworkmod recovery. &lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;CM9: http://droid.koumakan.jp/files/CM9-D2G-2012-03-01-gasai.zip&lt;/strike&gt;&lt;br /&gt;
Gapps: http://goo-inside.me/gapps/gapps-ics-20120215-signed.zip&lt;br /&gt;
&lt;br /&gt;
Si alguien quiere seguir el post oficial en rootzwiki pueden hacerlo en esta pagina: http://rootzwiki.com/topic/17976-cyanogenmod-9-unofficial-for-droid-2-global-ics403-update-30112/&lt;br /&gt;
&lt;br /&gt;
En los siguientes dias estare platicando muy de cerca con x13thangelx y los demas developers para poder traer nuevas versiones estables. Si deciden probarlo y encuentran algun bug no olviden reportarlo. Ya sea en este blog on directamente a los developers.&lt;br /&gt;
&lt;br /&gt;
Aqui les dejo unos screens de como se ve mi cel.&lt;br /&gt;
Saludos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UPDATE: Una disculpa pero detectamos un error en las llamadas GSM el telefono falla al enviar llamadas y algunas veces al recibir. No usen el link por fas haremos otro build desde donde podamos probar de nuevo.&lt;br /&gt;
Saludos y una disculpa &lt;br /&gt;
&lt;br /&gt;
UPDATE 2: actualmente estoy probando un nuevo build que esta funcionando muy bien, todo menos la camara funciona bien. Este desarrollo marcha muy bien, pueden encontrar los builds que hace el desarrollador manualmente en el siguiente link:&lt;br /&gt;
http://synibox.info/synik4l/x13thangelx/D2G/cm9/&lt;br /&gt;
yo estoy probando este build.&lt;br /&gt;
http://synibox.info/synik4l/x13thangelx/D2G/cm9/CM9-D2G-03012012r3.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFzMOfxoISYZGBVC0ERaKrWN-8PxLziHGpYFJmOCNsomQ1WKNKAVzhu6lkkpLlsk4HIaHTErNB1IVSVKpxRIJEEBaRHaP6CJr5bTnYLlNNhDLSOxKPKcYieFX5Fi849QyLo3GENcJleD4/s1600/device-2012-03-01-194744.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFzMOfxoISYZGBVC0ERaKrWN-8PxLziHGpYFJmOCNsomQ1WKNKAVzhu6lkkpLlsk4HIaHTErNB1IVSVKpxRIJEEBaRHaP6CJr5bTnYLlNNhDLSOxKPKcYieFX5Fi849QyLo3GENcJleD4/s320/device-2012-03-01-194744.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh7bz0L5fC6VIk5lGRsIB81pxZ4OnN2039xRqdct7EeNosJFzhETWb1zWAe6vUbOwAMOy_blazUujWMeZRfNaO35_bGlvsIzUNGlRwDjlRbLswSWwmk1fwJgNGO1bCg_lte9QzkdDuETU/s1600/device-2012-03-01-194807.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh7bz0L5fC6VIk5lGRsIB81pxZ4OnN2039xRqdct7EeNosJFzhETWb1zWAe6vUbOwAMOy_blazUujWMeZRfNaO35_bGlvsIzUNGlRwDjlRbLswSWwmk1fwJgNGO1bCg_lte9QzkdDuETU/s320/device-2012-03-01-194807.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyAOuAKQdnnFeqlV59b6W0ISJ3wIhd_GfCrkgZEHkXqRm6M01WN_xeafagZFWMvZQusI_67H0g98XHiGVve1QayHJ1spFq6lcQX5rU0rL5j33dq8tG1iSCz0O3BoZ9k3sVCznNSEE8xrA/s1600/device-2012-03-01-194832.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyAOuAKQdnnFeqlV59b6W0ISJ3wIhd_GfCrkgZEHkXqRm6M01WN_xeafagZFWMvZQusI_67H0g98XHiGVve1QayHJ1spFq6lcQX5rU0rL5j33dq8tG1iSCz0O3BoZ9k3sVCznNSEE8xrA/s320/device-2012-03-01-194832.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMXLAE204cBPzOYQMiwRdxeUfIdwZ15K9qNsTaZU0W1k8zV8eEOZY3ct0S-bTyiCF4mYr7pmwGuramMocr47yMF_ORdBtpFm76wjYzNdED16X_S-FcJxxS1H_F-Dofochg9AhZ_oFETV4/s1600/device-2012-03-01-194849.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMXLAE204cBPzOYQMiwRdxeUfIdwZ15K9qNsTaZU0W1k8zV8eEOZY3ct0S-bTyiCF4mYr7pmwGuramMocr47yMF_ORdBtpFm76wjYzNdED16X_S-FcJxxS1H_F-Dofochg9AhZ_oFETV4/s320/device-2012-03-01-194849.png&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/6367262830549811187/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/03/cyanogenmod-9-en-droid-2-global.html#comment-form' title='53 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6367262830549811187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/6367262830549811187'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/03/cyanogenmod-9-en-droid-2-global.html' title='Cyanogenmod 9 en Droid 2 Global'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFzMOfxoISYZGBVC0ERaKrWN-8PxLziHGpYFJmOCNsomQ1WKNKAVzhu6lkkpLlsk4HIaHTErNB1IVSVKpxRIJEEBaRHaP6CJr5bTnYLlNNhDLSOxKPKcYieFX5Fi849QyLo3GENcJleD4/s72-c/device-2012-03-01-194744.png" height="72" width="72"/><thr:total>53</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-7119342111587071391</id><published>2012-01-31T10:25:00.000-08:00</published><updated>2012-01-31T10:25:47.425-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Icecream sandwitch"/><category scheme="http://www.blogger.com/atom/ns#" term="isc"/><title type='text'>Ice cream Sandwich Alpha para Droid 2 Global</title><content type='html'>Hola que tal a todos, un saludo y gracias por seguir el blog. Ultimamente he estado ocupado tratando de ayudar a la gente de RevNumbers y Cyanogenmod para poder obtener una rom estable de Cyanogenmod 7 para el&amp;nbsp;teléfono; mas sin embargo les tengo malas noticias al parecer el desarrollo se termino para esta rom, ya no han sacado nuevas versiones de prueba y el desarrollo no ha avanzado mucho. La buena noticia es que la gente ya esta trabajando en la&amp;nbsp;versión&amp;nbsp;de CM9 basado en&amp;nbsp;ice cream&amp;nbsp;sandwich para el Droid 2 global, en esta&amp;nbsp;etapa existen algunos alpha releases pero aun no funciona el&amp;nbsp;teléfono&amp;nbsp;al 100%.&lt;br /&gt;
Por los reportes que se han echo estas son las funcionalidades que&amp;nbsp;están&amp;nbsp;soportadas al momento.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;background-color: #999999;&quot;&gt;Funciona&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;background-color: #999999;&quot;&gt;No Funciona&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audio&lt;/td&gt;
&lt;td&gt;Teclado (algunas teclas se menciona la b y alts)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth&lt;/td&gt;
&lt;td&gt;Camara&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wifi &lt;/td&gt;
&lt;td&gt;3G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aceleración 2D/3D&lt;/td&gt;
&lt;td&gt;GSM Radio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sensores (Giroscopio, etc)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CDMA&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Escalación del CPU&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
Ya estoy trabajando en un build y un post sobre una manera sencilla de instalarlo y probarlo, por el momento a mi me dio mucha lata en el cel y&amp;nbsp;volví&amp;nbsp;a CM7 pero es bueno saber que el cel no se esta quedando olvidado en los desarrollos de ISC. Existen algunos rumores de que motorola no actualizara a ISC de manera oficial&amp;nbsp;así&amp;nbsp;que para nosotros los que queramos tener android 4 en el D2G va a ser necesario seguir muy de cerca estos releases de CM9.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Espero poder tenerles pronto mas noticias sobre estos builds. Si alguien quiere seguir el thread oficial aqui les dejo el link a &lt;a href=&quot;http://rootzwiki.com/topic/12291-romicsdroid2-global-cm9-with-gb-kernel/&quot;&gt;rootzwiki&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Saludos a todos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Estas son unas&amp;nbsp;imágenes&amp;nbsp;sobre el alpha build de CM9.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4e6P8l1z3TvmCZNq72_8cLKSpXNATiWlnsUOdERzqMP4RTUXOaPusoHPYyBMLyQ00cnaWFQ9RtPhSfkJZmWB3PJXB0I89NBCP4MsIebyb6IAX3wpR17d3vm5dCobypfvmC-sJHtbEsDI/s1600/hnC60.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4e6P8l1z3TvmCZNq72_8cLKSpXNATiWlnsUOdERzqMP4RTUXOaPusoHPYyBMLyQ00cnaWFQ9RtPhSfkJZmWB3PJXB0I89NBCP4MsIebyb6IAX3wpR17d3vm5dCobypfvmC-sJHtbEsDI/s320/hnC60.jpg&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QhaWh5P9EgkAbdAw7aW0S-VGT97y1z3w-nyClAvwBUok-vtBEnilIC38fv-HJHmonVlQHUYhJXZpyPkkjweGEyVh0qI0pkKFX0kN5Og_t2M6iucdo22HsPU1NcjYmO_fW_crByrWfeA/s1600/fnhdc.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QhaWh5P9EgkAbdAw7aW0S-VGT97y1z3w-nyClAvwBUok-vtBEnilIC38fv-HJHmonVlQHUYhJXZpyPkkjweGEyVh0qI0pkKFX0kN5Og_t2M6iucdo22HsPU1NcjYmO_fW_crByrWfeA/s320/fnhdc.jpg&quot; width=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/7119342111587071391/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/01/ice-cream-sandwich-alpha-para-droid-2.html#comment-form' title='38 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7119342111587071391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7119342111587071391'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/01/ice-cream-sandwich-alpha-para-droid-2.html' title='Ice cream Sandwich Alpha para Droid 2 Global'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4e6P8l1z3TvmCZNq72_8cLKSpXNATiWlnsUOdERzqMP4RTUXOaPusoHPYyBMLyQ00cnaWFQ9RtPhSfkJZmWB3PJXB0I89NBCP4MsIebyb6IAX3wpR17d3vm5dCobypfvmC-sJHtbEsDI/s72-c/hnC60.jpg" height="72" width="72"/><thr:total>38</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-8295579086212551306</id><published>2012-01-16T12:00:00.000-08:00</published><updated>2013-03-12T09:32:49.178-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android 2.3"/><category scheme="http://www.blogger.com/atom/ns#" term="android gingerbread"/><category scheme="http://www.blogger.com/atom/ns#" term="android market"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod7"/><category scheme="http://www.blogger.com/atom/ns#" term="droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="froyo"/><category scheme="http://www.blogger.com/atom/ns#" term="gingerbread"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2"/><category scheme="http://www.blogger.com/atom/ns#" term="rom manager"/><category scheme="http://www.blogger.com/atom/ns#" term="Terminal emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="usbd"/><category scheme="http://www.blogger.com/atom/ns#" term="Verizon"/><title type='text'>Cyanogen Mod 7.1.0 estable en Motorola Droid 2 Global 2/2</title><content type='html'>Actualizacion: Con el tempo las roms de este telefono han cambiado mucho. Algunos de los pasos aqui mostrados como hacer root ya no funcionan. Por favor vean este video:&amp;nbsp;https://www.youtube.com/watch?v=oHQS7r7ADOw&lt;br /&gt;
&lt;br /&gt;
Esta es la segunda parte de como instalar CM7 estable en nuestro droid 2 global, la primera parte se trato de como volver a la&amp;nbsp;versión&amp;nbsp;2.4.330 de Verizon y obtener permisos de root, esto es&amp;nbsp;básico&amp;nbsp;para poder instalar nuestro room y lo pueden consultar&amp;nbsp;&lt;a href=&quot;http://blogti3r.blogspot.com/2012/01/cyanogen-mod-710-estable-en-motorola.html&quot;&gt;aquí&lt;/a&gt;. Ahora si una vez que tengamos todo listo (software de Verizon y root access) iniciamos por instalar las aplicaciones necesarias.&lt;br /&gt;
&lt;br /&gt;
INSTALAR ROM MANAGER Y CWM RECOVERY.&lt;br /&gt;
Dentro del Android Market buscamos la&amp;nbsp;aplicación&amp;nbsp;Rom Manager Free y la instalamos. El logo de la aplicacion debe de ser como el&amp;nbsp;siguiente:&lt;br /&gt;
&lt;span id=&quot;goog_1875491019&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1875491020&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqrntwho4QNKWlFL9cld1hgVS2cPNy66q1epubJ5VS_9vluG9QaObL43eqo6fZLXCzg8jviJdGk1dbUBemP7GWIbhE2D3wopYiL4XKZpmyESzsL5u2V9_BJ5Hg_mcZ-bVVfuXCM0AJWas/s1600/icon_rommanager.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqrntwho4QNKWlFL9cld1hgVS2cPNy66q1epubJ5VS_9vluG9QaObL43eqo6fZLXCzg8jviJdGk1dbUBemP7GWIbhE2D3wopYiL4XKZpmyESzsL5u2V9_BJ5Hg_mcZ-bVVfuXCM0AJWas/s1600/icon_rommanager.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Una vez que tengamos instalada la&amp;nbsp;aplicación&amp;nbsp;es necesario que instalemos ClockWorkMod Recovery esto se hace seleccionando la primera&amp;nbsp;opción&amp;nbsp;del la&amp;nbsp;aplicación. &quot;Flash ClockWork...&quot; este pequeño programa es necesario para instalar CM7 mas sin embargo&amp;nbsp;también&amp;nbsp;se pueden instalar otros custom roms desde esta&amp;nbsp;aplicación.&lt;br /&gt;
&lt;br /&gt;
Segundo descargamos CyanogenMod desde rom manager seleccionando Download Rom -&amp;gt; CyanogenMod -&amp;gt; CyanogenMod 7.1.0. Este proceso es tardado por que descarga la imagen desde&amp;nbsp;Internet&amp;nbsp;y pesa algo asi como un poco mas de 100 MB.&amp;nbsp;Así&amp;nbsp;que es necesario que tengas espacio en tu SD card y&amp;nbsp;también&amp;nbsp;es recomendable que&amp;nbsp;utilices&amp;nbsp;Wifi para completar este paso.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4MawfhdXGt5xeF6hrA052Opwj0xE38qKI5It8XnKX2V8Ll3bK_ddWzzONfWHMY8pURnHiO8E2Fvy3Z-4NdoYShzhIIy_-Kh6gwhHHlM_8Vbg5Dcp7xx2Jl3hRPfes8icsFhU04wEAuaM/s1600/flascwm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4MawfhdXGt5xeF6hrA052Opwj0xE38qKI5It8XnKX2V8Ll3bK_ddWzzONfWHMY8pURnHiO8E2Fvy3Z-4NdoYShzhIIy_-Kh6gwhHHlM_8Vbg5Dcp7xx2Jl3hRPfes8icsFhU04wEAuaM/s320/flascwm.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tercer paso&amp;nbsp;reiniciar&amp;nbsp;en CWM recovery seleccionando Reiniciar en Recovery desde la&amp;nbsp;aplicación, esto reiniciara el&amp;nbsp;teléfono&amp;nbsp;y lanzara una&amp;nbsp;aplicación&amp;nbsp;en consola para poder instalar el archivo zip que acabamos de descargar en el paso 2. &amp;nbsp;Este programa en consola contiene varias opciones y nos podemos desplazar utilizando las teclas de volumen, para seleccionar una&amp;nbsp;opción&amp;nbsp;utilizamos la tecla de la&amp;nbsp;cámara&amp;nbsp;y para cancelar o regresar a otro&amp;nbsp;menú&amp;nbsp;utilizamos el&amp;nbsp;botón&amp;nbsp;de apagado. Lo que tenemos que seleccionar&amp;nbsp;aquí&amp;nbsp;es lo siguiente.&lt;br /&gt;
Install Zip from SD Card -&amp;gt; Choose Zip y luego navegamos nuestra SD card para encontrar el archivo zip de CM7, Rom manager guarda los archivos descargados en la siguiente ruta,&amp;nbsp;así&amp;nbsp;que&amp;nbsp;ahí&amp;nbsp;pueden encontrar el archivo. sdcard -&amp;gt; clockworkmod -&amp;gt; download -&amp;gt; download.cyanogenmod.com -&amp;gt; get. Seleccionen el archivo y el proceso de&amp;nbsp;instalación&amp;nbsp;debe de iniciar.&lt;br /&gt;
&lt;br /&gt;
Al terminar la&amp;nbsp;instalación&amp;nbsp;seleccionan wipe cache partition y luego wipe data/factory reset para limpiar las posibles configuraciones y caches que puedan causar problemas al rom. Y para finalizar seleccionan reboot now.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgccvNSK4fOdGQsvQsREHilnmKiVgbt09zR9zZ3jtcsINTYr5PVrpGr8ILoswsFC5Qb5TTemqBfSJHG0iYbCLX-RFnE94dN9tjW_a7KH7FSiwLuUUOHO7EtJKe3MZeOLD4IWC68cttEM2Q/s1600/cwm1-300x191.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgccvNSK4fOdGQsvQsREHilnmKiVgbt09zR9zZ3jtcsINTYr5PVrpGr8ILoswsFC5Qb5TTemqBfSJHG0iYbCLX-RFnE94dN9tjW_a7KH7FSiwLuUUOHO7EtJKe3MZeOLD4IWC68cttEM2Q/s1600/cwm1-300x191.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Una vez que el&amp;nbsp;teléfono&amp;nbsp;inicie&amp;nbsp;tendrán&amp;nbsp;CM7 instalado en el celular, yo&amp;nbsp;pensé&amp;nbsp;que esta&amp;nbsp;versión&amp;nbsp;de CM7&amp;nbsp;estaría&amp;nbsp;basada en un kernel anterior a Gingerbread como lo comente en la primera parte del post pero no las configuraciones del sistema muestran que no es&amp;nbsp;así. De los pequeños bugs que detecte fueron algunos problemas con el USB (lo cual&amp;nbsp;escribiré&amp;nbsp;como arreglar un poco mas abajo) y el bluetooth el cual no he terminado de probar, aunque en otras versiones tampoco&amp;nbsp;había&amp;nbsp;sido capas de transferir archivos a mi maquina por bluetooth pero&amp;nbsp;seguiré&amp;nbsp;investigando. La verdad es que esta&amp;nbsp;versión&amp;nbsp;funciona bien, pude configurar mis APNs para tener datos sin mayores problemas y me ha estado funcionando bien, hasta el momento la pila me ha durado igual que con el software anterior pero yo creo que eso ya es problema de la&amp;nbsp;batería&amp;nbsp;y aparte lo traigo muy cargado de aplicaciones y servicios. Espero que se animen a probarlo y comenten que tal les va con el rom, yo&amp;nbsp;seguiré&amp;nbsp;probando nuevas versiones y espero que pronto tengamos mas avances para el cel y que no nos olviden en la&amp;nbsp;actualización&amp;nbsp;a ISC.&lt;br /&gt;
&lt;br /&gt;
ARREGLAR PROBLEMA DE USB&lt;br /&gt;
&lt;br /&gt;
Uno de los bugs que se notan mas&amp;nbsp;fácilmente&amp;nbsp;al instalar esta&amp;nbsp;versión&amp;nbsp;de CM7 es la&amp;nbsp;conexión&amp;nbsp;por usb, al conectarlo a la computadora el cel no es reconocido es necesario reiniciar el&amp;nbsp;teléfono&amp;nbsp;con el usb conectado para que sea detectado y poder transferir archivos. Este problema se debe al demonio usbd y a la&amp;nbsp;aplicación&amp;nbsp;de usb &amp;nbsp;que&amp;nbsp;están&amp;nbsp;corriendo en el sistema es necesario sobre escribir estas aplicaciones para que funcionen correctamente.&lt;br /&gt;
Lo primero que tenemos que hacer es descargar las versiones corregidas a nuestra maquina el paquete de descarga lo pueden encontrar en el siguiente post y extraemos el contenido en una carpeta del sistema:&lt;br /&gt;
&lt;a href=&quot;http://forum.xda-developers.com/showpost.php?s=530b31bd31968624b953bd99d85d7bd2&amp;amp;p=19768896&amp;amp;postcount=34&quot;&gt;http://forum.xda-developers.com/showpost.php?s=530b31bd31968624b953bd99d85d7bd2&amp;amp;p=19768896&amp;amp;postcount=34&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Segundo pasamos los archivos a nuestra SD card, podemos utilizar el&amp;nbsp;teléfono&amp;nbsp;reiniciandolo para que lo reconozca la pc como mencione anteriormente o podemos sacar nuestra SD y pasarlos directamente. Deben de ser dos archivos usdb y usb.apk.&lt;br /&gt;
&lt;br /&gt;
Luego lanzamos la&amp;nbsp;aplicación&amp;nbsp;Terminal Emulator (la cual debe de venir instalada en CM7 o la podemos descargar del market), la cual nos muestra una terminal de linux donde ejecutaremos una serie de&amp;nbsp;comandos. Tratare de explicarlos uno por uno por si existe alguna duda, recuerden que estas lineas se basan en que usdb y usb.apk se encuentran en la&amp;nbsp;raíz&amp;nbsp;de su SD Card si guardaron los archivos dentro de alguna otra carpeta va a ser necesario que ajusten los paths.&lt;br /&gt;
&lt;br /&gt;
Los comandos son:&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;su&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para obtener permisos de root, en este paso superuser les pedira confirmacion.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para montar el sistema de archivos donde se encuentran las aplicaciones del sistema en modo lectura/escritura&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;cp /system/bin/usbd /system/bin/usbd_old&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para respaldar el actual demonio de usb con el nombre usbd_old&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;cp /sdcard/Usb.apk /system/app&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para instalar la aplicacion de monitoreo de usb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;rm /system/bin/usbd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para borrar el demonio actual de usbd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;cp /sdcard/usbd /system/bin/usbd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para copiar el demonio correcto al sistema&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;chown root.root /system/bin/usbd&lt;/span&gt;&lt;br style=&quot;background-color: white; line-height: 18px;&quot; /&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;chmod 755 /system/bin/usbd&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;chmod 644 /system/app/Usb.apk&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#para dar los permisos necesarios a las nuevas aplicaciones.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez que terminemos reniciamos&amp;nbsp;y con esto el&amp;nbsp;teléfono&amp;nbsp;ya&amp;nbsp;podrá&amp;nbsp;ser reconocido por la pc sin necesidad de estar apagando y prendiendo el cel como locos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bueno espero y estos posts les sean de ayuda y se animen a probar CyanogenMod la verdad a mi me gusta mucho mas que el rom original de Verizon y aun y cuando aun tengo algunos pequeños bugs funciona mas estable y&amp;nbsp;rápido&amp;nbsp;que otras versiones. Ojala y los night builds que nos ofrecen las personas de RevNumbers sigan mejorando y podamos tener pronto nuevas versiones estables de este grandioso ROM.&lt;br /&gt;
&lt;br /&gt;
Un saludo a todos y espero no tardarme tanto tiempo en volver a escribir y tener noticias de los lectores.</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/8295579086212551306/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/01/cyanogen-mod-710-estable-en-motorola_16.html#comment-form' title='52 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8295579086212551306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/8295579086212551306'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/01/cyanogen-mod-710-estable-en-motorola_16.html' title='Cyanogen Mod 7.1.0 estable en Motorola Droid 2 Global 2/2'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqrntwho4QNKWlFL9cld1hgVS2cPNy66q1epubJ5VS_9vluG9QaObL43eqo6fZLXCzg8jviJdGk1dbUBemP7GWIbhE2D3wopYiL4XKZpmyESzsL5u2V9_BJ5Hg_mcZ-bVVfuXCM0AJWas/s72-c/icon_rommanager.png" height="72" width="72"/><thr:total>52</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-1916020905613965555</id><published>2012-01-16T11:59:00.000-08:00</published><updated>2013-03-12T09:31:46.475-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android 2.3"/><category scheme="http://www.blogger.com/atom/ns#" term="android froyo"/><category scheme="http://www.blogger.com/atom/ns#" term="android gingerbread"/><category scheme="http://www.blogger.com/atom/ns#" term="apk"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod7"/><category scheme="http://www.blogger.com/atom/ns#" term="droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="flashear"/><category scheme="http://www.blogger.com/atom/ns#" term="gingerbread"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2"/><category scheme="http://www.blogger.com/atom/ns#" term="recovery"/><category scheme="http://www.blogger.com/atom/ns#" term="rom manager"/><category scheme="http://www.blogger.com/atom/ns#" term="RSD Lite"/><category scheme="http://www.blogger.com/atom/ns#" term="sbf"/><category scheme="http://www.blogger.com/atom/ns#" term="sbf_flash"/><category scheme="http://www.blogger.com/atom/ns#" term="supersuer"/><category scheme="http://www.blogger.com/atom/ns#" term="Verizon"/><title type='text'>Cyanogen Mod 7.1.0 estable en Motorola Droid 2 Global 1/2</title><content type='html'>Actualizacion: Con el tempo las roms de este telefono han cambiado mucho. Algunos de los pasos aqui mostrados para hacer root ya no funcionan. Por favor vean este video:&amp;nbsp;https://www.youtube.com/watch?v=oHQS7r7ADOw&lt;br /&gt;
&lt;br /&gt;
Hola que tal a todos, buen año. Una disculpa por haber tardado tanto en escribir en el blog pero el fin e inicio de año fue una locura. Mas sin embargo estar alejado de la compu me dio la oportunidad de probar y exprimir el cel a todo lo que da asi que probe el desempeño de algunas night builds y versiones de CM7. Ahora les quiero platicar como instalar CM7 Estable, en el cel. Gracias a jesus que me animo a probar esta&amp;nbsp;versión, ya tiene&amp;nbsp;algún&amp;nbsp;rato que fue lanzada pero por los comentarios y las&amp;nbsp;guías&amp;nbsp;de&amp;nbsp;instalación&amp;nbsp;yo&amp;nbsp;pensé&amp;nbsp;que&amp;nbsp;estaría&amp;nbsp;basada en Froyo y cual fue mi sorpresa que no, el kernel es 2.6.32-9 y la&amp;nbsp;versión&amp;nbsp;de android base es 2.3.7&amp;nbsp;así&amp;nbsp;que como pueden ver es una&amp;nbsp;versión&amp;nbsp;estable basada en Gingerbread, aun sigo probando los night builds que genera RevNumbers para ver si podemos tener una&amp;nbsp;versión&amp;nbsp;mas nueva de CM7, en cuanto tenga algo&amp;nbsp;también&amp;nbsp;les escribire al respecto.&lt;br /&gt;
&lt;br /&gt;
La forma mas&amp;nbsp;fácil&amp;nbsp;de instalar el rom es utilizando Rom Manager que se puede descargar desde el Android Market, pero no todo puede ser miel sobre hojuelas, los requisitos son que el cel cuente con root y que se encuentre en la&amp;nbsp;versión&amp;nbsp;oficial de verizon 2.4.33;&amp;nbsp;así&amp;nbsp;que si alguno de ustedes cumple con los requisitos pasen directamente a la&amp;nbsp;sección&amp;nbsp;de&amp;nbsp;instalación. Los que no, pues necesitan leer primero estas lineas.&lt;br /&gt;
&lt;br /&gt;
INSTALAR VERSION OFICIAL VERIZON 2.4.33&lt;br /&gt;
&lt;br /&gt;
Si su cel cuenta con la&amp;nbsp;versión&amp;nbsp;mas nueva del software de Verizon (la cual tanto esperamos y para mi fue decepcionante) o si cuentan con&amp;nbsp;algún&amp;nbsp;otro custom rom, lo primero que necesitamos es volver a la&amp;nbsp;versión&amp;nbsp;inicial del celular. Estos pasos ya los&amp;nbsp;había&amp;nbsp;publicado en otros posts pero no esta de mal recordarlos.&lt;br /&gt;
Lo primero que necesitamos es la imagen sbf de esta version del sistema, la cual se puede descargar desde el siguiente link:&amp;nbsp;&lt;a href=&quot;http://www.multiupload.com/FIW8B8TJ7I&quot;&gt;http://www.multiupload.com/FIW8B8TJ7I&lt;/a&gt;&amp;nbsp;o si gustan pueden ponerse en contacto con migo por correo y yo se los paso. (creo que el archivo esta comprimido es necesario descomprimirlo para que nos quede el archivo sbf en una carpeta).&lt;br /&gt;
&lt;br /&gt;
Dos necesitamos RSD Lite o sbf_flash para poder flashear esta&amp;nbsp;imagen&amp;nbsp;a nuestro&amp;nbsp;celular, como mi computadora tiene linux utilizare sbf_flash pero RSD Lite no es muy&amp;nbsp;difícil&amp;nbsp;de usar y los pasos base son los mismos solo el flasheo es el que cambia. Los dos softwares se pueden obtener desde&amp;nbsp;aquí:&lt;br /&gt;
RSD Lite:&amp;nbsp;&lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=1348587&quot;&gt;http://forum.xda-developers.com/showthread.php?t=1348587&lt;/a&gt;&lt;br /&gt;
sbf_flash:&amp;nbsp;&lt;a href=&quot;http://blog.opticaldelusion.org/search/label/sbf_flash&quot;&gt;http://blog.opticaldelusion.org/search/label/sbf_flash&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Tres una vez que tengamos los requerimientos los ponemos juntos en una misma carpeta, conectamos el&amp;nbsp;teléfono&amp;nbsp;a usb y reiniciamos en modo recovery, esto es apagamos el&amp;nbsp;teléfono, presionamos ambas teclas de volumen y prendemos el cel. Una pantalla negra con letras blancas debe de aparecer que diga usb.&lt;br /&gt;
&lt;br /&gt;
Ya con todo listo ejecutamos sbf_flash como root y con el siguiente comando:&lt;br /&gt;
sbf_flash &lt;archiivo_sbf&gt;.sbf, la pantalla del&amp;nbsp;teléfono&amp;nbsp;debe de cambiar a la leyenda &quot;software update in progress&quot;. Esto quiere decir que la imagen esta siendo cargada, es importante no desconectar el&amp;nbsp;teléfono&amp;nbsp;ni apagar la pc por que si no la imagen quedara a medio cargar y no se&amp;nbsp;podrá&amp;nbsp;utilizar, hasta que se cargue correctamente.&lt;/archiivo_sbf&gt;&lt;br /&gt;
&lt;br /&gt;
Nota: si utilizan RSD Lite solo el tercer paso&amp;nbsp;cambiaría, seleccionen la imagen y presionen el&amp;nbsp;botón&amp;nbsp;start.&amp;nbsp;aquí&amp;nbsp;les dejo una imagen de como se&amp;nbsp;vería&amp;nbsp;en windows.&amp;nbsp;También&amp;nbsp;es importante saber que si&amp;nbsp;están&amp;nbsp;utilizando esto bajo windows es necesario instalar los drivers de Motorola para que el&amp;nbsp;teléfono&amp;nbsp;pueda ser detectado. Los cuales los descargan desde&amp;nbsp;aquí:&amp;nbsp;&lt;a href=&quot;http://www.motorola.com/Support/US-EN/Support-Homepage/Software_and_Drivers/USB-and-PC-Charging-Drivers&quot;&gt;http://www.motorola.com/Support/US-EN/Support-Homepage/Software_and_Drivers/USB-and-PC-Charging-Drivers&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwCbNwG8t4LKDs6saem7Em08Uk_Z9BgE2K6jrVXt3P7Il4uDEERffIzOarIJOJ2Ewhqk9O6igjCrswbFzU8z5V5c9uAVOl_Ra9S_KjSAC6UV_Hla18tWKyegvzoEcgpK9yrtp4XrepriM/s1600/RSD+LIte.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;189&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwCbNwG8t4LKDs6saem7Em08Uk_Z9BgE2K6jrVXt3P7Il4uDEERffIzOarIJOJ2Ewhqk9O6igjCrswbFzU8z5V5c9uAVOl_Ra9S_KjSAC6UV_Hla18tWKyegvzoEcgpK9yrtp4XrepriM/s320/RSD+LIte.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Al terminar este paso y prender el&amp;nbsp;celular&amp;nbsp;normalmente el&amp;nbsp;teléfono&amp;nbsp;iniciara como si fuera&amp;nbsp;recién&amp;nbsp;sacado de la caja, con la&amp;nbsp;versión&amp;nbsp;oficial de&amp;nbsp;Motorola&amp;nbsp;y&amp;nbsp;des configurado, es necesario configurar tus cuentas e&amp;nbsp;información&amp;nbsp;de nuevo; cabe mencionar que si el&amp;nbsp;teléfono&amp;nbsp;fue desbloqueado para poder utilizarse en redes GSM u otra red que no es Verizon, esto se quedara igual. No sera necesario desbloquearlo de nuevo.&lt;br /&gt;
&lt;br /&gt;
TENER ROOT PARA EL TELEFONO&lt;br /&gt;
&lt;br /&gt;
Luego de tener la&amp;nbsp;versión&amp;nbsp;original de Verizon en nuestro&amp;nbsp;teléfono&amp;nbsp;es necesario permitir acceso de root a varias aplicaciones o rootear el&amp;nbsp;teléfono&amp;nbsp;como mucha gente le llama, este paso es muy sencillo y utilizaremos pete&#39;s motorola root tools para realizarlo. Lo que necesitamos es descargar las herramientas desde la siguiente&amp;nbsp;dirección:&lt;br /&gt;
&lt;a href=&quot;http://www.mediafire.com/?2ugcdue4cw7dtc5&quot;&gt;http://www.mediafire.com/?2ugcdue4cw7dtc5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
o desde&amp;nbsp;aquí&amp;nbsp;si estas utilizando Windows&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/6643359/Software/Android/PetesMotorolaRootTools_v1.07.zip&quot;&gt;http://dl.dropbox.com/u/6643359/Software/Android/PetesMotorolaRootTools_v1.07.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
extraemos el contenido de los zips en una carpeta y conectamos el&amp;nbsp;teléfono&amp;nbsp;a la computadora, y seleccionamos la&amp;nbsp;opción&amp;nbsp;de &quot;charge only&quot; para que la&amp;nbsp;tarjeta&amp;nbsp;sd no sea&amp;nbsp;extraída.&lt;br /&gt;
Luego habilitamos el usb debugging en el&amp;nbsp;teléfono&amp;nbsp;en el&amp;nbsp;menú&amp;nbsp;de configuraciones - Aplicaciones - Desarrollo - depuración&amp;nbsp;usb.&lt;br /&gt;
&lt;br /&gt;
Y al final ejecutamos run_to_root_your_droid3.sh como root o si estas en windows MotorolaOneClickRoot.exe, el programa te ira mostrando mensajes de que es lo que va pasando y ara que el&amp;nbsp;teléfono&amp;nbsp;se reinicie varias veces. Al terminar y si todo sale bien ya&amp;nbsp;tendrás&amp;nbsp;acceso de root en el&amp;nbsp;teléfono&amp;nbsp;y una nueva&amp;nbsp;aplicación&amp;nbsp;instalada que se llama superuser.&lt;br /&gt;
Aun y cuando estas herramientas&amp;nbsp;están&amp;nbsp;echas para el droid3 y en algunas partes especifica que es para droid3 si funcionan en este dispositivo. Pueden consultar mas&amp;nbsp;información&amp;nbsp;en la pagina oficial de pete&#39;s&amp;nbsp;&lt;a href=&quot;http://www.psouza4.com/Bionic/&quot;&gt;http://www.psouza4.com/Bionic/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyLGx7wxgpxfyzHMvjZATxn-z-BDPVzMkN1ROH_HaljlHnESISU80cnrrH0zI2jvXibADfwga_E8sE5VYIsdpnv1GbqxizGLman5WGJXQ-muV-rTCxd3Z5PeEd1a5Hv1UqHoKq3fbLKO4/s1600/superuser.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyLGx7wxgpxfyzHMvjZATxn-z-BDPVzMkN1ROH_HaljlHnESISU80cnrrH0zI2jvXibADfwga_E8sE5VYIsdpnv1GbqxizGLman5WGJXQ-muV-rTCxd3Z5PeEd1a5Hv1UqHoKq3fbLKO4/s200/superuser.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nHYz4dEyAg1c5JThNoddlQHFAoeMLb4NlpBYH-IYnzfiaYPAMDCwHnE1dmNZMNNLAJFSRp5G7QBabgf6QUwMM-RaGYk3vMD_mwN_fPeGyIGrz-9rqUMt9_3p_mid_azax-387m7znb4/s1600/windowsoneclick.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6nHYz4dEyAg1c5JThNoddlQHFAoeMLb4NlpBYH-IYnzfiaYPAMDCwHnE1dmNZMNNLAJFSRp5G7QBabgf6QUwMM-RaGYk3vMD_mwN_fPeGyIGrz-9rqUMt9_3p_mid_azax-387m7znb4/s320/windowsoneclick.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/1916020905613965555/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2012/01/cyanogen-mod-710-estable-en-motorola.html#comment-form' title='9 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1916020905613965555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1916020905613965555'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2012/01/cyanogen-mod-710-estable-en-motorola.html' title='Cyanogen Mod 7.1.0 estable en Motorola Droid 2 Global 1/2'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwCbNwG8t4LKDs6saem7Em08Uk_Z9BgE2K6jrVXt3P7Il4uDEERffIzOarIJOJ2Ewhqk9O6igjCrswbFzU8z5V5c9uAVOl_Ra9S_KjSAC6UV_Hla18tWKyegvzoEcgpK9yrtp4XrepriM/s72-c/RSD+LIte.jpeg" height="72" width="72"/><thr:total>9</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-7448724391397791985</id><published>2011-12-07T12:40:00.001-08:00</published><updated>2011-12-09T15:23:37.903-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android 2.3"/><category scheme="http://www.blogger.com/atom/ns#" term="android market"/><category scheme="http://www.blogger.com/atom/ns#" term="cyanogenmod7"/><category scheme="http://www.blogger.com/atom/ns#" term="droid 2 global"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="motorola droid 2"/><category scheme="http://www.blogger.com/atom/ns#" term="revnumbers"/><category scheme="http://www.blogger.com/atom/ns#" term="rom manager"/><category scheme="http://www.blogger.com/atom/ns#" term="rom toolbox"/><category scheme="http://www.blogger.com/atom/ns#" term="Verizon"/><title type='text'>Cyanogenmod 7 en Droid 2 Global</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_0l0Z9BPFxjo2YhU7bl71Bmn8r4isOgcYNf1krm7ev6iKYQOwKXPw3xyEIJ_CTIb5Dy-dVNq-bCmIp_87pBZzdnO5_jA9uMe051HShPiRolvnMEvO4v0HNLcClxzOgm6ZZAOmVDVNsOE/s1600/cyano.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;68&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_0l0Z9BPFxjo2YhU7bl71Bmn8r4isOgcYNf1krm7ev6iKYQOwKXPw3xyEIJ_CTIb5Dy-dVNq-bCmIp_87pBZzdnO5_jA9uMe051HShPiRolvnMEvO4v0HNLcClxzOgm6ZZAOmVDVNsOE/s320/cyano.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheyUEO2yqC2IyUcWERhWe3Il5SV0fekUm2UhcGYzfSiytQCmfGSz487e46_E7SH36lEs-BvgC5PNlsv7u1YcAo5-32X1DoFEGXYmTyeluPwzLgyl2MCAe8Ud60Epa1RCp9VzYyX_oATL4/s1600/droid2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheyUEO2yqC2IyUcWERhWe3Il5SV0fekUm2UhcGYzfSiytQCmfGSz487e46_E7SH36lEs-BvgC5PNlsv7u1YcAo5-32X1DoFEGXYmTyeluPwzLgyl2MCAe8Ud60Epa1RCp9VzYyX_oATL4/s200/droid2.jpg&quot; width=&quot;98&quot; /&gt;&lt;/a&gt;Hola que tal a todos, solo les&amp;nbsp;quería&amp;nbsp;comentar que no estaba muerto solo andaba de parranda :P. Ya hacia un buen rato que no&amp;nbsp;escribía&amp;nbsp;en el blog y me disculpo por eso, el trabajo ha estado medio pesado y estaba haciendo muchos experimentos con el&amp;nbsp;teléfono. En las ultimas semanas&amp;nbsp;había&amp;nbsp;estado haciendo muchas pruebas con cyanogenmod para poder utilizar este rom en nuestro telefono, la verdad es que es muy bueno pero aun el soporte para nuestro&amp;nbsp;teléfono&amp;nbsp;no es oficial, tras varios intentos y muchas pruebas les puedo comentar que es posible instalar y utilizar mas sin embargo existe un bug que no me deja agregar APNs, cuando el&amp;nbsp;teléfono&amp;nbsp;es agregado a una red GSM&amp;nbsp;existen&amp;nbsp;algunas fallas en el proceso android.phone pero al final funciona. En estos momentos mi&amp;nbsp;teléfono&amp;nbsp;esta pasando por malos momentos, ya no puedo obtener permisos de root, he tenido que flashear de vuelta a verizon 2.4.33 pero ni aun&amp;nbsp;así. Puedo instalar bootstrapper para tratar de flashear diferentes roms pero al parecer superusuario falla y no puedo iniciar en modo recovery. En fin la verdad es que los pocos&amp;nbsp;días&amp;nbsp;que&amp;nbsp;conté&amp;nbsp;con cyanogenmod me funciono muy bien a&amp;nbsp;excepción&amp;nbsp;de los APNs, la interfaz es mas fluida y las aplicaciones son mas vainilla.Aun&amp;nbsp;así&amp;nbsp;esta&amp;nbsp;versión&amp;nbsp;nos sigue presentando la pantalla de bloqueo con el&amp;nbsp;desliz, no es posible quitarlo para tener un bloqueo solo por&amp;nbsp;patrón&amp;nbsp;u&amp;nbsp;algún&amp;nbsp;otro.&lt;br /&gt;
En fin si alguno de ustedes se anima a probarlo&amp;nbsp;aquí&amp;nbsp;les dejo los pasos que&amp;nbsp;seguí&amp;nbsp;para instalarlo.&lt;br /&gt;
&lt;br /&gt;
1. Es necesario estar en la&amp;nbsp;actualización&amp;nbsp;oficial de gingerbread (608) y tener root access.&lt;br /&gt;
2. Luego en el market es necesario instalar Rom Manager y Room Toolbox. El primero es para poder utilizar clockwork recovery y el segundo para descargar los builds nocturnos de cyanogenmod para el D2G ya que Rom Manager te presenta la&amp;nbsp;versión&amp;nbsp;&quot;estable&quot; pero aun no funciona.&lt;br /&gt;
3. Abrir Rom Tool box, luego seleccionan la opcion rom manager y seleccionan el rom RevNumbers CM7 nightlies.&lt;br /&gt;
4. Una vez que este descargado seleccionamos instalar y checamos el box de limpiar cache. Es bueno que antes hagan un respaldo de su imagen seleccionando en el toolbox, room manager luego deslizando a la izq y seleccionando rom backup.&lt;br /&gt;
5. El proceso de&amp;nbsp;instalación&amp;nbsp;reiniciara el&amp;nbsp;teléfono&amp;nbsp;y comenzara a instalar la imagen una vez que se inicie&amp;nbsp;tendrán&amp;nbsp;cyanogenmod 7 en el droid 2 para poder jugar con el.&lt;br /&gt;
&lt;br /&gt;
Un tip, si al reiniciar el&amp;nbsp;teléfono&amp;nbsp;el logo rojo de motorola tarda mucho o se reinicia en la&amp;nbsp;animación&amp;nbsp;del ojo de droid, es necesario quitar la pila del&amp;nbsp;teléfono&amp;nbsp;luego iniciar en modo android recovery (prender el&amp;nbsp;teléfono&amp;nbsp;con ambas teclas de volumen presionadas) y limpiar el cache varias veces (para mostrar el&amp;nbsp;menú&amp;nbsp;presionen de nuevo las teclas de volumen, para moverse entre opciones usen las mismas teclas y para seleccionar usen el&amp;nbsp;botón&amp;nbsp;de bloqueo de pantalla). Se sabe que el&amp;nbsp;teléfono&amp;nbsp;esta por iniciar por que hace una pequeña&amp;nbsp;vibración&amp;nbsp;antes de iniciar.&lt;br /&gt;
&lt;br /&gt;
Bueno espero y el post ayude a algunos a animarse a probar el rom, yo&amp;nbsp;seguiré&amp;nbsp;intentando y flasheando y haciendo muchos tweaks al&amp;nbsp;teléfono&amp;nbsp;hasta que quede algo estable y les comentare mas delante como me fue. Y si alguno de ustedes es desarrollador tal vez me puedan ayudar,&amp;nbsp;últimamente&amp;nbsp;el D2G no funciona en USB debugging en Fedora, acabo de actualizar a FC16 y no he podido configurar udev, en Fedora 15 me funcionaba muy bien. O&amp;nbsp;también&amp;nbsp;tengo un proyecto para un area deportiva para el cual estoy solicitando ayuda, si alguno esta interesado por favor contacteme.&lt;br /&gt;
&lt;br /&gt;
saludos a todos</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/7448724391397791985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2011/12/cyanogenmod-7-en-droid-2-global.html#comment-form' title='52 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7448724391397791985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/7448724391397791985'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2011/12/cyanogenmod-7-en-droid-2-global.html' title='Cyanogenmod 7 en Droid 2 Global'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_0l0Z9BPFxjo2YhU7bl71Bmn8r4isOgcYNf1krm7ev6iKYQOwKXPw3xyEIJ_CTIb5Dy-dVNq-bCmIp_87pBZzdnO5_jA9uMe051HShPiRolvnMEvO4v0HNLcClxzOgm6ZZAOmVDVNsOE/s72-c/cyano.png" height="72" width="72"/><thr:total>52</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3559855180572225356.post-1133138837892485390</id><published>2011-11-21T12:19:00.001-08:00</published><updated>2011-11-21T12:25:31.616-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="China."/><category scheme="http://www.blogger.com/atom/ns#" term="CPU"/><category scheme="http://www.blogger.com/atom/ns#" term="Japon"/><category scheme="http://www.blogger.com/atom/ns#" term="petaflops"/><category scheme="http://www.blogger.com/atom/ns#" term="procesadores"/><category scheme="http://www.blogger.com/atom/ns#" term="super computadoras"/><category scheme="http://www.blogger.com/atom/ns#" term="top 10"/><title type='text'>10 Mejores super-computadoras</title><content type='html'>En esta&amp;nbsp;ocasión&amp;nbsp;me voy a salir un poco sobre el tema de android solo para compartir con ustedes un link que me&amp;nbsp;pareció&amp;nbsp;muy interesante sobre&amp;nbsp;computación. En esta liga de abajo&amp;nbsp;podrán&amp;nbsp;encontrar las 10 mejores super-computadoras y su poder de procesamiento; cabe destacar que&amp;nbsp;Japón&amp;nbsp;y China avanzaron bastante en la&amp;nbsp;construcción&amp;nbsp;de estas maquinas y ahora se encuentran en las primeras posiciones de la lista. Me gusto mucho el articulo ya que muestra&amp;nbsp;imágenes de los equipos y podemos ver como una computadora que tiene mas de 700,00 procesadores y tiene un poder de procesamiento de 10 petaflops por segundo se ve en la vida real.&lt;br /&gt;
&lt;br /&gt;
Me pregunto si en alguna de estas computadoras se&amp;nbsp;podrá&amp;nbsp;instalar Android???&lt;br /&gt;
&lt;br /&gt;
Saludos&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.datacenterknowledge.com/the-top-10-supercomputers-illustrated-nov-2011/&quot;&gt;http://www.datacenterknowledge.com/the-top-10-supercomputers-illustrated-nov-2011/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogti3r.blogspot.com/feeds/1133138837892485390/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://blogti3r.blogspot.com/2011/11/10-mejores-super-computadoras.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1133138837892485390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3559855180572225356/posts/default/1133138837892485390'/><link rel='alternate' type='text/html' href='http://blogti3r.blogspot.com/2011/11/10-mejores-super-computadoras.html' title='10 Mejores super-computadoras'/><author><name>ti3r</name><uri>http://www.blogger.com/profile/08166083183612079131</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsFk7GQyYAzkoIQb8Ky4YWdACwoljhQ3Dq4Ie3QkXdsw4F7RFCr91IjLG7JAh0z4igw5JTx8Z7YIjUbV4dhVcRG3TFWR8iFhwtaPgJQgBatWgKOj6SDfqnQJEVuS4NGk/s220/foto_perfil.png'/></author><thr:total>0</thr:total><georss:featurename>Chihuahua, CHIH, México</georss:featurename><georss:point>28.6352778 -106.0888889</georss:point><georss:box>28.5237863 -106.2468174 28.7467693 -105.9309604</georss:box></entry></feed>