<?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-6269519742589354860</id><updated>2024-08-30T20:29:16.287-07:00</updated><title type='text'>Dispositivos Móviles</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-7179004382913465694</id><published>2012-05-17T22:29:00.000-07:00</published><updated>2012-05-17T22:30:09.830-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Captura y reproducción de Audio</title><content type='html'>Muchas de las veces queremos desarrollar apps para capturar audio y después de ello guardarlas para luego reproducirlas, esto ha impulsado mucho la combinación de notas en audio más la nube que ha sido una combinación perfecta en esta temporada tecnologica.Para ello necesitamos tener un esqueleto de interfaz:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//crea ventana
var win = Titanium.UI.currentWindow;
//variables
var archivo;
var tiempo;
var sonido;
var duracion = 0;

var etiqueta = Titanium.UI.createLabel({
 text: &#39; &#39;,
 top:150,
 color: &#39;#999&#39;,
 textAlign:&#39;center&#39;,
 width: 250,
 height:&#39;auto&#39;
});

win.add(etiqueta);

//label volumen
var volumen = Titanium.UI.createLabel({
 text: &quot;Volumen: &quot;+Ti.Media.volume,
 bottom:50,
 color:&#39;#999&#39;,
 textAlign:&#39;center&#39;,
 width: 250,
 height: &#39;auto&#39;
});
//label de switch
var etiquetaSwitch = Titanium.UI.createLabel({
 text:&#39;Alta fiedilidad: &#39;,
 width: 250,
 height:&#39;auto&#39;,
 textAlign:&#39;center&#39;,
 color:&#39;#999&#39;,
 bottom:115
});
//switch
var switchL = Titanium.UI.createSwitch({
 value:false,
 bottom:80
});

win.add(etiquetaSwitch);
win.add(switchL);
//boton del play
var play = Titanium.UI.createButton({
 title:&#39;Reproduce Grabacion&#39;,
 width:200,
 height:40,
 top:80
 });
win.add(play);
//boton de grabacion
var start = Titanium.UI.createButton({
 title:&#39;Comenzar Grabacion&#39;,
 width:200,
 height:40,
 top:20
});

win.add(start);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Y veremos una interfaz como esta:
&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/AVvXsEgjrV1jVu8kXPovnv5A4_uLPOuwkLLvf2nbnZ9W3ERG1BlczB4cOnIiKyaU6KDolIC6NXF-5YvHz83nIhOxnN0GuZyBpIL_mwYMxST94obN3kman_x3mDzIwSD_7ULf6qGltlnldLtFrMY/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+23.38.48.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/AVvXsEgjrV1jVu8kXPovnv5A4_uLPOuwkLLvf2nbnZ9W3ERG1BlczB4cOnIiKyaU6KDolIC6NXF-5YvHz83nIhOxnN0GuZyBpIL_mwYMxST94obN3kman_x3mDzIwSD_7ULf6qGltlnldLtFrMY/s320/Captura+de+pantalla+2012-05-17+a+la%28s%29+23.38.48.png&quot; width=&quot;183&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora le daremos funcionalidad haciendo lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//crea ventana
var win = Titanium.UI.currentWindow;
//variables
var archivo;
var tiempo;
var sonido;
var duracion = 0;

var etiqueta = Titanium.UI.createLabel({
 text: &#39; &#39;,
 top:150,
 color: &#39;#999&#39;,
 textAlign:&#39;center&#39;,
 width: 250,
 height:&#39;auto&#39;
});

win.add(etiqueta);

//label volumen
var volumen = Titanium.UI.createLabel({
 text: &quot;Volumen: &quot;+Ti.Media.volume,
 bottom:50,
 color:&#39;#999&#39;,
 textAlign:&#39;center&#39;,
 width: 250,
 height: &#39;auto&#39;
});
//label de switch
var etiquetaSwitch = Titanium.UI.createLabel({
 text:&#39;Alta fiedilidad: &#39;,
 width: 250,
 height:&#39;auto&#39;,
 textAlign:&#39;center&#39;,
 color:&#39;#999&#39;,
 bottom:115
});
//switch
var switchL = Titanium.UI.createSwitch({
 value:false,
 bottom:80
});

win.add(etiquetaSwitch);
win.add(switchL);
//boton del play
var play = Titanium.UI.createButton({
 title:&#39;Reproduce Grabacion&#39;,
 width:200,
 height:40,
 top:80
 });
win.add(play);
//boton de grabacion
var start = Titanium.UI.createButton({
 title:&#39;Comenzar Grabacion&#39;,
 width:200,
 height:40,
 top:20
});

win.add(start);

//Creamos la instancia de un objeto del metodo AudioRecorder llamado grabando
var grabacion = Ti.Media.createAudioRecorder();

/*
Para una compresion por default usamos Ti.Media.AUDIO_FORMAT_LINEAR_PCM
Nos comprimira el archivo en un tamanio pequenio y optimo para el telefono
Para un formato por default usamos Ti.Media.AUDIO_FILEFORMAT_CAF
Nos dara una buena calidad en el audio
*/
grabacion.compression = Ti.Media.AUDIO_FORMAT_LINEAR_PCM;
grabacion.format = Ti.Media.AUDIO_FILEFORMAT_CAF;
Ti.Media.addEventListener(&#39;recordinginput&#39;,function(e){
 //en caso de grabacion se da un click en el evento de start
 if(!e.available &amp;amp;&amp;amp; grabacion.recording){
  start.fireEvent(&#39;click&#39;,{});
 }
});
//si se modifico el volumen se actualizara
Ti.Media.addEventListener(&#39;volume&#39;, function(e){
 volumen.text = &quot;Volumen: &quot;+e.volume;
});
//muestra los niveles de sonido y duracion
function muetraNiveles() 
{
 var peak = Ti.Media.peakMicrophonePower;
    var avg = Ti.Media.averageMicrophonePower;
    duracion ++;
    etiqueta.text =&#39;Duracion: &#39;+duracion+&#39; segundos\npeak power: &#39;+peak+&#39;\navg power: &#39;+avg;
}
//evento al comenzar grabacion
start.addEventListener(&#39;click&#39;, function()
   {
    if(start.title == &quot;Detener Grabacion&quot;)
    {
     //guarda lo grabado en archivo
     archivo = grabacion.stop();
     //cambia la etiqueta start
     start.title= &quot;Comienzar Grabacion&quot;;
     //nos muestra la opcion de reproducir
     play.show();
     //limpia el intervalo de tiempo
     clearInterval(tiempo);
     Ti.Media.stopMicrophoneMonitor();
 } else {
  //dar error en caso de que no haiga hardware necesario
    if (!Ti.Media.canRecord) {
      Ti.UI.createAlertDialog({
        title:&#39;Error!&#39;,
        message:&#39;No hay dispositivo de grabacion disponible&#39;
      }).show();
return; }
 //cambia etiqueta start
    start.title = &quot;Detener Grabacion&quot;;
    //comienza grabar
    grabacion.start();
    //esconde etiqueta Reproducir
    play.hide();
    Ti.Media.startMicrophoneMonitor();
    //inicia en ceros duracion y luego nos muestra el tiempo transcurido
    duracion = 0;
    tiempo = setInterval(muestraNiveles,1000);
  }
});
play.addEventListener(&#39;click&#39;, function()
{
  if (sonido &amp;amp;&amp;amp; sonido.playing)
  {
   //detiene la grabacion
    sonido.stop();
    //libera
    sonido.release();
    sonido = null;
    //cambia etiqueta
    play.title = &#39;Reproduce Grabacion&#39;;
} else {
 //guarda el nuevo archivo
    sonido = Titanium.Media.createSound({sonido:archivo});
    sonido.addEventListener(&#39;complete&#39;, function()
    {
     //cambia etiqueta play
      play.title = &#39;Reproduce Grabacion&#39;;
    });
    //cambia etiqueta play y reproduce
    sonido.play();
    play.title = &#39;Detiene Grabacion&#39;;
  }
});
//cambia formato por medio del switch
switchL.addEventListener(&#39;change&#39;,function(e)
{
  if (!switchL.value)
  {
    grabacion.compression = Ti.Media.AUDIO_FORMAT_ULAW;
     }
else {
       grabacion.compression = Ti.Media.AUDIO_FORMAT_LINEAR_PCM;
     }
});

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Y como resultado veremos lo siguiente:&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/AVvXsEg6QXmh_d8FDNNzjlGYHw1-Iylz9v2CyZY1uA26LSf6hS6sjUSPjTcjqFXPZdUd_822KSp4dTibik8uIKSVbwJmbR_OyOK1N9DVrPLyaIlyvpVkWUqlQD7TixX2hPFaQVLq5KBnazRz3e8/s1600/Captura+de+pantalla+2012-05-18+a+la%28s%29+00.27.30.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/AVvXsEg6QXmh_d8FDNNzjlGYHw1-Iylz9v2CyZY1uA26LSf6hS6sjUSPjTcjqFXPZdUd_822KSp4dTibik8uIKSVbwJmbR_OyOK1N9DVrPLyaIlyvpVkWUqlQD7TixX2hPFaQVLq5KBnazRz3e8/s320/Captura+de+pantalla+2012-05-18+a+la%28s%29+00.27.30.png&quot; width=&quot;227&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/7179004382913465694/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titaniumcaptura.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/7179004382913465694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/7179004382913465694'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titaniumcaptura.html' title='Desarrollo de apps con Titanium:Captura y reproducción de Audio'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjrV1jVu8kXPovnv5A4_uLPOuwkLLvf2nbnZ9W3ERG1BlczB4cOnIiKyaU6KDolIC6NXF-5YvHz83nIhOxnN0GuZyBpIL_mwYMxST94obN3kman_x3mDzIwSD_7ULf6qGltlnldLtFrMY/s72-c/Captura+de+pantalla+2012-05-17+a+la%28s%29+23.38.48.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-4869426582350156058</id><published>2012-05-17T20:43:00.000-07:00</published><updated>2012-05-17T20:43:16.421-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Integración de Facebook</title><content type='html'>Sin duda uno de lo grandes impactos al momento de crear una aplicación es la integración de las redes sociales, en esta entrada hablaremos sobre como crear un login y hacer un post en tu muro del usuario.&lt;br /&gt;
&lt;br /&gt;
Para ello debemos tener creada un aplicación en Facebook el cual es relativamente sencillo, si tienen alguna duda pueden entrar a esta liga que encontre en la cual explica como crear un aplicación en Facebook:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://developers.facebook.com/docs/appsonfacebook/tutorial/&quot; target=&quot;_blank&quot;&gt;http://developers.facebook.com/docs/appsonfacebook/tutorial/ &lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Ahora lo que nos interesa será esto, ya verán por que:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&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/AVvXsEjTRBSL0pynZITH51NXUbnU20WmuyVBbNrOllRhAnj_-B4lz-cKnMDCllMipop4G1Z5DNdcycRiAqIbpgS1On-HJsMkRiPzNJTBZTlGvBb2HBsvhWD4FECALX5Ccihd8nS1UdkA6o2l5N8/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+21.02.58.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/AVvXsEjTRBSL0pynZITH51NXUbnU20WmuyVBbNrOllRhAnj_-B4lz-cKnMDCllMipop4G1Z5DNdcycRiAqIbpgS1On-HJsMkRiPzNJTBZTlGvBb2HBsvhWD4FECALX5Ccihd8nS1UdkA6o2l5N8/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+21.02.58.png&quot; /&gt;&lt;/a&gt;&lt;/div&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;
Ahora veremos como hacer un login, y como implementaremos lo anterior en el código :&lt;/div&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;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//crea ventana
var win = Titanium.UI.currentWindow;
//funcion que hace el login de Facebook
function loginFacebook(){
 //Si el usuario no se logio entonces pedir permisos
 if(Titanium.Facebook.loggedIn == false){
  //Aqui colocaremos nuetra APP ID
  Titanium.Facebook.appid=&#39;168079606553295&#39;;
  Titanium.Facebook.permissions = [&#39;publish_stream&#39;];
  //Permiso que tu app necesita del login
  Titanium.Facebook.addEventListener(&#39;login&#39;,function(e){
   if(e.success) {
    alert(&#39;Te has logiado&#39;);
    botonFacebook.title=&#39;Postea muro&#39;
   }else if(e.error){
    alert(&#39;Error: &#39;+ e.error);
   }else if(e.cancelled){
    alert(&#39;Has cancelado el login&#39;);
   }
  });
  //Llama un metodo de la API de Facebook para hacer el login
  Titanium.Facebook.authorize();
 }
}

var botonFacebook = Titanium.UI.createButton({
 width: 280,
 height: 35,
 top: 330,
 title: &#39;Login Facebook&#39;
});
win.add(botonFacebook);
botonFacebook.addEventListener(&#39;click&#39;, function(e){
 loginFacebook();
});
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Nosotros agregamos en el código lo que es la APP ID para pedir permiso a que pueda hacer un login el usuario, más adelante veremos para que lo usamos.Ahora veremos por el momento nuestra captura de pantalla:&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/AVvXsEg1IvHP01Gk6B1s-PwV-XE_k9-o5y3Auam-S02g4nDFx_pQgLypnsiSnhXymUs2wyx4juPOUaptTZaodjYg5YSiivTYmaw0bmcrxIMBgHEzTfBviDQVI4q5XMlbZ4b_ZguKnsW4EXh8Nvg/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+21.47.24.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/AVvXsEg1IvHP01Gk6B1s-PwV-XE_k9-o5y3Auam-S02g4nDFx_pQgLypnsiSnhXymUs2wyx4juPOUaptTZaodjYg5YSiivTYmaw0bmcrxIMBgHEzTfBviDQVI4q5XMlbZ4b_ZguKnsW4EXh8Nvg/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+21.47.24.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora haremos un post&amp;nbsp; en el muro del usuario con una imágen y una pequeña descripción agregandole esta sentencia dentro de la función de &lt;b&gt;loginFacebook&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt; }else{
  //Si ya haz accedido entonces
  //Postea foto
 var f = Ti.Filesystem.getFile(&#39;paper.png&#39;);
 var imagen = f.read();
 var dato = {
  caption: &#39;Testeo de Post&#39;,
  picture: imagen
  };
  //Postea en este directorio me/photos, anexamos imagen
  Titanium.Facebook.requestWithGraphPath(&#39;me/photos&#39;, dato, &quot;POST&quot;, function(e){
   if(e.success){
    alert(&quot;Excelente tu imagen sea posteado en tu muro&quot;);
   }else{
    alert(&#39;Tu imagen no se pudo postear en tu muro :( intenta denuevo&#39;);
   }
  });
 }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Y veremos lo siguiente en nuestra app:
&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/AVvXsEhxN00KCIv3UH_mGc0138Zuv1T4csx3eo2sAr8k-9jXkYsIIXdmaAjHuqfPb4gS15tBS0DNpxRpvneA3fy_YH7d8ejPLH6R9gk6iiVmpH1IJxkBZqehIPFQOY7d8YaGryFHD3AbTv3aGds/s1600/Captura+de+pantalla+2012-05-17+a+la%28s%29+22.41.15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxN00KCIv3UH_mGc0138Zuv1T4csx3eo2sAr8k-9jXkYsIIXdmaAjHuqfPb4gS15tBS0DNpxRpvneA3fy_YH7d8ejPLH6R9gk6iiVmpH1IJxkBZqehIPFQOY7d8YaGryFHD3AbTv3aGds/s320/Captura+de+pantalla+2012-05-17+a+la%28s%29+22.41.15.png&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://dispositivosmoviles-saulg.blogspot.com/feeds/4869426582350156058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_17.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4869426582350156058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4869426582350156058'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_17.html' title='Desarrollo de apps con Titanium:Integración de Facebook'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTRBSL0pynZITH51NXUbnU20WmuyVBbNrOllRhAnj_-B4lz-cKnMDCllMipop4G1Z5DNdcycRiAqIbpgS1On-HJsMkRiPzNJTBZTlGvBb2HBsvhWD4FECALX5Ccihd8nS1UdkA6o2l5N8/s72-c/Captura+de+pantalla+2012-05-17+a+la%28s%29+21.02.58.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-5400032593694723516</id><published>2012-05-17T10:29:00.000-07:00</published><updated>2012-05-17T10:29:37.388-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Envío de email</title><content type='html'>Para tener una aplicación muy completa muchos desarrolladores colocan su email para alguna sugerencia y esto es bueno ya que retroalimentan al desarrollador.A continuación haremos una mini-app en la que enviaremos un pequeño contenido con un titulo.&lt;br /&gt;
&lt;br /&gt;
Para ello necesitamos hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//crea ventana
var win = Titanium.UI.currentWindow;
//Nos ayuda crear la forma para enviar un correo
var email = Titanium.UI.createEmailDialog();
//Campo de texto para el titulo, dentro del mismo un aviso
var titulo = Titanium.UI.createTextField({
 width: 200,
 height: 35,
 top: 90,
 value: &#39;Titulo del mensaje&#39;,
 borderStyle: 4
});
win.add(titulo);
//Crearemos un area de texto, a diferencia de campo es que este es mas grande
var texto = Titanium.UI.createTextArea({
 width: 200,
 height: 140,
 top: 130,
 value: &#39;Cuerpo del mensaje&#39;,
 font: {fontSize: 15},
 borderStyle: 4
});
win.add(texto);
//funcion para llenar datos del correo
function llenado(){
 //titulo
 email.subject = titulo.value;
 //correo
 email.toRecipients = [&#39;saul.gausin@gmail.com&#39;];
 //cuerpo del mensaje
 email.messageBody = texto.value;
 //nos envia a nuestra app de correo
 email.open();
}

//boton de enviar
var boton = Titanium.UI.createButton({
 width: 300,
 height: 35,
 top: 280,
 title: &#39;Enviar correo&#39;
});

//evento de boton
boton.addEventListener(&#39;click&#39;,function(e){
 if(titulo.value == &#39;Titulo del mensaje&#39; || titulo.value == null){
  alert(&#39;Necesitas tener un titulo.&#39;);
 }else if(texto.value == &#39;Cuerpo del mensaje&#39; || texto.value == null){
  alert(&#39;Necesitas tener un contenido.&#39;);
 }else{
  llenado();
 }
});

win.add(boton);
&lt;/pre&gt;
&lt;br /&gt;
Y lo que nos despliegará será lo siguiente :&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/AVvXsEh9Y80HWAElaRWIr9wcSQTW5GVLEwGRBOVVOWlovRjuwNvM3HKjmn1V8Ro8PQU_aG41VWDkia1DQFpQkZP2348ntwaQ6uL3us7xf_I0TiAzXvHyNWYhckB4SwjIlcEPqYARcTjJFvnWj9g/s1600/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.28.39.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/AVvXsEh9Y80HWAElaRWIr9wcSQTW5GVLEwGRBOVVOWlovRjuwNvM3HKjmn1V8Ro8PQU_aG41VWDkia1DQFpQkZP2348ntwaQ6uL3us7xf_I0TiAzXvHyNWYhckB4SwjIlcEPqYARcTjJFvnWj9g/s320/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.28.39.png&quot; width=&quot;183&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Le agregamos unas cuantas excepciones si no han sido modificados los campos y si no tiene nada en el campo, y esas excepciones no nos dejan enviar el correo hasta que haya contenido alguno.&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/AVvXsEh0Y2eehLco-uTRk7UmjXx25scb30095DNCt_3kJxUy1HGFvSLBj8EbZru0-G46pZMteADnZ8xFo9ETPm0iM4kDX6ayOGjeH9Rm_rzBVTzE0aXLEIeXdP_C6j0H5CsHbwjud3D9J0YcTag/s1600/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.28.47.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/AVvXsEh0Y2eehLco-uTRk7UmjXx25scb30095DNCt_3kJxUy1HGFvSLBj8EbZru0-G46pZMteADnZ8xFo9ETPm0iM4kDX6ayOGjeH9Rm_rzBVTzE0aXLEIeXdP_C6j0H5CsHbwjud3D9J0YcTag/s320/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.28.47.png&quot; width=&quot;181&quot; /&gt;&lt;/a&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/AVvXsEio5GCHcsBS-X50RvfG5BWjpunarMH9KWUqD6XutoAGhA1b-SoZ4wD9F7PF7pOZ7W22EJ5JZKqtVjCPsbXvI6d2UJoNy9pXTWcpX1z1FfLRlWmtZRs1FEw0Kfpb_OH0TBwGCZNgx-iP8cU/s1600/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.29.02.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/AVvXsEio5GCHcsBS-X50RvfG5BWjpunarMH9KWUqD6XutoAGhA1b-SoZ4wD9F7PF7pOZ7W22EJ5JZKqtVjCPsbXvI6d2UJoNy9pXTWcpX1z1FfLRlWmtZRs1FEw0Kfpb_OH0TBwGCZNgx-iP8cU/s320/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.29.02.png&quot; width=&quot;183&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/5400032593694723516/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titaniumenvio-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/5400032593694723516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/5400032593694723516'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titaniumenvio-de.html' title='Desarrollo de apps con Titanium:Envío de email'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Y80HWAElaRWIr9wcSQTW5GVLEwGRBOVVOWlovRjuwNvM3HKjmn1V8Ro8PQU_aG41VWDkia1DQFpQkZP2348ntwaQ6uL3us7xf_I0TiAzXvHyNWYhckB4SwjIlcEPqYARcTjJFvnWj9g/s72-c/Captura+de+pantalla+2012-05-16+a+la%28s%29+18.28.39.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-4017197582685297635</id><published>2012-05-15T12:06:00.000-07:00</published><updated>2012-05-15T12:06:49.581-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Captura/Selección de imágen</title><content type='html'>Ahora hablaremos sobre como hacer una captura o selección de imágen usando un dialogo, un dialogo es una forma de desplegar varias opciones al usuario&amp;nbsp; y así se ve:&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/AVvXsEhYESEEkFfQlV4HKaIJJcx5XxF4wyfHWISsmgrQgqQ3bJawVgZN4i6PpftyTzMwpWF1N5vvkAytkxAq_l4kcuqvbpleBMTI60Hz3SymMu7K9yuYz_dYBr-VSKQSwg-tLKV8HrzsouUpgbE/s1600/Captura+de+pantalla+2012-05-15+a+la%28s%29+13.19.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYESEEkFfQlV4HKaIJJcx5XxF4wyfHWISsmgrQgqQ3bJawVgZN4i6PpftyTzMwpWF1N5vvkAytkxAq_l4kcuqvbpleBMTI60Hz3SymMu7K9yuYz_dYBr-VSKQSwg-tLKV8HrzsouUpgbE/s400/Captura+de+pantalla+2012-05-15+a+la%28s%29+13.19.11.png&quot; width=&quot;241&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Para haer que un dialogo se despliegue necesitamos hacer el siguiente código:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//crea ventana
var win = Titanium.UI.currentWindow;
//creamos un dialogo con las siguientes opciones para obtener una imagen segun la opcion elegida
var dialogo = Titanium.UI.createOptionDialog({
 title:&#39;Elige la fuente de la imagen &#39;,
 options: [&#39;Camara&#39;,&#39;Galeria&#39;,&#39;Cancelar&#39;],
 cancel:2 //Esto es para eligir cual sera la opcion cancelar
 //Donde comenzamos de 0 como por ejemplo tenemos cancelar
 // 0 Camara, 1 Galeria y 2 Cancelar
});
//agregamos el evento
dialogo.addEventListener(&#39;click&#39;,function(e){
 Ti.API.info(&#39;Seleccionaste&#39;+e.index);
});
//boton para eligir foto
var eligirFoto = Titanium.UI.createButton({
 title: &#39;Elige&#39;,
 top: 20,
 right: 20
 
});

eligirFoto.addEventListener(&#39;click&#39;,function(e){
 dialogo.show();//muestra dialogo
});
win.add(eligirFoto);
&lt;/pre&gt;
&lt;br /&gt;
Y obtendremos esto:
&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/AVvXsEgyX3KpnQhbuwKknUFipzMXEaAy8oCQExOYhvlFqstLhpdA5-nmAhXhBrlFUSB5fOGdbKAvWrGF9Ht5YuU94oR10aRO_ADzd3cwxQzOcVKYUmu1msYNK8fPNTp9COdBVolh-qIjbCUxX64/s1600/Captura+de+pantalla+2012-05-15+a+la%28s%29+13.23.58.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/AVvXsEgyX3KpnQhbuwKknUFipzMXEaAy8oCQExOYhvlFqstLhpdA5-nmAhXhBrlFUSB5fOGdbKAvWrGF9Ht5YuU94oR10aRO_ADzd3cwxQzOcVKYUmu1msYNK8fPNTp9COdBVolh-qIjbCUxX64/s320/Captura+de+pantalla+2012-05-15+a+la%28s%29+13.23.58.png&quot; width=&quot;181&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Dicho dialogo es desplegado después de haber dado click en el botón.Ahora que ya tenemos este dialogo haremos lo funcional, osea que haremos que tome primero la cámara del telefono y después que tome de la galería.A continuación veremos como tomarlo del teléfono.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//agregamos el evento
dialogo.addEventListener(&#39;click&#39;,function(e){
 Ti.API.info(&#39;Seleccionaste&#39;+e.index);
 //Si eligio Camara
 if(e.index== 0 )
 {
  //Desde nuestra camara
  Titanium.Media.showCamera({
   success:function(event)
   {   
    //Guarda imagen en esta varible
    var imagen = event.media;
    if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO)
    {
     //coloca la imagen como una vista
     var imagenView = Titanium.UI.createImageView({
      top:20,
      left:20,
      width: 280,
      height: 320
     });
     imagenView.image=imagen;
     win.add(imagenView);
    }
   },
   cancel:function()
   {
    //Ha sido cancelado, la opcion de tomar imagen desde la camara
   },
   error:function(error)
   {
    //crea una alerta
    var alerta = Titanium.UI.createAlertDialog({
     title:&#39;Camara&#39;
     });
    //Daremos aviso si no tuvo camara o si realmente es otra cosa
    if(error.code == Titanium.Media.NO_CAMERA)
    {
     alerta.setMessage(&#39;El dispositivo tiene camara disponible&#39;);
    }else{
     alerta.setMessage(&#39;Error desconosido&#39;);
    }
    //nos muestra la alerta
    alerta.show();
    },
    //permitimos que nuestro dispositivo edite la imagen
   allowImageEditing:true,
   //permitimos a nuestro dispositivo que guarde la imagen en la galeria
   saveToPhotoGallery:true
 });
 }else{
  //canelado
  
 }
});
&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp;Y que obtendremos será un evento en el cual guarda la imágen capturada con el dispositivo, en caso de no tener cámara alguna nos mostrará una alerta diciendonós si el dispositivo no tiene cámara o si fue otro error.Ahora veremos como tomar imágenes desde una galería de fotos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;if(e.index == 1){
  //obtiene una imagen de la galeria de fotos del telefono
  Titanium.Media.openPhotoGallery({
   //Si se cumple
   success:function(event){
    //guarda imagen en variable
    var imagen= event.media
    //Lo coloca como una vista
    if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO){
     var imagenVista = Titanium.UI.createImageView({
      top:20,
      left:20,
      width: 280,
      height: 320
     });
     imagenVista.image=imagen;
     win.add(imagenVista);
    }
   },
   //Si no cumple cancela
   cancel:function(){
   //El usuario cancelo la opcion
   }
     });
    }else{
  //cancelado
 }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esto podremos tomar imágenes desde nuestra galería del dispositivo ó desde la cámara del mismo.</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/4017197582685297635/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_15.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4017197582685297635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4017197582685297635'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_15.html' title='Desarrollo de apps con Titanium:Captura/Selección de imágen'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYESEEkFfQlV4HKaIJJcx5XxF4wyfHWISsmgrQgqQ3bJawVgZN4i6PpftyTzMwpWF1N5vvkAytkxAq_l4kcuqvbpleBMTI60Hz3SymMu7K9yuYz_dYBr-VSKQSwg-tLKV8HrzsouUpgbE/s72-c/Captura+de+pantalla+2012-05-15+a+la%28s%29+13.19.11.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-3863748995363215305</id><published>2012-05-14T17:08:00.000-07:00</published><updated>2012-05-14T17:08:48.806-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Agregando filtro a un TableView</title><content type='html'>Ahora lo que haremos es agregarle un filtro a nuestra tabla, esto nos sirve mucho para cuando manejamos muchos datos y queremos encontrar de una manera más comoda algo.Para esto tomaré como base la app que vimos en esta entrada:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dispositivosmoviles-saulg.blogspot.mx/2012/05/desarrollo-de-apps-con.html&quot;&gt;http://dispositivosmoviles-saulg.blogspot.mx/2012/05/desarrollo-de-apps-con.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora veremos como implementar un filtro en una tabla, para ello debemos agregar el siguiente código antes de definir una tabla:
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;//definimos la barra del buscador de la tabla
var buscador = Titanium.UI.createSearchBar({
 showCancel:true,//muestra opcion de cancelar
 height:43,
 top:0
});

//muestra en la consola el valor que busca
buscador.addEventListener(&#39;change&#39;,function(e){
 Ti.API.info(&#39;Busco : &#39;+ e.value);
});
//cuando borra en el campo de texto quita el enfoque al buscador
buscador.addEventListener(&#39;return&#39;,function(e){
 buscador.blur();
});
//cuando cancela el usuario quita el enfoque a el
buscador.addEventListener(&#39;cancel&#39;,function(e){
 buscador.blur();
});
&lt;/pre&gt;
&lt;br /&gt;
Ya definido el buscador vamos a agregar las siguientes propiedades a nuestra tabla para que pueda funcionar nuestro filtro:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nosotros colocamos a la tabla la propiedad de &lt;b&gt;search &lt;/b&gt;y ahi va el nombre de nuestro filtro que lo llamamos &lt;b&gt;buscador&lt;/b&gt;, también nosotros agregamos la propiedad &lt;b&gt;filterAttribute&lt;/b&gt; aquí es donde va ir la variable que utilizaremos para guardar nuestro filtro.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;var win = Titanium.UI.currentWindow;
//declaracion del arreglo vacio
var datos = [];
//declaramos el objeto del cliente http
var xhr = Titanium.Network.createHTTPClient();

//definimos la barra del buscador de la tabla
var buscador = Titanium.UI.createSearchBar({
 showCancel:true,//muestra opcion de cancelar
 height:43,
 barColor: &#39;#385292&#39;,
 top:0
});

//muestra en la consola el valor que busca
buscador.addEventListener(&#39;change&#39;,function(e){
 Ti.API.info(&#39;Busco : &#39;+ e.value);
});
//cuando borra en el campo de texto quita el enfoque al buscador
buscador.addEventListener(&#39;return&#39;,function(e){
 buscador.blur();
});
//cuando cancela el usuario quita el enfoque a el
buscador.addEventListener(&#39;cancel&#39;,function(e){
 buscador.blur();
});
//creacion de la tabla
var tabla = Ti.UI.createTableView({
 height: 366,
 width: 320,
 top: 0,
 left: 0,
 hideSearchOnSelection: true,
 rowHeight:70, //Le decimos el tamaño de nuestras filas
 search: buscador,
 fitlerAttribute:&#39;filter&#39; //filtrado sera lo que aparecera en nuestras filas
});
//agregamos tabla
win.add(tabla);
//este metodo procesara los datos remotos
xhr.onload = function() {
 var xml = this.responseXML;
 //obtenemos el elemento del de la lista desde nuestro responseXML
 var items = xml.documentElement.getElementsByTagName(&quot;item&quot;);
 //ciclo por cada item en xml
 for (var i = 0; i &amp;lt; items.length; i++){
   
  //creacion de la fila de la tabla
  var fila = Titanium.UI.createTableViewRow({
   hasChild: true,//con esto decimos que tendrá una subsección la fila
   className: &#39;fila-rss&#39;,//propiedad de solo usar memoria necesaria, osea que solo las filas que veamos
   filter: items.item(i).getElementsByTagName(&quot;title&quot;).item(0).text//esta variable nos ayuda a saber que filas son las que buscamos con el buscador
  });
  //etiqueta de titulo
  var tituloLabel = Titanium.UI.createLabel({
   text:items.item(i).getElementsByTagName(&quot;title&quot;).item(0).text,
   //propiedades de la letra
   font:{fontSize: 14, fontWeight: &#39;bold&#39;},
   left:70,
   color:&#39;#000000&#39;,
   top:5,
   height:20,
   width: 210
  });
  fila.add(tituloLabel);
  //etiqueta de descripcion
  var descripcionLabel = Titanium.UI.createLabel({
   text:items.item(i).getElementsByTagName(&quot;description&quot;).item(0).text,
   font:{fontSize: 10, fontWeight:&#39;normal&#39;},
   left: 70,
   color:&#39;#000000&#39;,
   top: 25,
   height: 40,
   width: 200
  });
  if(descripcionLabel.text == &#39;&#39;){
   descripcionLabel.text = &#39;Descripcion no disponible.&#39;;
  }
  fila.add(descripcionLabel);
  //Agregamos un icono en el lado izquierdo a cada fila
  var icono = Titanium.UI.createImageView({
   image:&#39;paper.png&#39;,
   width: 30,
   height: 30,
   left: 10,
   top: 10
  });
  fila.add(icono);
  //agregamos la fila al arreglo datos
  datos.push(fila);
 }//termina nuestro ciclo
 //Ahora le especificamos la propiedad de datos a nuestra tabla
 tabla.data = datos;
};
 
//este metodo sera usado en caso de que haiga algun
//error accesando a los datos remotamente
xhr.onerror = function() {
 //Nos desplegara el log del error en la consola
 Ti.API.error(this.status + &#39; - &#39; + this.statusText);
};
 
//abre el feed de xml
xhr.open(&#39;GET&#39;, &#39;http://feeds.cristalab.com/clab&#39;)
 
//Ejecuta la llamada a el feed
xhr.send();
&lt;/pre&gt;
&lt;br /&gt;
Y esto será lo que obtendremos:&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/AVvXsEjtYOOTevc4aBjl55EG334x_J331XDsVGa6PMdlm_s7wxhquVc3axC9CPoMq1-nOTIL6OYEt6HEBqWXtrmEQla2xu1i_bVUUNe9PqH8fetKVpNLW4wTY9XGeXoR_H2hIjqw4jLYwW1C-P8/s1600/Captura+de+pantalla+2012-05-14+a+la%28s%29+19.07.24.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/AVvXsEjtYOOTevc4aBjl55EG334x_J331XDsVGa6PMdlm_s7wxhquVc3axC9CPoMq1-nOTIL6OYEt6HEBqWXtrmEQla2xu1i_bVUUNe9PqH8fetKVpNLW4wTY9XGeXoR_H2hIjqw4jLYwW1C-P8/s320/Captura+de+pantalla+2012-05-14+a+la%28s%29+19.07.24.png&quot; width=&quot;182&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/3863748995363215305/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_14.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/3863748995363215305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/3863748995363215305'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con_14.html' title='Desarrollo de apps con Titanium:Agregando filtro a un TableView'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtYOOTevc4aBjl55EG334x_J331XDsVGa6PMdlm_s7wxhquVc3axC9CPoMq1-nOTIL6OYEt6HEBqWXtrmEQla2xu1i_bVUUNe9PqH8fetKVpNLW4wTY9XGeXoR_H2hIjqw4jLYwW1C-P8/s72-c/Captura+de+pantalla+2012-05-14+a+la%28s%29+19.07.24.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-5345003490147415259</id><published>2012-05-14T12:39:00.001-07:00</published><updated>2012-05-14T12:39:29.049-07:00</updated><title type='text'>Desarrollo de apps con Titanium:Trabajando con datos remotos</title><content type='html'>Ahora veremos los métodos que utiliza Titanium Studio para la lectura, análisis y guardado de datos, es importante saber manipular datos remotos para poder hacer una buena optimización de nuestra aplicación.Titanium nos provee una forma sencilla de hacer llamadas simples de XML bajo HTTP, y de igual manera implementando JSON.&lt;br /&gt;
&lt;br /&gt;
Para comenzar primero veremos el siguiente código:&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;var win = Titatnium.UI.currentWindow;
//declaramos el objeto del cliente http
var xhr = Titanium.Network.createHTTPClient();

//este metodo procesara los datos remotos
xhr.onload = function() {
 //Despliega en la consola las respuesta
 Ti.API.info(this.responseText);
};

//este metodo sera usado en caso de que haiga algun
//error accesando a los datos remotamente
xhr.onerror = function() {
 //Nos desplegara el log del error en la consola
 Ti.API.error(this.status + &#39; - &#39; + this.statusText);
};

//abre el feed de xml
xhr.open(&#39;GET&#39;, &#39;http://www.elnorte.com/rss/ciencia.xml&#39;)

//Ejecuta la llamada a el feed
xhr.send();
&lt;/pre&gt;
&lt;br /&gt;
Y lo que nos despliega el código en la consola es lo siguiente:&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/AVvXsEiAP0lC8jAnYyQsZ7WCJ1T9kTZT-lb8at7H8LYYkp1RS8lUmR087-3RrMlvG5BD81yVwRaTDSn4fNE3q536mqZ71QaA9PzxaVzS49ZYEyHN8U0URryGYD4KriNGfsZ54fKqVfLWcepF_co/s1600/Captura+de+pantalla+2012-05-12+a+la%28s%29+22.26.00.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/AVvXsEiAP0lC8jAnYyQsZ7WCJ1T9kTZT-lb8at7H8LYYkp1RS8lUmR087-3RrMlvG5BD81yVwRaTDSn4fNE3q536mqZ71QaA9PzxaVzS49ZYEyHN8U0URryGYD4KriNGfsZ54fKqVfLWcepF_co/s640/Captura+de+pantalla+2012-05-12+a+la%28s%29+22.26.00.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora veremos como desplegarlo en tablas:
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;var win = Titanium.UI.currentWindow;
//declaracion del arreglo vacio
var datos = [];
//declaramos el objeto del cliente http
var xhr = Titanium.Network.createHTTPClient();
//creacion de la tabla
var tabla = Titanium.UI.createTableView({
 height: 366,
 width: 320,
 top: 0,
 left: 0
});
//agregamos tabla
win.add(tabla);
//este metodo procesara los datos remotos
xhr.onload = function() {
 var xml = this.responseXML;
 //obtenemos el elemento del de la lista desde nuestro responseXML
 var items = xml.documentElement.getElementsByTagName(&quot;item&quot;);
 //ciclo por cada item en xml
 for (var i = 0; i &amp;lt; items.length; i++){
  
  //creacion de la fila de la tabla
  var fila = Titanium.UI.createTableViewRow({
   title:items.item(i).getElementsByTagName(&quot;title&quot;).item(0).text
  });
  
  //agregamos la fila al arreglo datos
  datos.push(fila);
 }//termina nuestro ciclo
 //Ahora le especificamos la propiedad de datos a nuestra tabla
 tabla.data = datos;
};

//este metodo sera usado en caso de que haiga algun
//error accesando a los datos remotamente
xhr.onerror = function() {
 //Nos desplegara el log del error en la consola
 Ti.API.error(this.status + &#39; - &#39; + this.statusText);
};

//abre el feed de xml
xhr.open(&#39;GET&#39;, &#39;http://www.elnorte.com/rss/ciencia.xml&#39;)

//Ejecuta la llamada a el feed
xhr.send();
&lt;/pre&gt;
&lt;br /&gt;
Y nos despliegará esto, que es un rss que lo tomé de la página de &quot;El Norte&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKxArNIQaa5yl-v2r9FZDoPsK2rt-L2zS-DLNntU-s3_DUWqUvM9gl5PmIAD0O4cGtWHcXAT2_0Cukm_5fdCcHXIOMNZ8KWXUWFbdjlHdRfTryFWGeQvjQDGKjtOrdWXMVegadV5lBBjk/s1600/Captura+de+pantalla+2012-05-12+a+la%28s%29+22.53.04.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKxArNIQaa5yl-v2r9FZDoPsK2rt-L2zS-DLNntU-s3_DUWqUvM9gl5PmIAD0O4cGtWHcXAT2_0Cukm_5fdCcHXIOMNZ8KWXUWFbdjlHdRfTryFWGeQvjQDGKjtOrdWXMVegadV5lBBjk/s400/Captura+de+pantalla+2012-05-12+a+la%28s%29+22.53.04.png&quot; width=&quot;245&quot; /&gt;&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;
Veremos como colocarle imágenes a cada fila y hacer que cada fila nos muestre el contenido, ya que en el anterior solamente vemos el título de la noticia:&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;var win = Titanium.UI.currentWindow;
//declaracion del arreglo vacio
var datos = [];
//declaramos el objeto del cliente http
var xhr = Titanium.Network.createHTTPClient();
//creacion de la tabla
var tabla = Titanium.UI.createTableView({
 height: 366,
 width: 320,
 top: 0,
 left: 0,
 rowHeight:70 //Le decimos el tamaño de nuestras filas
});
//agregamos tabla
win.add(tabla);
//este metodo procesara los datos remotos
xhr.onload = function() {
 var xml = this.responseXML;
 //obtenemos el elemento del de la lista desde nuestro responseXML
 var items = xml.documentElement.getElementsByTagName(&quot;item&quot;);
 //ciclo por cada item en xml
 for (var i = 0; i &amp;lt; items.length; i++){
  
  //creacion de la fila de la tabla
  var fila = Titanium.UI.createTableViewRow({
   hasChild: true,//con esto decimos que tendrá una subsección la fila
   className: &#39;fila-rss&#39;//propiedad de solo usar memoria necesaria, osea que solo las filas que veamos
  });
  //etiqueta de titulo
  var tituloLabel = Titanium.UI.createLabel({
   text:items.item(i).getElementsByTagName(&quot;title&quot;).item(0).text,
   //propiedades de la letra
   font:{fontSize: 14, fontWeight: &#39;bold&#39;},
   left:70,
   color:&#39;#000000&#39;,
   top:5,
   height:20,
   width: 210
  });
  fila.add(tituloLabel);
  //etiqueta de descripcion
  var descripcionLabel = Titanium.UI.createLabel({
   text:items.item(i).getElementsByTagName(&quot;description&quot;).item(0).text,
   font:{fontSize: 10, fontWeight:&#39;normal&#39;},
   left: 70,
   color:&#39;#000000&#39;,
   top: 25,
   height: 40,
   width: 200
  });
  if(descripcionLabel.text == &#39;&#39;){
   descripcionLabel.text = &#39;Descripcion no disponible.&#39;;
  }
  fila.add(descripcionLabel);
  //Agregamos un icono en el lado izquierdo a cada fila
  var icono = Titanium.UI.createImageView({
   image:&#39;paper.png&#39;,
   width: 30,
   height: 30,
   left: 10,
   top: 10
  });
  fila.add(icono);
  //agregamos la fila al arreglo datos
  datos.push(fila);
 }//termina nuestro ciclo
 //Ahora le especificamos la propiedad de datos a nuestra tabla
 tabla.data = datos;
};

//este metodo sera usado en caso de que haiga algun
//error accesando a los datos remotamente
xhr.onerror = function() {
 //Nos desplegara el log del error en la consola
 Ti.API.error(this.status + &#39; - &#39; + this.statusText);
};

//abre el feed de xml
xhr.open(&#39;GET&#39;, &#39;http://www.elnorte.com/rss/ciencia.xml&#39;)

//Ejecuta la llamada a el feed
xhr.send();
&lt;/pre&gt;
&lt;br /&gt;
Ahora veremos lo que nos despliega el código:
&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/AVvXsEge-lumV5VLqdp9bKP4ZQ2N10sNmM33xjcRMY4os7FODIUAV8S9aqG1QEQOhSVo-1-CQS9IaiMUfGu3GytkkWfKAlpgDzl0a8nRSxX1YNiqp91FZcuObmSc6z_QZ_tnM5jJFIbeoRLn59Q/s1600/Captura+de+pantalla+2012-05-14+a+la%28s%29+13.46.17.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/AVvXsEge-lumV5VLqdp9bKP4ZQ2N10sNmM33xjcRMY4os7FODIUAV8S9aqG1QEQOhSVo-1-CQS9IaiMUfGu3GytkkWfKAlpgDzl0a8nRSxX1YNiqp91FZcuObmSc6z_QZ_tnM5jJFIbeoRLn59Q/s1600/Captura+de+pantalla+2012-05-14+a+la%28s%29+13.46.17.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora usaremos JSON, para ello nosotros usaremos Yahoo! YQL para acelerar el acceso a nuestros datos remotos.Para ello entramos a esta página &lt;a href=&quot;http://developer.yahoo.%20com/yql/console&quot; target=&quot;_blank&quot;&gt;http://developer.yahoo. com/yql/console&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/AVvXsEgU5Hftdv-ixISw7OYY1FrKII4IcULiz1PK5eKWa5N6RmgE_HJ0PXw316hiYCn6CZkcRXwY3g6q1GCjgIS4pXEYkfjCXbU_fvFD4E6R4PDhuwF2ncbj_zNDU7YLNu0ayWmAl3t1N3vTVWI/s1600/Captura+de+pantalla+2012-05-14+a+la%28s%29+13.56.13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;299&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU5Hftdv-ixISw7OYY1FrKII4IcULiz1PK5eKWa5N6RmgE_HJ0PXw316hiYCn6CZkcRXwY3g6q1GCjgIS4pXEYkfjCXbU_fvFD4E6R4PDhuwF2ncbj_zNDU7YLNu0ayWmAl3t1N3vTVWI/s640/Captura+de+pantalla+2012-05-14+a+la%28s%29+13.56.13.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Seleccionamos &lt;b&gt;&#39;Data Tables&#39;&lt;/b&gt;, luego seleccionamos &lt;b&gt;&#39;data&#39;&lt;/b&gt; para después seleccionar &lt;b&gt;&#39;feed&#39;&lt;/b&gt;.Nos aparecerá algo como arriba pero con otra url, sustituimos por la misma que tenemos en la imágen y&lt;br /&gt;
seleccionamos &lt;b&gt;JSON&lt;/b&gt; y &lt;b&gt;Diagnostics&lt;/b&gt;,Para finalizar damos click en &lt;b&gt;TEST&lt;/b&gt; y nos dará como resultado &lt;b&gt;XML&lt;/b&gt; en formato &lt;b&gt;JSON&lt;/b&gt; debajo de la etiqueta &lt;b&gt;THE REST QUERY&lt;/b&gt;, una vez teniendo la url sustituimos esto &lt;b&gt;&#39;&lt;/b&gt; por esto otro&lt;b&gt; \&#39; &lt;/b&gt;eliminaremos esta parte &lt;b&gt;&amp;amp;callback=cbfunc&lt;/b&gt; que es la última.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora modificaremos nuestro código:&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;var win = Titanium.UI.currentWindow;
//declaracion del arreglo vacio
var datos = [];
//declaramos el objeto del cliente http
var xhr = Titanium.Network.createHTTPClient();
//creacion de la tabla
var tabla = Titanium.UI.createTableView({
 height: 366,
 width: 320,
 top: 0,
 left: 0,
 rowHeight:70 //Le decimos el tamaño de nuestras filas
});
//agregamos tabla
win.add(tabla);
//este metodo procesara los datos remotos
xhr.onload = function() {
 //Creamos un objeto json usando la funcion JSON.parse; nos sirve para parsear datos en JSON
 var jsonObject = JSON.parse(this.responseText);
 //ciclo por cada item en json
 for (var i = 0; i &amp;lt; jsonObject.query.results.item.length; i++){
  //creacion de la fila de la tabla
  var fila = Titanium.UI.createTableViewRow({
   hasChild: true,//con esto decimos que tendrá una subsección la fila
   className: &#39;fila-rss&#39;,//propiedad de solo usar memoria necesaria, osea que solo las filas que veamos
   backgroundColor: &#39;#FFFFFF&#39;
  });
  //etiqueta de titulo
  var tituloLabel = Titanium.UI.createLabel({
   text:jsonObject.query.results.item[i].title,
   //propiedades de la letra
   font:{fontSize: 14, fontWeight: &#39;bold&#39;},
   left:70,
   color:&#39;#000000&#39;,
   top:5,
   height:20,
   width: 210
  });
  fila.add(tituloLabel);
  //etiqueta de descripcion
  var descripcionLabel = Titanium.UI.createLabel({
   text:jsonObject.query.results.item[i].description,
   font:{fontSize: 10, fontWeight:&#39;normal&#39;},
   left: 70,
   color:&#39;#000000&#39;,
   top: 25,
   height: 40,
   width: 200
  });
  if(descripcionLabel.text == &#39;&#39;){
   descripcionLabel.text = &#39;Descripcion no disponible.&#39;;
  }
  fila.add(descripcionLabel);
  //Agregamos un icono en el lado izquierdo a cada fila
  var icono = Titanium.UI.createImageView({
   image:&#39;paper.png&#39;,
   width: 30,
   height: 30,
   left: 10,
   top: 10
  });
  fila.add(icono);
  //agregamos la fila al arreglo datos
  datos.push(fila);
 }//termina nuestro ciclo
 //Ahora le especificamos la propiedad de datos a nuestra tabla
 tabla.data = datos;
};

//este metodo sera usado en caso de que haiga algun
//error accesando a los datos remotamente
xhr.onerror = function() {
 //Nos desplegara el log del error en la consola
 Ti.API.error(this.status + &#39; - &#39; + this.statusText);
};

//abre el feed de xml
xhr.open(&#39;GET&#39;, &#39;http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20feed%20where%20url%3D\&#39;www.elnorte.com%2Frss%2Fciencia.xml\&#39;&amp;amp;format=json&amp;amp;diagnostics=true&#39;)
//Ejecuta la llamada a el feed
xhr.send();
&lt;/pre&gt;
&lt;br /&gt;
Esto es lo que nos despliega el código corriendo:&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/AVvXsEhfAq7jSTRjHWHS-ILcZTi0n25pYM_clCSXQuK0Fyum4H4pTCfMVGVH10FWO_6Px3gzvJIS8qO5zTBiVLjRMPpgErwVEuzdon88ZiZ-6uMPPxXsJsoDFHzsQJSJtewLqzY1gjwoH_uIut8/s1600/Captura+de+pantalla+2012-05-14+a+la%28s%29+14.34.33.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/AVvXsEhfAq7jSTRjHWHS-ILcZTi0n25pYM_clCSXQuK0Fyum4H4pTCfMVGVH10FWO_6Px3gzvJIS8qO5zTBiVLjRMPpgErwVEuzdon88ZiZ-6uMPPxXsJsoDFHzsQJSJtewLqzY1gjwoH_uIut8/s320/Captura+de+pantalla+2012-05-14+a+la%28s%29+14.34.33.png&quot; width=&quot;194&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Vieron la diferencia?, si están leyendo probablemente dirán que esta loco veo lo mismo pero si lo corren verán de que estoy hablando ;) ... me refiero a velocidad .&lt;br /&gt;
&lt;br /&gt;
Fuentes:&lt;br /&gt;
&lt;br /&gt;
Ayuda de desarrollador de Appcelerator&lt;br /&gt;
&lt;a href=&quot;http://developer.appcelerator.com/&quot; target=&quot;_blank&quot;&gt;http://developer.appcelerator.com/ &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Consola YQL&lt;br /&gt;
&lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;http://developer.yahoo.com/yql/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/5345003490147415259/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/5345003490147415259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/5345003490147415259'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con.html' title='Desarrollo de apps con Titanium:Trabajando con datos remotos'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAP0lC8jAnYyQsZ7WCJ1T9kTZT-lb8at7H8LYYkp1RS8lUmR087-3RrMlvG5BD81yVwRaTDSn4fNE3q536mqZ71QaA9PzxaVzS49ZYEyHN8U0URryGYD4KriNGfsZ54fKqVfLWcepF_co/s72-c/Captura+de+pantalla+2012-05-12+a+la%28s%29+22.26.00.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-8350897944323467774</id><published>2012-05-12T14:51:00.001-07:00</published><updated>2012-05-12T18:38:27.069-07:00</updated><title type='text'>Desarrollo de apps con Titanium: Geolocalización</title><content type='html'>Una de las características de las aplicaciones que tienen gran éxito en el mercado sin duda es la geolocalización por ende explicaré un ejemplo sencillo, en el que colocaremos un pin dependiendo la latitud y longitud dada.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://pastebin.com/embed_iframe.php?i=iG0zmGFn&quot; style=&quot;border: none; height: 100%; width: 100%;&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
Y esto es lo que despliega el código desde android:&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/AVvXsEg_B1tgkyoT2SxMBJ676_XwsNsFKuNBqmGxdBEK4oimLRIP-u09dYuxvq8yRZEjBNDdbtRGvSdGBkbYDWx8-45fBXUC8A5eAg0u4o-lKD44_C9669EXP4LqOeWarClwipjS3bOry43fQtI/s1600/Captura+de+pantalla+2012-05-09+a+la%28s%29+09.49.03.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/AVvXsEg_B1tgkyoT2SxMBJ676_XwsNsFKuNBqmGxdBEK4oimLRIP-u09dYuxvq8yRZEjBNDdbtRGvSdGBkbYDWx8-45fBXUC8A5eAg0u4o-lKD44_C9669EXP4LqOeWarClwipjS3bOry43fQtI/s1600/Captura+de+pantalla+2012-05-09+a+la%28s%29+09.49.03.png&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
En el código se crea una vista del mapa en el que pide como parámetros el tipo de mapa:&lt;b&gt; TITANIUM.MAP.STANDARD_TYPE, TITANIUM.MAP.SATELLITE_TYPE y TITANIUM.MAP.HYBRID_TYPE&lt;/b&gt;.Estos se ven de la siguiente manera:&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/AVvXsEh9W39RUXCZ02uCUz41FdcI2fAbbXE76Wk-ktdNSaX_3WcgntJXQiSSSaiPlaCxsecdr5-chmm2avC6_Iuw7Q7qxtQxJgowNPFZlNYf710yBw0B_7G0lb3YmhzTHScHSxKyfLQ8_QAQ6Ic/s1600/Captura+de+pantalla+2012-05-12+a+la%28s%29+16.26.39.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;167&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9W39RUXCZ02uCUz41FdcI2fAbbXE76Wk-ktdNSaX_3WcgntJXQiSSSaiPlaCxsecdr5-chmm2avC6_Iuw7Q7qxtQxJgowNPFZlNYf710yBw0B_7G0lb3YmhzTHScHSxKyfLQ8_QAQ6Ic/s400/Captura+de+pantalla+2012-05-12+a+la%28s%29+16.26.39.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
También tenemos latitud y longitud los cuales esos dependen de la ubicación exacta del mapa donde quieres que se despliegue la vista del map, de igual manera vemos unos que se llaman &lt;b&gt;latitudDelta&lt;/b&gt; y &lt;b&gt;longitudDelta&lt;/b&gt; con ellos le decimos cual es nivel de zoom que queremos en el mapa.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Animate&lt;/b&gt; &lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;hps&quot;&gt;es un&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;valor booleano&lt;/span&gt;&lt;span class=&quot;hps&quot;&gt; que nos permite&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;el zoom y&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;animación de movimiento&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;dentro o fuera&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;de la&lt;/span&gt; vista del mapa&lt;span class=&quot;hps&quot;&gt;&lt;/span&gt;. &lt;span class=&quot;hps&quot;&gt;Útil en el caso&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;de la focalización&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;dispositivos más antiguos&lt;/span&gt;, con &lt;span class=&quot;hps&quot;&gt;capacidad de procesamiento&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;de baja&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;y / o&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;ancho de banda bajo&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;El parámetro&lt;b&gt; region&lt;/b&gt; acepta por propiedad un arreglo de parámetros, el cual puede contener puntos de latitud y longitud que nosotros deseamos y colocarlos en el mapa de igual manera con los valores delta.&lt;b&gt;userLocation &lt;/b&gt;es un valor booleano que puede apagarse o encenderse con un punto azul como indicador en el cual indica donde estás en relación con la vista del mapa.&lt;b&gt;regionFit&lt;/b&gt; &lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;hps&quot;&gt;es&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;un valor booleano que indica si&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;la región seleccionada&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;se ajusta a las&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;dimensiones de&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;vista&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;dado.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;hps&quot;&gt;La anotación agregada será descrita de la siguiente manera:&lt;/span&gt;&lt;/span&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/AVvXsEisDb_O8ryuEVGd8XoU_jKHKigyotr3dFntpUnILztKtegZh7N5seC-oQt2CO4GaCqhxcq-5MaaMrQgrOjkxnW8TiB8sgg65t_261uHS80ZpIW6ocB4YlD2OmasVfCiCrbU1n7UHGGXtwQ/s1600/Captura+de+pantalla+2012-05-12+a+la%28s%29+16.36.56.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/AVvXsEisDb_O8ryuEVGd8XoU_jKHKigyotr3dFntpUnILztKtegZh7N5seC-oQt2CO4GaCqhxcq-5MaaMrQgrOjkxnW8TiB8sgg65t_261uHS80ZpIW6ocB4YlD2OmasVfCiCrbU1n7UHGGXtwQ/s1600/Captura+de+pantalla+2012-05-12+a+la%28s%29+16.36.56.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;hps&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt; &lt;/span&gt;&lt;br /&gt;
En la que tiene los mismos parámetros, con la excepción de algunos como &lt;b&gt;leftButton, rightButton title, subtitle y pinColor&lt;/b&gt;.&lt;br /&gt;
Esta es la forma de usar colocar una imágen a un &lt;b&gt;leftButton&lt;/b&gt; &lt;b&gt;:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://pastebin.com/embed_iframe.php?i=s4rbaGTn&quot; style=&quot;border: none; width: 100%;&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;/b&gt; &lt;br /&gt;
En la cual&amp;nbsp; tiene como parámetro &lt;b&gt;image &lt;/b&gt;en donde colocas la dirección de la imágen a mostrar.&lt;br /&gt;
&lt;br /&gt;
Ahora mostaré como colocarle una imágen en el &lt;b&gt;rightButton&lt;/b&gt; y como agregarlo:&lt;br /&gt;
&lt;iframe src=&quot;http://pastebin.com/embed_iframe.php?i=BKD2Ygfh&quot; style=&quot;border: none; width: 100%;&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;column&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;
&lt;/span&gt;
  &lt;/div&gt;
&lt;div class=&quot;column&quot;&gt;
Y esta es la forma como se agregan eventos de la vista del mapa:&lt;/div&gt;
&lt;div class=&quot;column&quot;&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://pastebin.com/embed_iframe.php?i=G3qhsjy8&quot; style=&quot;border: none; width: 100%;&quot;&gt;&lt;/iframe&gt;
&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;
&lt;/span&gt;
  &lt;/div&gt;
&lt;div class=&quot;column&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;
&lt;/span&gt;
  &lt;/div&gt;
Los pines pueden ir de estos diferentes colores:&lt;br /&gt;
&lt;br /&gt;
Verde&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;Titanium.Map.ANNOTATION_GREEN&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Rojo&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;Titanium.Map.ANNOTATION_RED&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Morado&lt;b&gt;&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;CourierStd&#39;; font-size: 9pt;&quot;&gt;Titanium.Map.ANNOTATION_PURPLE&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Fuentes:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Imágenes fueron tomadas de esta presentación&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/jhaynie/whats-great-in-appcelerator-titanium-08&quot; target=&quot;_blank&quot;&gt;http://www.slideshare.net/jhaynie/whats-great-in-appcelerator-titanium-08 &lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/8350897944323467774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titanium.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/8350897944323467774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/8350897944323467774'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/05/desarrollo-de-apps-con-titanium.html' title='Desarrollo de apps con Titanium: Geolocalización'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_B1tgkyoT2SxMBJ676_XwsNsFKuNBqmGxdBEK4oimLRIP-u09dYuxvq8yRZEjBNDdbtRGvSdGBkbYDWx8-45fBXUC8A5eAg0u4o-lKD44_C9669EXP4LqOeWarClwipjS3bOry43fQtI/s72-c/Captura+de+pantalla+2012-05-09+a+la%28s%29+09.49.03.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-4818559225310003496</id><published>2012-02-21T13:39:00.000-08:00</published><updated>2012-02-22T23:12:29.314-08:00</updated><title type='text'>Los Diferentes Tipos de Comunicación Inalámbrica</title><content type='html'>En está entrada hablaremos de los diferentes términos que son usados en la comunicación inalámbrica entre los que se destacan bluetooth, infrarrojo, GSM, CDMA, 3G, 4G, EDGE, TDMA y GPRS.&lt;br /&gt;
&lt;br /&gt;
Para comenzar empecemos todo desde el inicio... recuerdan cuando algunos de ustedes ya sea amigo o familiar tenian un celular y siempre en un tiempo libre estaban entre sus amigos intercambiando archivos ya sea en la escuela o en el trabajo, todo sucedia con solo acercar dichos celulares.&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/AVvXsEh1ZXGK8FINrikUwAXUY6HL5UnZNMJB4Eg3V2QahXjCk-Ny2fyPydivyBydzQLnXY5UAucQTZig6OS6uJeISgRXlQQOEmG8ha_DfuT6XVKJ9pKERFj8gZbbjkMTlpOYJu25eDymtMV4MI4/s1600/iOSAndroidWP7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ZXGK8FINrikUwAXUY6HL5UnZNMJB4Eg3V2QahXjCk-Ny2fyPydivyBydzQLnXY5UAucQTZig6OS6uJeISgRXlQQOEmG8ha_DfuT6XVKJ9pKERFj8gZbbjkMTlpOYJu25eDymtMV4MI4/s320/iOSAndroidWP7.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A está tecnología le&amp;nbsp;llamábamos&amp;nbsp;Infrarrojo el cual es un puerto en el telefono que sirve para comunicarse con otro dispositivo con el mismo tipo de puerto y compartir datos, para que haiga dicho intercambio de información se basa en rayos infrarrojos de los que son codificados y decodificados para convertirlos en un archivo, el cual ha sido enviado.&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/AVvXsEiigbEQFfri1heVLYErT8jqUoTVsWPNVebBWHEHA0vX3nBcraUaLzEWUPzXuEpP622NTzo-j_yJwG3g_BHZaljxraxtdSWjDeOd2-gdHVrqHvq7PEovCdDZ18nfjhxzrCKl47d97Cl1WRU/s1600/infrarrojo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiigbEQFfri1heVLYErT8jqUoTVsWPNVebBWHEHA0vX3nBcraUaLzEWUPzXuEpP622NTzo-j_yJwG3g_BHZaljxraxtdSWjDeOd2-gdHVrqHvq7PEovCdDZ18nfjhxzrCKl47d97Cl1WRU/s320/infrarrojo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Este puerto no es visto con el ojo humano pero si puede ser visto por las&amp;nbsp;cámaras&amp;nbsp;convencionales.&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/AVvXsEibjeadTrvhzWnkMZ4t_Khsa_UKBpA2hEcO3A9y-orFgtR7qw7rCvgOHZiy8WUsq2-014RJUJ9dF1GRqqAjnTroSuHinJ2FeX792BQJJeOKKt65zPBP7YGizGwg3JMSkt1IpuuMdAbMAdQ/s1600/LuzInfrarrojaMovil.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibjeadTrvhzWnkMZ4t_Khsa_UKBpA2hEcO3A9y-orFgtR7qw7rCvgOHZiy8WUsq2-014RJUJ9dF1GRqqAjnTroSuHinJ2FeX792BQJJeOKKt65zPBP7YGizGwg3JMSkt1IpuuMdAbMAdQ/s320/LuzInfrarrojaMovil.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Después de conocer el Infrarrojo fuimos avanzando hacia el Bluetooth que está es una especificación industrial para redes inalámbricas de área personal(WPAN) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz.&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/AVvXsEgsewIor3EnQP9roBKlEV2MlOlcqjeIUBTiAuE-w42SEo0b61MLBOiuD3O0KqvThyphenhyphentgLik8VEeD2a9YaQFUyf_HZ31T-Xkpv5Dw20nT0F5OIdePqtKYTgx66lY9jRDRBSLlQ0uzJDKGacE/s1600/bluetooth_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;78&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsewIor3EnQP9roBKlEV2MlOlcqjeIUBTiAuE-w42SEo0b61MLBOiuD3O0KqvThyphenhyphentgLik8VEeD2a9YaQFUyf_HZ31T-Xkpv5Dw20nT0F5OIdePqtKYTgx66lY9jRDRBSLlQ0uzJDKGacE/s320/bluetooth_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Su objetivo principal objetivo es facilitar las comunicaciones entre equipos móviles y fijos, eliminar cables y conectores entre éstos y ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre equipos personales.&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/AVvXsEgEzF5MDOevLw1Cla51l3eBdB8SpHvCvBbfACUXqIskCDxqfaTeSm6QPUO0kVRQIssf0wt73kiKQMGzJ-zmLOn-rV3TOPtimoZVKagUpna5Q-vjW2ZISiFV9_24fWSf_RovAlLRXM5qzGk/s1600/Conexion&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEzF5MDOevLw1Cla51l3eBdB8SpHvCvBbfACUXqIskCDxqfaTeSm6QPUO0kVRQIssf0wt73kiKQMGzJ-zmLOn-rV3TOPtimoZVKagUpna5Q-vjW2ZISiFV9_24fWSf_RovAlLRXM5qzGk/s320/Conexion&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Entre los dispositivos que frecuentan usar está tecnología se encuentran las netbook, laptop, desktop, iPod, PSP, celulares, smartphones entre muchos otros.&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/AVvXsEhrkiRrI9OmUrqfodZUpNcfgKVMvNPHTm2r9g7R9ArYMJbVKiuDLiujQYlHp8KrpDvxgOuJqbsZwWtlUqWo4snlXsxTet8OW5QO9OHu8RkOLFHfEjioYLXh5BDkmWu-XCtx6E5flCctRns/s1600/bluetoothDis.jpg&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/AVvXsEhrkiRrI9OmUrqfodZUpNcfgKVMvNPHTm2r9g7R9ArYMJbVKiuDLiujQYlHp8KrpDvxgOuJqbsZwWtlUqWo4snlXsxTet8OW5QO9OHu8RkOLFHfEjioYLXh5BDkmWu-XCtx6E5flCctRns/s320/bluetoothDis.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;GSM(2G)&lt;/span&gt;&lt;/b&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/AVvXsEiWsE2jf5WcN_MRSvRK6YH9kmRvcv2flTo6otxnRjw4xmjtRlmovLrfZwXYAS93P95lu23U1FSyrKIjhTFCv8tyct8XKScUAqMnZZrQsP0acWWS-_DSbIvk6HLAFemxk95l0DUeTjAP03U/s1600/gsm.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/AVvXsEiWsE2jf5WcN_MRSvRK6YH9kmRvcv2flTo6otxnRjw4xmjtRlmovLrfZwXYAS93P95lu23U1FSyrKIjhTFCv8tyct8XKScUAqMnZZrQsP0acWWS-_DSbIvk6HLAFemxk95l0DUeTjAP03U/s320/gsm.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora hablaremos del término GSM que este corresponde a las siglas en inglés para &quot;Global System for Mobile Communications&quot;, sabiendo esto nos daremos cuenta que cuando hablamos de un teléfono GSM es un teléfono celular que cuenta con tecnología en base a un sistema global de comunicaciones móviles, el cliente GSM puede conectarse a través de su teléfono con su proveedor y enviar y recibir mensajes por correo electrónico, faxes, navegador por internet, acceder con seguridad a la red informática de una compañía(red local/Intranet), así como utilizar otras funciones digitales de transmisión de datos, incluyendo el servicio de mensajes cortos (SMS) o mensajes de texto, por su velocidad de transmisión y otras características, un estándar de segunda generación 2G.&lt;br /&gt;
&lt;br /&gt;
Este sistema tomó cada vez mayor importancia a lo largo del mundo, ya que este fue el más avanzado hasta su momento, dicha tecnología sigue funcionando hoy en día pero tiene sus desventajas ya que pueden ser escuchados los paquetes que son enviados.&lt;br /&gt;
&lt;br /&gt;
Para ver mas sobre el tema de escuchar paquetes o &quot;sniffing&quot; entren a está presentación en pdf debajo.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://events.ccc.de/congress/2010/Fahrplan/attachments/1783_101228.27C3.GSM-Sniffing.Nohl_Munaut.pdf&quot;&gt;http://events.ccc.de/congress/2010/Fahrplan/attachments/1783_101228.27C3.GSM-Sniffing.Nohl_Munaut.pdf&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
ó&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Pueden checar este link:&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://blog.gold-lock.com/page/4/&quot;&gt;http://blog.gold-lock.com/page/4/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Donde verán algo de sniffing usando una máquina como está.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&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/AVvXsEgRDMj8c0yjEibvW648om9xxzGk94eVSw1mlwAUsTB2b3ahxtum3ehHCeltYGs36va5rBplEFc0gmj1Pky3ssIcL9xE5Ufvp6Iqu8RhfiFL7etYZ5mgLKkhVPPG8fGNYDxOfhKfrMX66BU/s1600/GSMinterceptor&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRDMj8c0yjEibvW648om9xxzGk94eVSw1mlwAUsTB2b3ahxtum3ehHCeltYGs36va5rBplEFc0gmj1Pky3ssIcL9xE5Ufvp6Iqu8RhfiFL7etYZ5mgLKkhVPPG8fGNYDxOfhKfrMX66BU/s320/GSMinterceptor&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;CDMA&lt;/span&gt;&lt;/b&gt;&lt;/div&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;
Está tecnología para diferenciar a los distintos usuarios usan códigos digitales únicos, los códigos son conocidos tanto por la estación móvil(teléfono celular) como por la estación base, y se llaman &quot;Secuencias de Código Pseudo-Aleatorio&quot;, y por está razón todos los usuarios comparten el mismo rango del espectro radioeléctrico, todo esto sucede gracias a que usa una tecnología de Espectro Ensanchado, esto quiere decir la información se extiende sobre un ancho de banda mucho mayor que el original, conteniendo una señal identificativa, esto empieza con una transmisión a 9600 bits por segundo,por consiguiente la señal es ensanchada para ser transmitida a 1.23 Megabits por segundo aproximadamente.Un ensanchamiento implica que un código digital concreto se aplica a la señal generada por un usuario en una célula.&lt;/div&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;
Posteriormente la señal ensanchada es transmitida junto con el resto de señales generadas por otros usuarios, usando el mismo ancho de banda.Cuando las señales se reciben, las señales de los distintos usuarios se separan haciendo uso de los códigos distintivos y se devuelven las distintas llamadas a una velocidad de 9600 bps.&lt;/div&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;
La gran ventaja de está tecnología comparada con GSM es que este tipo de señales son muy difíciles de bloquear, de interferir y de identificar, por lo tanto está tecnología es muy segura.&lt;/div&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;
En México actualmente, solo las compañias UNEFON y IUSACELL manejan esta tecnología, y las demás compañias como TELCEL, Movistar siguen usando la tecnología GSM.&lt;/div&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;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/AVvXsEgUb0Pg_ifXaocWwe3Z4Ld49741tEFRZDTOn-A23aMr_-IpMFZpFAd26Yk7iozMeXV8jhzORT_-VhwSxS3gnWQX86pJ-SprLxsys73DB1TA4AskuwaOuJdT-sG8CQiLI6FZyhYDz3dSD3U/s1600/Captura+de+pantalla+2012-02-21+a+la%2528s%2529+22.38.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;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUb0Pg_ifXaocWwe3Z4Ld49741tEFRZDTOn-A23aMr_-IpMFZpFAd26Yk7iozMeXV8jhzORT_-VhwSxS3gnWQX86pJ-SprLxsys73DB1TA4AskuwaOuJdT-sG8CQiLI6FZyhYDz3dSD3U/s320/Captura+de+pantalla+2012-02-21+a+la%2528s%2529+22.38.08.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&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;
Entonces cuando hablamos que un telefono tiene CDMA significa que dicho telefono tiene capacidad de acceso múltiple digital especificada por la Asociación de Industria de Telecomunicaciones (TIA) como &quot;IS-95&quot; y que hacen estos sistemas llamados &quot;IS-95&quot;, bueno estos dividen el espectro radioeléctrico en portadoras de 1.25 MHz de ancho de banda.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;3G&lt;/b&gt;&lt;/span&gt;&lt;/div&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;
3G significa tercera generación en telefonía móvil, entre los servicios que proporcionan son la posibilidad de transferir tanto voz y datos (llamada telefónica) y datos no-voz como la descarga de programas intercambio de email y mensajería instantánea, está tecnología comenzó a utilizarse en Japón, y de a poco la fueron incorporando otros países el proceso fue muy lento debido que hacia el uso de muchas frecuencias diferentes por lo tanto requería una licencia adicional.&lt;/div&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;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/AVvXsEhpHMET3KupvMyyoqR4n2cunk4Pq8o2pKCQplbK-zmTkQi6GBtWM4rmTL63SXD5OgdkSNB1BWfHtXm1NFT3trKYMYo60zmdq7izAgrvl-zlsaOHr90eRhYf8oc149zZ7XKtyIjUDVmAd9g/s1600/3g-logo.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/AVvXsEhpHMET3KupvMyyoqR4n2cunk4Pq8o2pKCQplbK-zmTkQi6GBtWM4rmTL63SXD5OgdkSNB1BWfHtXm1NFT3trKYMYo60zmdq7izAgrvl-zlsaOHr90eRhYf8oc149zZ7XKtyIjUDVmAd9g/s1600/3g-logo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&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;
Está tecnología es muy buena para la transferencia de datos y se dice que podría alcanzar velocidades de hasta 3 Mbit/s.La desventaja de usar está tecnología es que te consume mucho saldo estando en México, ya sea en plan el internet sigue teniendo desventaja ya que es lento; con esto quiero decir que México no tiene muy buen soporte en este tipo de tecnologías aún sabiendo que el dueño de Telcel es el más rico del mundo.&lt;/div&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;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/AVvXsEirxMLYhGIQ30LSspF-EOFafzCx8WewvIxpJcLbXkISfUSA-I-CCMHv96LPpPGgHuJclusKgz25LokHs9GadCF0dpZEXlYbI3vCg0apLGZ0GUHe0LtY-Q5_YMGaRrcnkaPgeB4W_WEa8Ng/s1600/carlosslim&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/AVvXsEirxMLYhGIQ30LSspF-EOFafzCx8WewvIxpJcLbXkISfUSA-I-CCMHv96LPpPGgHuJclusKgz25LokHs9GadCF0dpZEXlYbI3vCg0apLGZ0GUHe0LtY-Q5_YMGaRrcnkaPgeB4W_WEa8Ng/s1600/carlosslim&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;4G&lt;/span&gt;&lt;/b&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/AVvXsEi4lyq80e0rfb3oFWQgIm7yLGAZ9sA_Nv-bmrl0EplBLNwWpw0tZWd3rZjeLO2S4adlUrv6rGkkZJ_NGP5xEm5_ZPfHiLfJwnB6mwpNLMQ4nzYGfQlXSHu0Vr6dCvfPIo57Co-hI5g3Ioo/s1600/4g&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4lyq80e0rfb3oFWQgIm7yLGAZ9sA_Nv-bmrl0EplBLNwWpw0tZWd3rZjeLO2S4adlUrv6rGkkZJ_NGP5xEm5_ZPfHiLfJwnB6mwpNLMQ4nzYGfQlXSHu0Vr6dCvfPIo57Co-hI5g3Ioo/s320/4g&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Al igual que 3G, 4G significa cuarta generación de servicio móvil.Para hacer un reencuentro recordemos que 2G nos trajo voz digital y mensajería de texto, luego&amp;nbsp;apareció el 3G que nos trajo los smartphones, navegación rápida por Internet y aplicaciones.&lt;br /&gt;
&lt;br /&gt;
El 4G está basada totalmente en tecnología IP, alcanzando la convergencia entre las redes por cable e inalámbricas así como en computadoras, dispositivos electrónicos y tecnología de la información para proveer velocidad de acceso de 100 Mbps en movimiento y 5 Gbps en reposo, manteniendo una calidad de servicio (QoS) de punta la punta de alta seguridad para permitir ofrecer servicios de cualquier lugar.&lt;br /&gt;
&lt;br /&gt;
En Japón se inicio la experimentación de la tecnología 4G, con la compañia NTT DOCOMO la cual dicha empresa realizo muchas pruebas con éxito alcanzando 100Mbps a 200km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;TDMA&lt;/span&gt;&lt;/b&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/AVvXsEiO1TTw2XqtLI3ZcL5L7zLS69lV00yMIbAK8TanHCsSIsFN8Xer2F2Rt-Pl95tdrBv0kv61P-l0-gO3rTHlaWi4rzjEqXWQ_fm9-wouO04Pnd5h6q4OhuTRpIiEasqxOxaEc2MMdqBGig0/s1600/tdma&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO1TTw2XqtLI3ZcL5L7zLS69lV00yMIbAK8TanHCsSIsFN8Xer2F2Rt-Pl95tdrBv0kv61P-l0-gO3rTHlaWi4rzjEqXWQ_fm9-wouO04Pnd5h6q4OhuTRpIiEasqxOxaEc2MMdqBGig0/s320/tdma&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Está tecnología &amp;nbsp;de segunda generación, distribuye las unidades de información en ranuras alternas de tiempo, dando acceso múltiple a un número reducido de frecuencias, dicha tecnología permite dar servicios de alta calidad de voz y datos.Divide un canal de frecuencia de radio en varias ranuras de tiempo seis de D-AMPS y PCS, ocho en GSM.&lt;br /&gt;
&lt;br /&gt;
A cada usuario que realiza una llamada se le asigna una ranura de tiempo específica para permitir la transmisión y esto permite que múltiples usuarios utilicen un mismo canal de frecuencia al mismo tiempo sin interferirse entre sí.&lt;br /&gt;
&lt;br /&gt;
Está tecnología tuvo grandes problemas ya que cuando se caía la red podías hacer llamadas gratis por eso las compañias optaron por GSM, en la cual TDMA usa&amp;nbsp;satélites&amp;nbsp;mientras que GSM usa antenas.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;GPRS&lt;/span&gt;&lt;/b&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/AVvXsEi9jqf9b_bImWmWl-aSsX94mDFOsfVhZx8g4dM1eHC8snfsegwLsofcOnhRkxqzY4vvkM29OYiMSuABQd8i_QUR-7sqiHxjbzkIkulDmQk0tc8IgK8xHVXLrwqlYJcaRfk8d2lsn_DPrmo/s1600/2-fuel-gprs-structure-01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;277&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jqf9b_bImWmWl-aSsX94mDFOsfVhZx8g4dM1eHC8snfsegwLsofcOnhRkxqzY4vvkM29OYiMSuABQd8i_QUR-7sqiHxjbzkIkulDmQk0tc8IgK8xHVXLrwqlYJcaRfk8d2lsn_DPrmo/s320/2-fuel-gprs-structure-01.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
GPRS sus siglas significan Global Packet Radio Service y es una arquitectura para redes de área amplia(WAN) la cual está compuesta de sistemas y protocolos de comunicaciones claramente definidos y estandarizados.Dichos sistemas hacen posible la transmisión de datos en forma de paquetes a través de una red celular, en ellos se encuentra el servicio de WAP, SMS, MMS, Internet.&lt;br /&gt;
&lt;br /&gt;
También es conocida como tecnología 2,5G por que constituye el primer paso de GSM hacia 3G&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;EDGE&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Está es una tecnología de la telefonía móvil celular, que actúa como puente entre las redes 2G y 3G, se considera la evolución del GPRS, dicha tecnología funciona como redes GSM puede ser usado en cualquier transferencia de datos basada en conmutación por paquetes como lo es la conexión a Internet.&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/AVvXsEj_VYEJTiAJMpATR4uAF05x1baHISCm57UmNl_IYtmNkiTOroVTG61zizNd6CukokSySaS1_j_PeyvboEEWPsjUJbGWToZreVGw_Lf1DT274gmfJuWFJ5LSNzX3WpydAzk8ElTruYGY5TQ/s1600/EDGE-Development-Platform1.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/AVvXsEj_VYEJTiAJMpATR4uAF05x1baHISCm57UmNl_IYtmNkiTOroVTG61zizNd6CukokSySaS1_j_PeyvboEEWPsjUJbGWToZreVGw_Lf1DT274gmfJuWFJ5LSNzX3WpydAzk8ElTruYGY5TQ/s320/EDGE-Development-Platform1.jpg&quot; width=&quot;281&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Puede alcanzar una velocidad de transmisión de 348 Kbps en modo de paquetes, para ello el operador debe implementar las actualizaciones necesarias, además no todos los teléfonos soportan está tecnología.&lt;br /&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Links de referencia:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Infrarrojo + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://legacy.spitzer.caltech.edu/espanol/edu/learn_ir/&quot;&gt;http://legacy.spitzer.caltech.edu/espanol/edu/learn_ir/&lt;/a&gt;&lt;br /&gt;
Bluetooth + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057105&quot;&gt;http://es.wikipedia.org/wiki/Bluetooth&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057105&quot;&gt;http://tecnyo.com &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://grupogeek.com/&quot;&gt;http://grupogeek.com&lt;/a&gt;&lt;br /&gt;
GSM + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057103&quot;&gt;http://www.misrespuestas.com/que-es-un-telefono-gsm.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057103&quot;&gt;http://es.wikipedia.org/wiki/Sistema_global_para_las_comunicaciones_m%C3%B3viles&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://tec.nologia.com/2009/12/29/descifran-el-codigo-que-protege-las-llamadas-de-telefonos-moviles-gsm/&quot;&gt;http://tec.nologia.com/2009/12/29/descifran-el-codigo-que-protege-las-llamadas-de-telefonos-moviles-gsm/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.gold-lock.com/page/4/&quot;&gt;http://blog.gold-lock.com/page/4/&lt;/a&gt; &lt;br /&gt;
CDMA + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.upv.es/satelite/trabajos/Grupo3_99.00/GlobalStar8.htm&quot;&gt;http://www.upv.es/satelite/trabajos/Grupo3_99.00/GlobalStar8.htm&lt;/a&gt;&lt;br /&gt;
3G + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057120&quot;&gt;http://sincelular.com/1001/%C2%BFque-es-3g/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057120&quot;&gt;http://telecomnewspk.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.newser.com/story/113780/carlos-slim-tops-forbes-billionaires-list.html&quot;&gt;http://www.newser.com/story/113780/carlos-slim-tops-forbes-billionaires-list.html&lt;/a&gt;&lt;br /&gt;
4G + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.informatica-hoy.com.ar/aprender-informatica/Que-es-4G.php&quot;&gt;http://www.informatica-hoy.com.ar/aprender-informatica/Que-es-4G.php&lt;/a&gt;&lt;br /&gt;
TDMA + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057126&quot;&gt;http://www.alegsa.com.ar/Dic/tdma.php&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://dmrassociation.org/?page_id=710&amp;amp;lang=es&quot;&gt;http://dmrassociation.org/?page_id=710&amp;amp;lang=es&lt;/a&gt;&lt;br /&gt;
GPRS + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/goog_1985057128&quot;&gt;http://trastoteca.blogspot.com/2011/12/que-es-gprs.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.guardmagic.com/03-spain/1spa-solution/00spa-short/1spa-shortly-12.htm&quot;&gt;http://www.guardmagic.com/03-spain/1spa-solution/00spa-short/1spa-shortly-12.htm&lt;/a&gt;&lt;br /&gt;
EDGE + Imagenes&lt;br /&gt;
&lt;a href=&quot;http://www.lambdasi.com.ar/textocomp.asp?id=900&quot;&gt;http://www.lambdasi.com.ar/textocomp.asp?id=900&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://churmura.com/technology/internet/edge-technology/30747/&quot; target=&quot;_blank&quot;&gt;http://churmura.com/technology/internet/edge-technology/30747/ &lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/4818559225310003496/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/los-diferentes-tipos-de-comunicacion.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4818559225310003496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/4818559225310003496'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/los-diferentes-tipos-de-comunicacion.html' title='Los Diferentes Tipos de Comunicación Inalámbrica'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ZXGK8FINrikUwAXUY6HL5UnZNMJB4Eg3V2QahXjCk-Ny2fyPydivyBydzQLnXY5UAucQTZig6OS6uJeISgRXlQQOEmG8ha_DfuT6XVKJ9pKERFj8gZbbjkMTlpOYJu25eDymtMV4MI4/s72-c/iOSAndroidWP7.jpg" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-459637412738372460</id><published>2012-02-16T08:16:00.000-08:00</published><updated>2012-02-16T18:24:23.021-08:00</updated><title type='text'>Colectores en Xcode</title><content type='html'>En esta entrada hablaremos de los diferentes colectores que existen en &lt;b&gt;Xcode&lt;/b&gt;, veremos varios ejemplos para saber para cuando usarlos y para que nos sirven, esto le tomó mucha importancia ya que la mayoría de los programadores tienden a almacenar en un solo tipo de colector para no complicarse la vida al programar algo.Para ello tienes que contar con algún conocimiento básico de &lt;b&gt;Objective-C&lt;/b&gt;, si no tienes alguna idea de que es este lenguaje de programación te recomiendo que pases a mi blog de lenguajes de programación en la cual tengo una introducción de programación orientada a objetos con &lt;b&gt;Objective-C&lt;/b&gt;, pueden entrar con el link que dejaré debajo.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://lenprog.blogspot.com/2011/10/programacion-orientada-objetos-con.html&quot; target=&quot;_blank&quot;&gt;http://lenprog.blogspot.com/2011/10/programacion-orientada-objetos-con.html&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Los colectores son algo fundamental al momento de aprender&lt;b&gt; Objective-C&lt;/b&gt;, algunas veces también son referidos como contenedores.Los colectores son un tipo de clase que pueden guardar y manejar varios objetos, en sí el proposito de estos es proveer una manera en la que puedas guardar y recuperar varios objetos de una manera eficiente.&lt;/div&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;
Hay diferentes tipos de colectores pero de los más comunes que veremos en está entrada serán los siguientes:&lt;/div&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;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSSet&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSArray&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSDictionary&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSMutableSet&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSMutableArray&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;NSMutableDictionary&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Como verán en la lista hay unos tipos de colectores que se les agrego la palabra clave &lt;b&gt;Mutable&lt;/b&gt;, en &lt;b&gt;Objective-C&lt;/b&gt; existen dos tipos los que son &lt;b&gt;Mutables&lt;/b&gt; y &lt;b&gt;No Mutables&lt;/b&gt; lo que estos dos tipos tienen en común es que pueden agregarse elementos y removerlos después de aver sido creados, ya que definimos que tienen en común ahora mencionaremos que es lo que los diferencia uno de otro, &lt;b&gt;Mutable &lt;/b&gt;significa que puede ser modificado,por lo tanto, desde el inicio hasta el final puede ser modificado.&lt;b&gt;No Mutables&lt;/b&gt; significa que después de aver sido inicializados con algunos valores no puede ser modificado.&lt;br /&gt;
&lt;br /&gt;
Ahora empezaremos a definir cada uno de los colectores:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;NSSet&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&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;
En está clase es usada para almacenar una lista de objetos desordenada, lo que significa que los objetos pueden ser almacenados sin considerar su orden, la ventaja de está clase es que es el colector más rápido.&lt;/div&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;
Ahora veremos un ejemplo de como se inicializa &lt;b&gt;NSSet&lt;/b&gt; :&lt;/div&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;pre class=&quot;brush:cpp,c&quot;&gt;NSSet *lista = [NSSet setWithObjects:@&quot;Algo&quot;, @&quot;Genetico&quot;, @&quot;Don Pedro&quot;, nil];
&lt;/pre&gt;
&lt;br /&gt;
Como verán este es un ejemplo de una lista de strings, en donde la ultimo objeto tiene que ser nil y esto indica que la lista de objetos a sido finalizada.Este ejemplo no implica que tiene que ser solamente utilizado solo para strings, este puede estar compuesto por diferentes tipos de objetos.&lt;br /&gt;
&lt;br /&gt;
Aquí tenemos un ejemplo muy común utilizado con la clase &lt;b&gt;NSSet&lt;/b&gt; que se utiliza especialmente cuando se intenta capturar las veces que haz tocado la pantalla normalmente les dicen touches.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;NSSet *lista [NSSet setWithObjects: @&quot;Algo&quot;, @&quot;Genetico&quot;, @&quot;Don Pedro&quot;, nil];

NSString *valor = [lista anyObject];
&lt;/pre&gt;
&lt;br /&gt;
Lo que vemos en la tercer linea un método que llamamos llamado &lt;i&gt;&lt;b&gt;anyObject&lt;/b&gt;&lt;/i&gt; que básicamente toma cualquier objeto que está dentro de lista, esto es sumamente necesario ya que en algunos casos algunas aplicaciones con solo tocar la pantalla, con al menos un dedo hacen algo en consecuencia.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;NSArray&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A diferencia de &lt;b&gt;NSSet&lt;/b&gt;, &lt;b&gt;NSArray&lt;/b&gt; te permite recuperar los objetos por un index que están en un arreglo en donde el index está enumerado con la posición en el cual el objeto ocupa.&lt;br /&gt;
&lt;br /&gt;
Para ello veremos un ejemplo de usando &lt;b&gt;NSArray&lt;/b&gt; donde asignaremos varios strings y los llamaremos con un &lt;i&gt;&lt;b&gt;index&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;NSArray *Arreglo = [NSArray arrayWithObjects: @&quot;Algo&quot;, @&quot;Malo&quot;, @&quot;Telefono&quot;,nil];

NSLog (@&quot;%@&quot;, [Arreglo objectAtIndex:0]);
NSLog (@&quot;%@&quot;, [Arreglo objectAtIndex:1]);
NSLog (@&quot;%@&quot;, [Arreglo objectAtIndex:2]);

&lt;/pre&gt;
Impresión de resultado:&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/AVvXsEjbt_nWofBhL0UqEJ5sd5ra1o-LYzEs_Kr7mtcJB6MX8kDh64t2K4KRd8SoeQtkdRRXpRgiQFlN28Y_iL9hTBHkL7DfSnS6i-whhB4hUOy9r9YLP1vWfYWco8C5P64Rpqz6r-e5HM5qOLw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+01.30.06.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/AVvXsEjbt_nWofBhL0UqEJ5sd5ra1o-LYzEs_Kr7mtcJB6MX8kDh64t2K4KRd8SoeQtkdRRXpRgiQFlN28Y_iL9hTBHkL7DfSnS6i-whhB4hUOy9r9YLP1vWfYWco8C5P64Rpqz6r-e5HM5qOLw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+01.30.06.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Esto es sencillo de explicar&amp;nbsp;prácticamente&amp;nbsp;el método &lt;b&gt;&lt;i&gt;objectAtIndex&lt;/i&gt;&lt;/b&gt; seguido del número de la posición del objeto es el que será tomado e imprimido por medio de &lt;b&gt;&lt;i&gt;NSLog&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Para saber el tamaño de un array o arreglo puede ser calculado de una manera muy sencilla por medio de esta manera:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;int contador = [Arreglo count];
&lt;/pre&gt;
&lt;br /&gt;
Impresión de resultado donde se logra apreciar en el debugger:&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/AVvXsEg3fCo0tvnr1JBJ014DiqwJycSWGmFbTPj4B2jiZHcClT9cw4a0a8fDqWBfC3PF5ffOmC7nGjLriGK4FpjmINsIdwZHYzVIzrs6PkAVxLvFTINnqerAS8dF9kOsbKTQkgOMfwD1Lqcb2vQ/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+02.00.32.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/AVvXsEg3fCo0tvnr1JBJ014DiqwJycSWGmFbTPj4B2jiZHcClT9cw4a0a8fDqWBfC3PF5ffOmC7nGjLriGK4FpjmINsIdwZHYzVIzrs6PkAVxLvFTINnqerAS8dF9kOsbKTQkgOMfwD1Lqcb2vQ/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+02.00.32.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como podrán observar para tener el tamaño primero debemos darle el nombre en este caso lo llamamos Arreglo y luego &lt;b&gt;&lt;i&gt;count&lt;/i&gt;&lt;/b&gt; que significa que contará el tamaño del Arreglo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;NSDictionary&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
La clase de &lt;b&gt;NSDictionary&lt;/b&gt; en diferencia de &lt;b&gt;NSArray&lt;/b&gt; y &lt;b&gt;NSSet&lt;/b&gt; es que pueden crear una lista de objetos con index en el cual puede ser compuesta por otra lista que comúnmente las llamamos &lt;i&gt;&lt;b&gt;keys&lt;/b&gt;&lt;/i&gt;, el problema aquí es que no podemos repetir ninguna key.Dentro de la lista de objetos pueden ser agregados mas listas de objetos.&lt;br /&gt;
&lt;br /&gt;
Ahora veremos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;NSDictionary *zoologico = [NSDictionary dictionaryWithObjectsAndKeys:
                               @&quot;elefante&quot;, miObjetoElefante,
                               @&quot;jirafa&quot;, miObjetoJirafa,
                               @&quot;mono&quot;, [NSDictionary dictionaryWithObjectsAndKeys:
                                         @&quot;Araña&quot;, miMonoAraña,
                                         @&quot;Capuchino&quot;, miMonoCapuchino,
                                         @&quot;Orangutan&quot;, miMonoOrangutan,nil]
                               @&quot;zebra&quot;, miObjetoZebra, nil];
&lt;/pre&gt;
&lt;br /&gt;
Este es un ejemplo de como se usa &lt;b&gt;NSDictionary&lt;/b&gt; donde le estamos dando el objeto que en este caso colocamos un String &amp;nbsp;y después nuestra &lt;b&gt;&lt;i&gt;key&lt;/i&gt;&lt;/b&gt; para identificarla, con la condición de que no se repita.&lt;br /&gt;
&lt;br /&gt;
Y la gran pregunta como manejarlos, o como identificarlos &amp;nbsp;tal ves creas que es algo mitico pero no lo es primero tenemos que identificar de que clase son para hacer esto mas&amp;nbsp;didáctico&amp;nbsp;supongamos que zebra, mono, elefante y jirafa son objetos de la clase&lt;b&gt; NSDictionary&lt;/b&gt; y que la lista de monos son objetos de la clase Animal, ahora veremos el ejemplo para identificarlos uno de otro.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;      for(id element in [zoologico allValues]){
         if ([element isKindOfClass:[Animal class]]){
             NSLog(@&quot;Eres de la clase Animal&quot;);
       }
       if([element isKindOfClass:[NSDictionary class]]) {
             NSLog(@&quot;Eres de la clase NSDictionary&quot;);
       }
     }
             
&lt;/pre&gt;
&lt;br /&gt;
Primero que nada definamos por que usamos id, bueno id se utiliza cuando realmente no sabemos que clases están almacenadas en el colector.Como se observa toma todo lo que contenga zoologico con la palabra clave &lt;b&gt;&lt;i&gt;allValues&lt;/i&gt;&lt;/b&gt; y hace una iteración por cada elemento en el, luego dentro del if pregunta si dicho elemento es de la clase Animal si es así imprime &lt;i&gt;&lt;b&gt;&lt;u&gt;Eres de la clase Animal&lt;/u&gt;&lt;/b&gt; &lt;/i&gt;y lo mismo sucede con el otro if.Esto funciona gracias al metodo llamado&lt;b&gt;&lt;i&gt; isKindOfClass&lt;/i&gt;&lt;/b&gt; que regresa un valor boleano si es la clase que estamos buscando nos retornara un &lt;b&gt;&lt;i&gt;&lt;u&gt;True&lt;/u&gt;&lt;/i&gt;&lt;/b&gt; en caso contrario un &lt;b&gt;&lt;i&gt;&lt;u&gt;False&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Hasta aquí hemos visto nadamas clases &lt;b&gt;No Mutables&lt;/b&gt;, como lo&amp;nbsp;habíamos comentado una vez que inicializan no podrán ser cambiadas, ahora veremos clases &lt;b&gt;Mutables&lt;/b&gt; que estas si pueden ser modificadas una vez que han sido inicializadas.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;NSMutableSet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Este contenedor puede ser inicializado de igual manera que el &lt;b&gt;NSSet&lt;/b&gt; o puede ser inicializado sin ningún valor para posteriormente agregar algunos objetos.&lt;br /&gt;
&lt;br /&gt;
Ahora veremos un ejemplo de ello:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;NSMutableSet *lista = [[NSMutableSet alloc] init];
 [lista addObject:@&quot;Algo&quot;];
 [lista addObject:@&quot;Genetico&quot;];
 [lista addObject:@&quot;Don Pedro&quot;];

 for (id valor in lista) {
 NSLog(@&quot;%@&quot;, valor);
 }

&lt;/pre&gt;
Como veremos inicializamos nuestro contenedor con el nombre de lista, luego agregamos en cada línea un objeto diferente con el método &lt;b&gt;&lt;i&gt;addObject,&lt;/i&gt;&lt;/b&gt; después para imprimirlo por medio de un for donde tomará todo el contenido de lista y gracias a id mostrara cada uno de ellos y será imprimido por &lt;b&gt;NSLog&lt;/b&gt;.Ahora veremos una captura de la consola.&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/AVvXsEgmMylGOaUPgsKnzrZYPHsIyfKz9xnDvD6JLT-6Zabgd0ehuo20JQWghAvtpVnlnLR7-rPXqaEyPfVUA5dTeCx28I-i-hXiB49nfvNhtO9QdMdZTSQCNYjXZ4mMQNK67wWfou0lNny19Pw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+09.27.32.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/AVvXsEgmMylGOaUPgsKnzrZYPHsIyfKz9xnDvD6JLT-6Zabgd0ehuo20JQWghAvtpVnlnLR7-rPXqaEyPfVUA5dTeCx28I-i-hXiB49nfvNhtO9QdMdZTSQCNYjXZ4mMQNK67wWfou0lNny19Pw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+09.27.32.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora si queremos eliminar todos los objetos haremos lo siguiente por el método llamado &lt;b&gt;&lt;i&gt;removeAllObjects&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;[lista removeAllObjects];
&lt;/pre&gt;
&lt;br /&gt;
Ahora que pasa si queremos eliminar un objeto en especifico, bueno lo que tenemos que hacer es lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt;NSString *Cosa =@&quot;Cosa&quot;;

 [lista addObject: Cosa];
 [lista addObject: Cosa];
 
 for (id valor in lista){
     NSLog(@&quot;%@&quot;,valor);
  }
 
 [lista removeObject: Cosa];

 for (id valor in lista){
     NSLog(@&quot;%@&quot;, valor);
 }
&lt;/pre&gt;
&lt;br /&gt;
Ahora como observamos creamos una variable Cosa tipo String en la cual posteriormente la agregamos a lista, se agregó dos veces para demostrar que no podemos repetir el mismo objeto mas de dos veces, luego utilizamos el for para demostrar que se agregaro el objeto, después usaremos el método &lt;b&gt;&lt;i&gt;removeObject&lt;/i&gt;&lt;/b&gt; seguido del objeto que queremos eliminar para luego pasar al otro for para comprobar que se haya eliminado si todo salió bien verás algo como esto.&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/AVvXsEiadiAi4bqMHLe9meSF9K_u6fdRujZfNzRJtOUrwAAba1vKarB_-DfBz_HrPrDiF0NdumCs7EJjobzqKgnEi_LaXniLeSB4b4yYSUCktj7h8CjPvBIgXChjTMbTXEY7yAOeee47-mYe_fw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+09.48.39.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/AVvXsEiadiAi4bqMHLe9meSF9K_u6fdRujZfNzRJtOUrwAAba1vKarB_-DfBz_HrPrDiF0NdumCs7EJjobzqKgnEi_LaXniLeSB4b4yYSUCktj7h8CjPvBIgXChjTMbTXEY7yAOeee47-mYe_fw/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+09.48.39.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;NSMutableArray&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Este contenedor es lo mismo a usar un &lt;b&gt;NSArray&lt;/b&gt; con diferencia de que pueden ser agregadas, modificadas y eliminadas, algo interesante que agregar es que podemos utilizar los métodos anteriores que utilizamos con &lt;b&gt;NSMutableSet&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora veremos un ejemplo agregando e insertando objetos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt; NSMutableArray *Arreglo = [[NSMutableArray alloc] init];
    
    [Arreglo addObject:@&quot;Algo&quot;];
    [Arreglo addObject:@&quot;Pasa&quot;];
    [Arreglo addObject:@&quot;Siempre&quot;];
     
     for(id valor in Arreglo){
     NSLog(@&quot;%@&quot;, valor);
     }
     
     [Arreglo insertObject:@&quot;Inserte algo entre Algo y Pasa&quot;];
    
    for(id valor in Arreglo){
        NSLog(@&quot;%@&quot;, valor);
    }

&lt;/pre&gt;
Lo que hicimos fue agregar el objeto(lo mismo que en &lt;b&gt;NSSet&lt;/b&gt;) luego demostramos que han sido agregados en el for, después insertamos un objeto en el index 1 esto quiere decir que se posicionará en la posición 1 y se recorrerán los demás hacia abajo, como podrán observar debajo.&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/AVvXsEjNSvcNKdJfRXTLesoj9QhtzcFzg4XMPReEv0r-A3R9y6djl5c2hflzPEouZyutkZPfsDO4LcnbRYOgBupkWHTTNcdnI8DGnT2zIVKJzdSyiK4uqkj7WNIUSG2OfcrD0npHRd6rGJzJF_M/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+10.03.45.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/AVvXsEjNSvcNKdJfRXTLesoj9QhtzcFzg4XMPReEv0r-A3R9y6djl5c2hflzPEouZyutkZPfsDO4LcnbRYOgBupkWHTTNcdnI8DGnT2zIVKJzdSyiK4uqkj7WNIUSG2OfcrD0npHRd6rGJzJF_M/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+10.03.45.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Los métodos mas usamos son &lt;b&gt;&lt;i&gt;removeAllObjects&lt;/i&gt;&lt;/b&gt; que quita todos los objetos que esten dentro del contenedor, &lt;b&gt;&lt;i&gt;removeLastObject &lt;/i&gt;&lt;/b&gt;que quita el último objeto agregado del contenedor,&lt;b&gt;&lt;i&gt; removeObjectAtIndex &lt;/i&gt;&lt;/b&gt;que este remueve un objeto dependiendo del index que haya sido dado.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;NSMutableDictionary&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Este contenedor no es muy diferente a &lt;b&gt;NSDictionary&lt;/b&gt;, ya que este te provee de los mismo con la diferencia que poder agregar y remover elementos.&lt;br /&gt;
&lt;br /&gt;
A continuación veremos un ejemplo agregando objetos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:cpp, c&quot;&gt; NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
 
 [dic setObject:@&quot;Primero&quot; forKey:@&quot;1&quot;];
 [dic setObject:@&quot;Segundo&quot; forKey:@&quot;2&quot;];
 [dic setObject:@&quot;Tercero&quot; forKey:@&quot;3&quot;];

 for(id valor in dic){
    NSLog(@&quot;%@&quot;, valor);
 }
 
 [dic setObject:@&quot;Primero y Segundo&quot; forKey:@&quot;1.5&quot;];
 
 for(id valor in dic){
    NSLog(@&quot;%@&quot;, valor);
 }
&lt;/pre&gt;
&lt;br /&gt;
Agregamos tres objetos con ciertas keys, luego comprobamos que están, ya comprobadas agregamos un objeto, usamos el for para verificar lo que sucedió:&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/AVvXsEjyaYPVnCwtFdIXvkwXERaK3B-DC7jQr7QFHjnq_pc4zBnT-kGFmPJ_Q7uxxJkFsFIBZxTzCAyXpdH0oTGLy8LPXolRdN6_UdVxXlQuu6TXL2_L0bcBFoPDE9PLinT_2zzmXSYP31PY4vg/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+10.19.32.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/AVvXsEjyaYPVnCwtFdIXvkwXERaK3B-DC7jQr7QFHjnq_pc4zBnT-kGFmPJ_Q7uxxJkFsFIBZxTzCAyXpdH0oTGLy8LPXolRdN6_UdVxXlQuu6TXL2_L0bcBFoPDE9PLinT_2zzmXSYP31PY4vg/s1600/Captura+de+pantalla+2012-02-16+a+la(s)+10.19.32.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como podrán ver se agregó un nuevo objeto con que no puede ser insertada en una posición en especifico como &lt;b&gt;NSArray&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Libro de referencia&lt;/b&gt;:&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: blue;&quot;&gt;Objective-C for Absolute Beginners,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;Excelente libro se los recomiendo&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/459637412738372460/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/colectores-en-xcode.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/459637412738372460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/459637412738372460'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/colectores-en-xcode.html' title='Colectores en Xcode'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbt_nWofBhL0UqEJ5sd5ra1o-LYzEs_Kr7mtcJB6MX8kDh64t2K4KRd8SoeQtkdRRXpRgiQFlN28Y_iL9hTBHkL7DfSnS6i-whhB4hUOy9r9YLP1vWfYWco8C5P64Rpqz6r-e5HM5qOLw/s72-c/Captura+de+pantalla+2012-02-16+a+la(s)+01.30.06.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-3306345814685954896</id><published>2012-02-13T23:14:00.000-08:00</published><updated>2012-02-14T00:05:58.403-08:00</updated><title type='text'>Introducción a Titanium</title><content type='html'>Existen varias maneras de crear aplicaciones móviles ya sea por eclipse para Android o ya sea para Xcode para iOS, esto algunas veces sea vuelto complicado ya que esto conlleva tiempo tener que entender y aprender los dos ambientes de desarrollo.Afortunadamente existen algunas plataformas como Titanium que nos permiten hacer una aplicación &amp;nbsp;de manera nativa en Android e iOS con un lenguaje de programación muy conocido y práctico, para ello les mencionare una introducción para que se enteren de que trata muy bien Titanium.&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/AVvXsEjquFIQhjzb0Cb91XUm6zWYJ8zszn2ODUGCwmgwqh5BKlXnd-hcDQ3nHDlU3EByqyIFS4gkjxj8t7I02Y6lYALNfJ08szjGNAP7oiD8HL62olmO6q6tFj6OHaiKDNlUC2gZ8sD48s9UCtM/s1600/tit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjquFIQhjzb0Cb91XUm6zWYJ8zszn2ODUGCwmgwqh5BKlXnd-hcDQ3nHDlU3EByqyIFS4gkjxj8t7I02Y6lYALNfJ08szjGNAP7oiD8HL62olmO6q6tFj6OHaiKDNlUC2gZ8sD48s9UCtM/s320/tit.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Titanium es una herramienta open source lo que significa que es gratis, es fácil de usar ya que tiene una IDE similar a la de eclipse.&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/AVvXsEgFufFXckun81xLrXObgnTaKapj5quIrt4KQ_JsiDWS20v0690l3_wh3rZAC953RnclilOIhwELFN5Q9aurD0YMcFvx1eC16Ve4Eps_QOezE-tWrqLgWWBNbvi0NYFaRf8_zqJierbBcow/s1600/titanium_studio.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/AVvXsEgFufFXckun81xLrXObgnTaKapj5quIrt4KQ_JsiDWS20v0690l3_wh3rZAC953RnclilOIhwELFN5Q9aurD0YMcFvx1eC16Ve4Eps_QOezE-tWrqLgWWBNbvi0NYFaRf8_zqJierbBcow/s400/titanium_studio.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Este puede ser descargado por medio del link que está debajo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.appcelerator.com/products/download/&quot;&gt;http://www.appcelerator.com/products/download/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
El único requisito es registrarse ya que con ello, podrás descargar algunos modulos que podrás implementarlos en el desarrollo de app y dichos modulos serán enviados a tu cuenta.&lt;/div&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;
Por el momento pasaremos por alto la instalación ya que esto no es complicado y tambien la instalación de &amp;nbsp;el simulador de Android ya que estamos suponiendo que has programado una app de Android en eclipse alguna vez.&lt;/div&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;
Unos de los componentes que mas son usados en una aplicación son los botones con eventos, secciones que son llamados tabs, ventanas, alertas entre otros aquí les explicaré algunos ejemplos sencillos sobre como usar algunos componentes para ello les pondré dos capturas de un Android y de un iOS para que puedan ver los resultados.&lt;/div&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;
Para comenzar crearemos un nuevo proyecto File/New/Titanium mobile project después le daremos nombre a nuestro proyecto como Ejemplo1 luego observaran en App Id esto &lt;i&gt;&lt;b&gt;com.gsgv.Ejemplo1&lt;/b&gt;&lt;/i&gt;, donde &lt;b&gt;&lt;i&gt;com&lt;/i&gt;&lt;/b&gt; significa company que es&amp;nbsp;compañía&amp;nbsp;en ingles y después de eso verán&lt;b&gt;&lt;i&gt; gsgv&lt;/i&gt;&lt;/b&gt; que esas son mis iniciales comúnmente ahi va el nombre de la&amp;nbsp;compañía&amp;nbsp;luego de eso, veremos que dice &lt;b&gt;&lt;i&gt;Ejemplo1&lt;/i&gt;&lt;/b&gt; que es el nombre del proyecto.Si les quedó alguna duda dejaré una captura de pantalla de esto.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&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/AVvXsEjRylg0K706GF-5PiYhyphenhyphenveTam_zhe1UmFnL6qmygrimfKK5E9Ha3UhImOOeGU27QdQ-UOCeg1aje00PjEJjmKoLTFcsy5lVeZ1hFXs-jT-q196srPp-XNnfO6lmsNc8cR3gtGwtZ2YX8FU/s1600/Captura+de+pantalla+2012-02-14+a+la(s)+01.06.13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;381&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRylg0K706GF-5PiYhyphenhyphenveTam_zhe1UmFnL6qmygrimfKK5E9Ha3UhImOOeGU27QdQ-UOCeg1aje00PjEJjmKoLTFcsy5lVeZ1hFXs-jT-q196srPp-XNnfO6lmsNc8cR3gtGwtZ2YX8FU/s400/Captura+de+pantalla+2012-02-14+a+la(s)+01.06.13.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&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;
Ahora nos centraremos dentro de la carpeta &lt;b&gt;&lt;i&gt;Resources&lt;/i&gt;&lt;/b&gt; en el archivo &lt;i style=&quot;font-weight: bold;&quot;&gt;app.js &lt;/i&gt;en el copiaremos y pegaremos el siguiente código, en el cual se hicieron dos secciones diferentes donde cada sección está compuesto de una ventana que contiene una etiqueta y un botón, dicho botón tiene un evento que al momento de dar click en el envia un mensaje de alerta.Todo está comentado para que esto sea entendible.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js, jscript, javascript&quot;&gt;// Creamos el grupo de tabs
var tabGroup = Titanium.UI.createTabGroup();


//
// Creamos una ventana en la que agregaremos un label y un boton.Y la misma ventana será agregada a un tab que es una sección de la app.
//

//Creamos ventana
var win1 = Titanium.UI.createWindow({  
    title:&#39;Tab 1&#39;,                        //Titulo de la ventana
    backgroundColor:&#39;#fff&#39;               //Color de fondo blanco
});
//Creamos el tab donde sera agregada la ventana
var tab1 = Titanium.UI.createTab({  
    icon:&#39;KS_nav_views.png&#39;,             //Imagen que sera puesta en el tab
    title:&#39;Soy Tab 1&#39;,                   //Titulo del Tab
    window:win1                          //Ventana que sera agregada
});

//Creamos una etiqueta
var label1 = Titanium.UI.createLabel({
 color:&#39;#999&#39;,                        //Color del label
 text:&#39;Yo soy la ventana 1&#39;,          //Texto dentro de la ventana
 font:{fontSize:20,fontFamily:&#39;Helvetica Neue&#39;},//Tamanio de letra y tipo de letra 
 textAlign:&#39;center&#39;,                  //Texto alineado en el centro
 width:&#39;auto&#39;                         //Esta en auto lo ancho, esto significa que tomara el tamanio necesario nadamas
});
//Creamos un boton
var boton1 = Titanium.UI.createButton({
 title:&#39;Boton 1&#39;,                     //Texto dentro del boton
 top:200,        //Posicion del boton
 width:300,        //Ancho del boton
 height:100        //Altura del boton
});
//Creamos un evento del boton
boton1.addEventListener(&#39;click&#39;, function(e){ //click significa que en caso de dar click una vez hacer lo siguiente
 alert(&#39;Hola desde el botón 1&#39;);           //Aparecera una alerta con el mensaje que tiene dentro
});
//Agregamos los componentes a la ventana
win1.add(label1);
win1.add(boton1);
//
// Creamos una ventana en la que agregaremos un label y un boton.Y la misma ventana será agregada a un tab que es una sección de la app.
//

//Creamos ventana
var win2 = Titanium.UI.createWindow({  
    title:&#39;Tab 2&#39;,                       //Titulo de la ventana
    backgroundColor:&#39;#fff&#39;               //Color de fondo blanco
});
//Creamos el tab donde sera agregada la ventana
var tab2 = Titanium.UI.createTab({  
    icon:&#39;KS_nav_ui.png&#39;,
    title:&#39;Soy Tab 2&#39;,
    window:win2
});
//Creamos una etiqueta
var label2 = Titanium.UI.createLabel({
 color:&#39;#999&#39;,
 text:&#39;Yo soy la ventana 2&#39;,
 font:{fontSize:20,fontFamily:&#39;Helvetica Neue&#39;},
 textAlign:&#39;center&#39;,
 width:&#39;auto&#39;
});
//Creamos boton
var boton2 = Titanium.UI.createButton({
 title:&#39;Boton 2&#39;,
 top:200,
 width:300,
 height:100
});
//Creamos el evento del boton
boton2.addEventListener(&#39;click&#39;, function(e){
 alert(&#39;Hola desde el botón 2&#39;);
});
//Agregamos elementos a la ventana
win2.add(label2);
win2.add(boton2);



//
//  Agregamos los tabs que usaremos al tab group
//
tabGroup.addTab(tab1);  
tabGroup.addTab(tab2);  


// Abre el tabGroup esto significa que abrira todas las tabs que han sido agregadas
tabGroup.open();

&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
Y como prometí colocare dos capturas de pantalla la primera con Android y la segunda con iOS.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Android&lt;/span&gt;&lt;/b&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/AVvXsEjNnU7n82_FWsC0G7yCa-n60iJdECYyQaNIsHig5XIq6vAfPoncCpbDkodXtE3ulrQE7fJ_OIQ-QFwXsnDQnkJiVtKAjBQsHYOoeOifOY9_uHtmxjVXmEJ8IKfwQHJ4_K004Vq5bi0DeiA/s1600/Captura+de+pantalla+2012-02-14+a+la(s)+02.00.54.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNnU7n82_FWsC0G7yCa-n60iJdECYyQaNIsHig5XIq6vAfPoncCpbDkodXtE3ulrQE7fJ_OIQ-QFwXsnDQnkJiVtKAjBQsHYOoeOifOY9_uHtmxjVXmEJ8IKfwQHJ4_K004Vq5bi0DeiA/s400/Captura+de+pantalla+2012-02-14+a+la(s)+02.00.54.png&quot; width=&quot;266&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;iOS&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&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/AVvXsEiasiUAAnzSZhZ1BtElCt0wKBMfq4EPaGB4jmlifJ8Lrd4nViRR2cSV3ug6EwOxfIF4yzuotC-anKSFXp8UCEkW_jHPXDnc7y-PazsCy6FwWbipBrR8RdQiJcvaDZwjYlcBwuYuz8sQsvk/s1600/Captura+de+pantalla+2012-02-14+a+la(s)+01.54.00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiasiUAAnzSZhZ1BtElCt0wKBMfq4EPaGB4jmlifJ8Lrd4nViRR2cSV3ug6EwOxfIF4yzuotC-anKSFXp8UCEkW_jHPXDnc7y-PazsCy6FwWbipBrR8RdQiJcvaDZwjYlcBwuYuz8sQsvk/s400/Captura+de+pantalla+2012-02-14+a+la(s)+01.54.00.png&quot; width=&quot;263&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Links de referencia:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Logotipo de Titanium&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://lin-app.com/category/programming/appcelerator_titanium&quot;&gt;http://lin-app.com/category/programming/appcelerator_titanium&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/3306345814685954896/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/introduccion-titanium.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/3306345814685954896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/3306345814685954896'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/introduccion-titanium.html' title='Introducción a Titanium'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjquFIQhjzb0Cb91XUm6zWYJ8zszn2ODUGCwmgwqh5BKlXnd-hcDQ3nHDlU3EByqyIFS4gkjxj8t7I02Y6lYALNfJ08szjGNAP7oiD8HL62olmO6q6tFj6OHaiKDNlUC2gZ8sD48s9UCtM/s72-c/tit.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6269519742589354860.post-1270575816155394502</id><published>2012-02-13T21:37:00.000-08:00</published><updated>2012-02-21T08:51:11.445-08:00</updated><title type='text'>Smartphones y Computadoras Portátiles</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Comparación de algunos smartphone&#39;s&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;iPhone 4s&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&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/AVvXsEiyCEQzxFpnQkNjIQmSkEz3OxvmnpH1eGVFlupvbC6_ATLfjMwo_FP8uEUE4cZfRoI6-FxxxoiNeaoSFFGuY9TzoZqazSsAtosf3aYohzAYEcw4nLBxRhwqY0bEtf_yvDrauJyTME7QPOk/s1600/apple-iphone-4.jpg&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/AVvXsEiyCEQzxFpnQkNjIQmSkEz3OxvmnpH1eGVFlupvbC6_ATLfjMwo_FP8uEUE4cZfRoI6-FxxxoiNeaoSFFGuY9TzoZqazSsAtosf3aYohzAYEcw4nLBxRhwqY0bEtf_yvDrauJyTME7QPOk/s400/apple-iphone-4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;b&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Características sobresalientes&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Procesador Apple A5 de doble núcleo&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Sistema operativo iOS 5&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Memoria RAM 1GB&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; GSM/CDMA&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Batería de duración de hasta 8 horas en conversación vía 3G, 9 navegación web vía Wifi, 10 horas con vídeo y hasta 40 en modo música.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Camara 8 megapíxeles retroiluminado&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Graba 1080p&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Asistente personal Siri&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Disponible en 16, 32 y 64 GB&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; GPS&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Cámara frontal de 2.0 megapíxeles.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Precio en contrato entre los $3,899.00 hasta $8,669.00&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Resolución de pantalla 960x640.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Ventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Puedes tomar fotografías de manera profesional.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tiene una gran velocidad de booteo, no hay lags, o freeze’s&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Buen smartphone para gente.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Gracias a su procesador puedes disfrutar de juegos en HD con una calidad comparable a las de una consola de videojuegos.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Su asistente Siri te ayuda en cualquier problema que tengas y gracias esto complementa su accesibilidad.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tiene servicio iCloud&amp;nbsp;&lt;/span&gt;dicho servicio es como una memoria USB pero en la red virtualmente sincronizada a todos tus dispositivos de Apple.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Desventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tiene problemas de batería, debido a que se calientan demasiado por gran tiempo de usó.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Siri no esta disponible para todos los idiomas.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Su precio es muy caro.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Su sistema operativo no permite instalar aplicaciones externas.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;iCloud está limitado hasta 5GB y para almacenar mas tienes que pagar.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Nos permite correr muchas aplicaciones de manera rápida, tiene gran accesibilidad muy bueno para personas con alguna discapacidad visual, buen telefono para los fotografos ya que toma fotos casi perfectas, es excelente para un profesionista que regularmente usa mucho el mail, y se mantiene siempre en contacto con la gent,ya que con su antena GSM/CDMA puede ser usado alrededor del mundo.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;HTC Evo 4G&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&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/AVvXsEhfQdAtjazjbdivvxmwgtWiWEYmXPuh-407r8_K0eilHCxxL9i7QZUoNnLoyicnFveLttEgLSCCyP-qfcftBYYySP44YLlueJC5GFJxjGSYIpSexLFOq0vUNWhaQk-2SOAsJ7lgqLeWKDc/s1600/512px-HTC_Evo_4G.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfQdAtjazjbdivvxmwgtWiWEYmXPuh-407r8_K0eilHCxxL9i7QZUoNnLoyicnFveLttEgLSCCyP-qfcftBYYySP44YLlueJC5GFJxjGSYIpSexLFOq0vUNWhaQk-2SOAsJ7lgqLeWKDc/s400/512px-HTC_Evo_4G.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot; style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Características sobresalientes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Procesador Snapdragon de 1 GHz.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Sistema operativo Android 2.3 Gingerbread&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;1GB RAM&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Memoria RAM 512 MB.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Cámara de 8 megapixeles.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Salida HDMI&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Cámara frontal de 1.3 megapixeles.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tarjeta microSD hasta 32GB, 8 GB incluida.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Antena CDMA, WiMAX y soporte para redes 3G.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Duración de pila hasta 9 h 20 min (2G) Y hasta 7 h 45 min (3G)&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Resolución de pantalla 540 x 960 pixels&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Precio en contrato entre los $1,899.00 hasta $5,669.00&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Ventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Puedes hacer video llamadas.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tiene la capacidad de compartir su acceso a internet hasta con 8 dispositivos.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Conector HDMI para reproducir su contenido en televisores.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Delgado comparandolo con las características que tiene, con otros equipos.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Desventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li2&quot; style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Tiene una batería con muy poca vida.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p3&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Este smartphone consta de unas características peculiares ya que su velocidad de 4G y la opción de manejar múltiples ventanas en internet le da ventaja a sus usuarios de estar enterados de todo en todo momento.Al igual que el iPhone 4s tiene una antena CDMA que nos permite ser usado alrededor de mundo.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Comparación de computadoras portatiles&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Samsung ChromeBook&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&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/AVvXsEgJKX77GOj3dQxhBlFJEkj400_Y920Tv4c58HJT0gGXCs5S6s6fKCS1yBaS2Yx3VtzErdSUT1MERHfOxnuIQda5B_3NeRd6SwncFMWc_zF5iWdnuYf5oAZInJXWt9AHZwli_JMuqFZ1WfM/s1600/samsung_series-5-chromebook-thumb-450x338.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJKX77GOj3dQxhBlFJEkj400_Y920Tv4c58HJT0gGXCs5S6s6fKCS1yBaS2Yx3VtzErdSUT1MERHfOxnuIQda5B_3NeRd6SwncFMWc_zF5iWdnuYf5oAZInJXWt9AHZwli_JMuqFZ1WfM/s400/samsung_series-5-chromebook-thumb-450x338.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;b&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Características sobresalientes &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Peso de 3.26 libras.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Pantalla de 12.1 pulgadas.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Batería&amp;nbsp;Li-ion con más de 8.5 horas de uso continuo.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Procesador Intel AtomTM Dual-Core.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Wi-Fi con banda doble y 3G World-mode (opcional) integrados.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Webcam de alta definición con micrófono con cancelación de ruido.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; 2 puertos USB 2.0.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Ranura para tarjeta de memoria 4 en 1.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Minipuerto VGA.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Teclado Chrome de tamaño estándar.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Panel táctil completamente interactivo de gran tamaño.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; 2 GB de memoria RAM.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li5&quot;&gt;&lt;span class=&quot;s1&quot;&gt; Memoria interna SSD de 16 GB.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;La Samsung Series 5 ChromeBook puede ser comprada desde Amazon, Best Buy, Ebay entre otros a un precio de $429.00 dólares para la versión WiFi y $499.00 dólares para la versión 3G.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Ventajas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Debido a la combinación del sistema operativo Chrome OS y la memoria principal SSD conforman una combinación que permite arrancar la ChromeBook en menos de 10 segundos.La batería nos permite una navegación web de un aproximado de 8.5 horas y con reproducción de video bajaría hasta las cinco horas.Todos los logs, historial entre otras podrá ser almacenada en tu cuenta de Google con este gran beneficio no perderíamos nuestros datos.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Desventajas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Una de las principales desventajas es el precio de la Samsung Series 5 ChromeBook ya que con ello te podrías comprar un iPad, una tablet Android, una laptop e incluso una Mac, realmente este nuevo producto es una mala apuesta por parte de Samsung y también por parte de Google porque por un lado Samsung no vende sus productos ya que la competencia tiene otros y con mejores características y por parte de Google la mayoría de la gente no conocerá su sistema operativo ya que no es muy factible el precio de los portadores de dicho sistema operativo.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Conclusión&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;No es una buena inversión ya que puedes comprar con el mismo dinero un smartphone y tener las mismas funciones pero con la opción de tenerlo en tu bolsillo, aunque es muy rápido.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/DazdIFMbC_4&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;MacBook Pro 13,3 edición 2011&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&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/AVvXsEhutZoEOAGp7Gc25k227WqoZGMDOAwy94YjaVxJ6T79Xe2n-Ft24p7pnKn8nrNjgmnqE85WINlDmj3ORi6xf2F1ghk3hNekRrtVlTnQKGkjiP9haJr-Wy8YD7po8sJR9T2n3yrCztqinM0/s1600/macbookpro.jpg&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/AVvXsEhutZoEOAGp7Gc25k227WqoZGMDOAwy94YjaVxJ6T79Xe2n-Ft24p7pnKn8nrNjgmnqE85WINlDmj3ORi6xf2F1ghk3hNekRrtVlTnQKGkjiP9haJr-Wy8YD7po8sJR9T2n3yrCztqinM0/s400/macbookpro.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot; style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Características sobresalientes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Procesador Intel Core i5 (Sandy Bridge) con dos núcleos a 2,3 GHz.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;4 Gbytes de memoria SDRAM DDR3 1333 MHz.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Disco duro SATA con 500 Gbytes de capacidad.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Gráficos integrados Intel HD 3000 con 384 Mbytes de memoria compartida.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Pantalla de 13,3 pulgadas con resolución 1280 x 800 píxeles.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Webcam FaceTime HD.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Unidad SuperDrive 8x.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Slot para tarjetas de memoria con soporte SDXC.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Puerto FireWire 800.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;2 puertos USB 2.0.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li6&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Puerto Thunderbolt: Mini DisplayPort (Light Peak)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Esta Mac puede ser comprada en Amazon, Best Buy, iStore,Walmart, Sams su precio ronda dentro de los $1,199.99 dólares y en $1,499.99 con un disco duro de 750GB.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Ventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Hay descuentos para estudiantes tales descuentos pueden ser de 30%.&lt;/li&gt;
&lt;li&gt;Son fáciles de usar si no se tienen conocimiento sobre computadoras gracias a su gran sistema operativo que tiene.&lt;/li&gt;
&lt;li&gt;No existen virus en Mac, posiblemente hay uno que otro pero esto regularmente se tratan de evitar mediante updates.&lt;/li&gt;
&lt;li&gt;Son duraderas, gracias a su estructura de unibody.&lt;/li&gt;
&lt;li&gt;Tiene un gran consumo eficiente de memoria.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Desventajas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Tienen un alto precio ya que si la comparamos con algunas laptops con exactamente las mismas características veremos que están mas baratas las que tienen Windows, pero como dice el dicho hay veces que lo barato sale caro por eso es una gran inversión, invertir en una ya que dura mas que esas laptops con Windows.&lt;/span&gt;Son incompatibles con gran variedad de software ya que casi el 80% de las personas usa Windows.Repararlas sale muy caro y solamente los hacen en los centros mac.&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot; style=&quot;text-align: left;&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Macs son bonitas, PCs son feas.&lt;/span&gt;Las desventajas no son malas ya que es muy difícil que una Mac se te descomponga.&lt;/div&gt;
&lt;div class=&quot;p7&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Viendo los diferentes dispositivos se llega a la conclusión de que para tener una computadora portatil tienes que ser una persona tiene que dedicar tiempo y concentrarse en un trabajo especifico en el cual puedes observar las cosas de manera agradable que a diferencia de un smartphone que es algo incomodo, ya que en el solo observarias una pequeña parte.Un smartphone es un dispositivo que regularmente se usa para estar en contacto con personas mediante redes sociales, algún tipo de mensajería instantanea, mail y algunas aplicaciones útiles al usuario, con esto ahorra el usuario tener que cargar con una computadora portátil y tiempo.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Links de referencia:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://getmovil.com/android/caracteristicas-htc-evo-4g/&quot;&gt;http://getmovil.com/android/caracteristicas-htc-evo-4g/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://cache.gawkerassets.com/assets/images/17/2011/11/58da9de7fe62e153bfa910cd451d981f.jpg&quot;&gt;http://cache.gawkerassets.com/assets/images/17/2011/11/58da9de7fe62e153bfa910cd451d981f.jpg&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://www.smart-gsm.com/moviles/htc-evo-3d&quot;&gt;http://www.smart-gsm.com/moviles/htc-evo-3d&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://articles.pubarticles.com/mytouch-4g-vs-htc-evo-4g-advantages-and-disadvantages-comparison-1289552971,53161.html&quot;&gt;http://articles.pubarticles.com/mytouch-4g-vs-htc-evo-4g-advantages-and-disadvantages-comparison-1289552971,53161.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://www.xataka.com/portatiles/samsung-chromebook-serie-5&quot;&gt;http://www.xataka.com/portatiles/samsung-chromebook-serie-5&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://www.muymac.com/2011/02/24/especificaciones-y-caracteristicas-del-nuevo-macbook-pro-2011&quot;&gt;http://www.muymac.com/2011/02/24/especificaciones-y-caracteristicas-del-nuevo-macbook-pro-2011&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;a href=&quot;http://www.foroiphone.com/iphone-4s/51049-como-diferenciar-iphone-4-de-un-iphone-4s-%BF.html&quot;&gt;http://www.foroiphone.com/iphone-4s/51049-como-diferenciar-iphone-4-de-un-iphone-4s-%BF.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;a href=&quot;http://diablitocurioso.blogspot.com/2011/02/todo-lo-que-querias-saber-andriod-el.html&quot;&gt;http://diablitocurioso.blogspot.com/2011/02/todo-lo-que-querias-saber-andriod-el.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;a href=&quot;http://www.pclaunches.com/notebooks/samsung_series_5_chromebook_launched.php&quot;&gt;http://www.pclaunches.com/notebooks/samsung_series_5_chromebook_launched.php&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p8&quot;&gt;
&lt;a href=&quot;http://www.theepochtimes.com/n2/technology/apple-macbook-pro-new-apple-macbook-pro-in-march-51397.html&quot;&gt;http://www.theepochtimes.com/n2/technology/apple-macbook-pro-new-apple-macbook-pro-in-march-51397.html&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dispositivosmoviles-saulg.blogspot.com/feeds/1270575816155394502/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/smartphones-y-computadoras-portatiles.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/1270575816155394502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6269519742589354860/posts/default/1270575816155394502'/><link rel='alternate' type='text/html' href='http://dispositivosmoviles-saulg.blogspot.com/2012/02/smartphones-y-computadoras-portatiles.html' title='Smartphones y Computadoras Portátiles'/><author><name>Saúl Gausin</name><uri>http://www.blogger.com/profile/00364409686961382810</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyCEQzxFpnQkNjIQmSkEz3OxvmnpH1eGVFlupvbC6_ATLfjMwo_FP8uEUE4cZfRoI6-FxxxoiNeaoSFFGuY9TzoZqazSsAtosf3aYohzAYEcw4nLBxRhwqY0bEtf_yvDrauJyTME7QPOk/s72-c/apple-iphone-4.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>