<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992016000600007</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Android para escritorio]]></article-title>
<article-title xml:lang="en"><![CDATA[Android for desktop]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Fuentes Rodríguez]]></surname>
<given-names><![CDATA[Juan Manuel]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pierra Fuentes]]></surname>
<given-names><![CDATA[Allan]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Fírvida Donestevez]]></surname>
<given-names><![CDATA[Abel]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pérez Baranda]]></surname>
<given-names><![CDATA[Héctor]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[López Zubieta]]></surname>
<given-names><![CDATA[Alexis]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Sierra Corredera]]></surname>
<given-names><![CDATA[Luis Daniel]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de las Ciencias Informáticas  ]]></institution>
<addr-line><![CDATA[ La Habana]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>00</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>00</month>
<year>2016</year>
</pub-date>
<volume>10</volume>
<fpage>82</fpage>
<lpage>93</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992016000600007&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992016000600007&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992016000600007&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[RESUMEN En los últimos cinco años, Android prácticamente ha monopolizado los dispositivos móviles, sin embargo, este sistema operativo no ha logrado profundizar en el área de los equipos de cómputo convencionales a pesar de los esfuerzos de equipos de desarrollo multinacionales como Android x86. Esto se debe en gran medida debido a la sustancial diferencia entre la metáfora de escritorio utilizada en los entornos más consagrados, como Windows, MacOS y las diferentes variantes de ambientes de trabajo de Linux, y la arquitectura de información propuesta y optimizada para dispositivos móviles de Android. El presente trabajo acerca el ambiente de trabajo de Android a la metáfora de escritorio, mediante la incorporación a dicho sistema operativo de un gestor de ventanas desarrollado con la utilización del framework XPosed. Esto supone aproximar y aprovechar una plataforma de más de un millón y medio de aplicaciones oficiales en la tienda en línea, una alianza de varias de las mayores potencias de la industria de software y las telecomunicaciones y uno de los productos con mayor gestión de la seguridad a las computadoras de escritorio.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[ABSTRACT In the last five years the mobile device market has been monopolized by Android, however the desktops market is still away from its reach despite of the efforts of multiple multinational development teams such as Android X86. This is produced mainly by the huge difference between the Android's information architecture and the traditional desktop metaphor of Windows, MacOS and GNU/Linux distributions. The current work aims to approach the Android's information architecture to a traditional desktop metaphor by the addition of a windows manager developed using the XPosed framework. With this improvement will be possible to use in desktop computers an operative system with better security management and more than a million and a half of applications available in its market and will also get the benefits from an alliance of the major leaders in the software and telecommunications industry.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Android]]></kwd>
<kwd lng="es"><![CDATA[Metáfora de escritorio]]></kwd>
<kwd lng="es"><![CDATA[Gestor de Ventanas]]></kwd>
<kwd lng="en"><![CDATA[Android]]></kwd>
<kwd lng="en"><![CDATA[Desktop Metaphor]]></kwd>
<kwd lng="en"><![CDATA[Window Manager]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO  ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Android para escritorio</font></strong></p>     <p>&nbsp;</p>     <p><strong><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Android for desktop</font></strong></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Juan Manuel Fuentes Rodr&iacute;guez<strong><sup>1*</sup></strong>, Allan Pierra Fuentes<strong><sup>1</sup></strong>, Abel F&iacute;rvida Donestevez<strong> </strong></font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>1</sup></strong></font></font><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">, H&eacute;ctor P&eacute;rez Baranda<strong> </strong></font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>1</sup></strong></font></font><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">,Alexis L&oacute;pez Zubieta<strong> </strong></font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>1</sup></strong></font></font><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">, Luis Daniel Sierra Corredera</font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>1</sup></strong></font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Universidad  de las Ciencias Inform&aacute;ticas. Carretera a San Antonio de los Ba&ntilde;os, Km 21/2,  Torrens, La Lisa, La Habana, Cuba.{jfuentesr,  apierra, firvida, hbaranda, azubieta, ldsierra}@uci.cu </font><font size="2"></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">    <br> </font></p>     ]]></body>
<body><![CDATA[<P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia:</font></span></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:jfuentesr@uci.cu">jfuentesr@uci.cu</a><a href="mailto:jova@uci.cu"></a></font><font face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:losorio@ismm.edu.cu"></a> </font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En los &uacute;ltimos cinco a&ntilde;os, Android pr&aacute;cticamente ha monopolizado los  dispositivos m&oacute;viles, sin embargo, este sistema operativo no ha logrado  profundizar en el &aacute;rea de los equipos de c&oacute;mputo convencionales a pesar de los  esfuerzos de equipos de desarrollo multinacionales como Android x86. Esto se  debe en gran medida debido a la sustancial diferencia entre la met&aacute;fora de  escritorio utilizada en los entornos m&aacute;s consagrados, como Windows, MacOS y las  diferentes variantes de ambientes de trabajo de Linux, y la arquitectura de  informaci&oacute;n propuesta y optimizada para dispositivos m&oacute;viles de Android. El  presente trabajo acerca el ambiente de trabajo de Android a la met&aacute;fora de  escritorio, mediante la incorporaci&oacute;n a dicho sistema operativo de un gestor de  ventanas desarrollado con la utilizaci&oacute;n del <em>framework</em> <em>XPosed</em>. Esto  supone aproximar y aprovechar una plataforma de m&aacute;s de un mill&oacute;n y medio de  aplicaciones oficiales en la tienda en l&iacute;nea, una alianza de varias de las  mayores potencias de la industria de software y las telecomunicaciones y uno de  los productos con mayor gesti&oacute;n de la seguridad a las computadoras de  escritorio.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave:</span></b></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Android, Met&aacute;fora de escritorio, Gestor de  Ventanas</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">In the last five years the mobile device market has been monopolized by  Android, however the desktops market is still away from its reach despite of  the efforts of multiple multinational development teams such as Android X86.  This is produced mainly by the huge difference between the Android's  information architecture and the traditional desktop metaphor of Windows, MacOS  and GNU/Linux distributions. The current work aims to approach  the Android's information architecture to a traditional desktop metaphor by the  addition of a windows manager developed using the XPosed framework. With this  improvement will be possible to use in desktop computers an operative system  with better security management and more than a million and a half of  applications available in its market and will also get the benefits from an  alliance of the major leaders in the software and telecommunications industry.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>Android, Desktop Metaphor,  Window Manager</font></p> <hr>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Android es un sistema operativo de c&oacute;digo abierto basado en Linux y  patrocinado por la <em>Open Handset Alliance</em> (OHA), una alianza multinacional que comprende ochenta y cuatro empresas  l&iacute;deres en el &aacute;rea de las telecomunicaciones, software y hardware (<em>OHA, 2015</em>), que a&uacute;na numerosos esfuerzos para su  desarrollo y el de los dispositivos en los que se ejecuta. Este ha tenido una  evoluci&oacute;n exponencial en los &uacute;ltimos cinco a&ntilde;os, pues ya cuenta con casi dos  millones de aplicaciones en <em>Google Play</em> (<em>The Statics Portal, 2015</em>),  convirti&eacute;ndose en el sistema con la mayor tienda en l&iacute;nea (<a href="#f01">Figura 1</a>), y domina m&aacute;s de la mitad del mercado de los  dispositivos m&oacute;viles (<em>Net MarketShare, 2015</em>).</font></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0107516.jpg" alt="f01" width="578" height="348"><a name="f01"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Actualmente existe un proyecto llamado Android x86 que se a&uacute;na esfuerzos  para portar Android a los equipos de c&oacute;mputo que utilicen dicha plataforma (AOSP, 2015). Este equipo empez&oacute;  publicando parches para el soporte para x86 del sistema operativo y luego  fueron evolucionando hasta mantener su propio rama de un sistema operativo  basado en AOSP. Hasta la fecha han realizado catorce lanzamientos oficiales,  desde la versi&oacute;n 1.6 hasta la 5.1 de Android.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A pesar de que Android puede ser ejecutado en computadoras  convencionales, su interfaz est&aacute; dise&ntilde;ada para maximizar el uso de la pantalla,  pues est&aacute; orientada a dispositivos de peque&ntilde;o y mediano tama&ntilde;o, raz&oacute;n por la  que no sigue las met&aacute;foras y est&aacute;ndares aplicados en los entornos de  computadoras de escritorio, atentando contra la experiencia de usuario en este  ambiente. Un ejemplo de lo mencionado es la ausencia de un gestor de ventanas  convencional como los de los entornos de escritorio tradicionales que permiten  mostrar varias ventanas a la vez, intercambiarlas, redimensionarlas y  decorarlas. En vez de esto, Android muestra una &uacute;nica actividad a pantalla  completa para la interacci&oacute;n, en caso de que se desee cambiar a alguna de las  anteriores solo se puede hacer mediante el bot&oacute;n de las aplicaciones recientes reduciendo la productividad del usuario.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Actualmente existen soluciones que intentan mitigar el problema  como <em>MultiWindow</em> de Samsung y <em>Dual Window </em>de LG que muestran dos  actividades al mismo tiempo, permitiendo arrastrar y soltar contenido de una  ventana a otra (<a href="#f02">Figura 2</a>).</font></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0207516.jpg" alt="f02" width="350" height="311"><a name="f02"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Estas soluciones no resuelven el problema especificado pues  solo funcionan en un reducido n&uacute;mero de dispositivos y al no ser libres no se  pueden portar a Android x86. Adem&aacute;s, su concepci&oacute;n sigue estando enfocada a  pantallas de medianas dimensiones y no todas las aplicaciones pueden ser  ejecutadas en este modo.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El objetivo del trabajo que se presenta es materializar un  gestor de ventanas para Android con el cual se consumar&iacute;a una de las  caracter&iacute;sticas principales de los entornos de escritorio en el ambiente de  usuario de este sistema operativo.</font></p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">MATERIALES Y M&Eacute;TODOS </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En esta secci&oacute;n se brinda un acercamiento al funcionamiento del  sistema operativo Android, as&iacute; como a su sistema gr&aacute;fico y a su gestor de  ventanas. Adem&aacute;s, se explica la soluci&oacute;n propuesta y se discuten los resultados  obtenidos durante la investigaci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>El sistema operativo Android</strong> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Android es un paquete de software que tiene como prop&oacute;sito  principal crear una plataforma abierta  disponible para los fabricantes de equipos y  desarrolladores (<em>AOSP, 2014</em>). Fue creado por la compa&ntilde;&iacute;a <em>Android  Inc</em> y actualmente es patrocinado por la OHA, un consorcio de compa&ntilde;&iacute;as  lideradas por Google (<em>OHA, 2015</em>).  Android est&aacute; dise&ntilde;ado primariamente para dispositivos con pantalla t&aacute;ctil,  aunque recientemente se han liberado versiones para televisores, carros y  dispositivos inteligentes de vestir.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La  arquitectura de Android est&aacute; compuesta por capas (<a href="#f03">Figura 3</a>). En la base del sistema est&aacute; un n&uacute;cleo Linux  con algunas adiciones como un sistema de gesti&oacute;n de la memoria especializado en  el ahorro de la misma (<em>AOSP, 2015</em>). Luego se encuentra el  entorno de ejecuci&oacute;n de Android, compuesto principalmente por la m&aacute;quina  virtual <em>Dalvik</em>, y las bibliotecas  nativas que dotan al sistema operativo de gran parte de sus capacidades (<em>Brahler, 2010</em>). Encima se encuentra el  marco de trabajo, que provee una Interfaz de Programaci&oacute;n de Aplicaciones (API)  para varias &aacute;reas como la red, multimedia e interfaz de usuario. En este &aacute;mbito  se proporcionan adem&aacute;s los diferentes servicios utilizados por las aplicaciones  y sus gestores y es donde se realiza el encapsulamiento de los permisos de cada  aplicaci&oacute;n (<em>Brahler, 2010</em>). La capa  superior est&aacute; formada por el software con el que el usuario interact&uacute;a  directamente. </font></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0307516.jpg" alt="f03" width="514" height="392"><a name="f03"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un pelda&ntilde;o muy importante en esta arquitectura es <em>Dalvik</em>, la m&aacute;quina virtual de Java para  Android. Esta est&aacute; dise&ntilde;ada para dispositivos embebidos y permite ejecutar  c&oacute;digos de bytes generados a partir de aplicaciones basadas en Java y los  propios componentes de Android, proporcionando una v&iacute;a para interconectarlos  con el resto del sistema, incluyendo las bibliotecas nativas (<em>Yaghmour, 2013</em>).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Sistema gr&aacute;fico de Android</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El  proceso de inicializaci&oacute;n del sistema gr&aacute;fico de Android comienza desde la  invocaci&oacute;n del <em>script init.rc</em> por  parte del n&uacute;cleo. Es aqu&iacute; donde, entre otras instrucciones, se inicializan las  variables de entorno, se montan los sistemas de archivos y se inician los  servicios nativos. <a href="#f04">Figura 4</a></font> </p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/rcci/v10s2/f0407516.jpg" alt="f04" width="426" height="406"><a name="f04"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Uno de esos servicios nativos es el <em>Zygote</em>, el responsable del sistema gr&aacute;fico. Este es iniciado a  trav&eacute;s del ejecutable <em>app_process</em> luego de levantado el entorno de ejecuci&oacute;n de Android y la m&aacute;quina virtual <em>Dalvik</em>.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Al nacer, este servicio carga en  memoria todos los recursos que un software de Android pueda necesitar con el  objetivo de mejorar el proceso de apertura del mismo. A partir de este momento <em>Zygote</em> abre un socket <em>(/dev/socket/zygote</em>) por el cual se  escucha la apertura de nuevas aplicaciones (<em>Yaghmour,  2013</em>) y ejecuta, sin necesidad de una petici&oacute;n, el servicio <em>System Server</em> que se encarga de  inicializar todos los servicios disponibles en el sistema.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una vez inicializado el ambiente de usuario, al ejecutar una  aplicaci&oacute;n se realiza una llamada al m&eacute;todo <em>startActivity</em> de la clase <em>Activity Manager</em>, que  realizar&aacute; una petici&oacute;n por el socket utilizando el procedimiento <em>startViaZygote</em>. Al recibir una petici&oacute;n <em>Zygote</em> ejecuta la solicitud mediante la  creaci&oacute;n de un proceso hijo, a los cuales les suministra todos los recursos  cargados desde el inicio del dispositivo.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Gestores de ventanas de Android</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un gestor de ventanas es un paquete de software que ayuda al  usuario a monitorear y controlar diferentes contextos mediante la separaci&oacute;n  f&iacute;sica de sus actividades (com&uacute;nmente llamada ventanas) en una o varias  pantallas (<em>Myers, 1988</em>). Adem&aacute;s,  permite el encapsulamiento de los m&eacute;todos de entrada y salida de los diferentes  procesos de las actividades y las acciones con las ventanas. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En  Android, como se aprecia en la Figura 3, los componentes m&aacute;s importantes para la  gesti&oacute;n de las ventanas son Surface Manager, Activity  Manager y Window Manager. Surface Manager es una  biblioteca nativa que provee un compositor que maneja la representaci&oacute;n de  todas las superficies directamente en el framebuffer   y permite combinar superficies de dos y tres dimensiones de varias  aplicaciones (<em>Android  Engineering Application &amp; Consulting Services Team, 2009</em>). Este utiliza a OpenGL ES y la aceleraci&oacute;n de dos dimensiones del propio hardware para  realizar el proceso de composici&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Activity Manager es el servicio que se encarga de iniciar  los servicios y las aplicaciones trav&eacute;s de <em>Zygote</em>,  gestiona el ciclo de vida de las actividades en Android, emite los <em>Intents</em> y resuelve los proveedores de  contenido (<em>Yaghmour, 2013</em>). Adem&aacute;s, interviene en varios de las acciones  para las optimizaciones del <em>kernel</em> como el controlador de poca memoria.Window Manager es un servicio del sistema  que gestiona la lista de ventanas ordenadas y es el responsable de resolver  cu&aacute;l de estas es visible y cu&aacute;l es su puesto en la pantalla (<em>Android Engineering  Application &amp; Consulting Services Team, 2009</em>). Entre sus  funcionalidades tambi&eacute;n se encuentran crear las superficies de las ventanas  utilizando a Surface Manager, tramitar los eventos de entrada y las  transiciones entre las ventanas. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>El framework XPosed</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El <em>framework</em> <em>XPosed</em> o <em>XPosedBridge</em> es una  biblioteca que permite reemplazar los m&eacute;todos deseados de las aplicaciones en  tiempo de ejecuci&oacute;n sin la necesidad de alterar las mismas. Esta funciona  gracias a la capacidad de Android de cargar todos los recursos de las  aplicaciones antes de que el sistema haya terminado de iniciar (<em>XPosed,  2015</em>).</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Adem&aacute;s,  la biblioteca contiene su propio ejecutable del <em>app_process</em>, que sit&uacute;a al <em>framework</em> como una de las dependencias de <em>Zygote</em>,  por lo que cada proceso hijo de este tendr&aacute; a <em>XPosed</em> cargado (<em>XPosed, 2014</em>).  Una vez ejecutada la aplicaci&oacute;n, <em>XPosed</em> sobrescribir&aacute; en tiempo de ejecuci&oacute;n las funciones a reemplazar por las  definidas en sus m&oacute;dulos. </font> <a href="#f05"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Figura 5</font> </a></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0507516.jpg" alt="f05" width="449" height="247"><a name="f05"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los m&oacute;dulos de esta biblioteca definen los m&eacute;todos a enlazar o  sobrescribir y se identifican mediante los metadatos especiales de <em>XPosed</em> en el fichero <em>AndroidManifest.xml</em>. Para enlazar un  m&eacute;todo en espec&iacute;fico se necesita conocer de antemano su nombre, sus par&aacute;metros  y la ruta de la clase que lo contiene (por ejemplo <em>com.android.systemui</em>) y transfer&iacute;rselos al procedimiento <em>findAndHookMethod</em> junto con una  implementaci&oacute;n de la clase abstracta <em>XC_MethodHook</em>.  Esta &uacute;ltima provee los m&eacute;todos <em>beforeHookedMethod</em> que es llamado antes del original y <em>afterHookedMethod</em> que es llamado luego y ambos reciben como par&aacute;metro una instancia de <em>MethodHookParam</em> que contiene toda la  informaci&oacute;n del procedimiento original (<em>XPosed,  2014</em>). En caso de que se requiera reemplazar completamente se debe emplear <em>XC_MethodReplacement</em> como par&aacute;metro a <em>findAndHookMethod</em>.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El  uso de <em>XPosed</em> tiene la ventaja de que  no existe la necesidad de modificar el c&oacute;digo fuente original de Android o de  una aplicaci&oacute;n para lograr los objetivos deseados, funciona en todas las  versiones de AOSP desde el lanzamiento 4.0.3 hasta la 5.1 y la posibilidad de  instalar m&oacute;dulos o utilizar los existentes (<em>XPosed,  2015</em>). Adem&aacute;s, las modificaciones hechas son reversibles con facilidad (con  solo desinstalar en m&oacute;dulo y reiniciar basta) y es software libre. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El principal resultado de esa investigaci&oacute;n es la  conceptualizaci&oacute;n de un gestor de ventanas para el sistema operativo Android,  que brinde las funcionalidades b&aacute;sicas de sus hom&oacute;logos para escritorio. Para  lograr este objetivo se desarroll&oacute; un m&oacute;dulo de <em>XPosed</em> basado en <em>XHaloFloatingWindow </em>(<em>XHaloFloatingWindow, 2015</em>) que  sirviera como prueba de concepto del sistema propuesto.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="#f06">Figura 6</a> muestra el diagrama de clases del m&oacute;dulo  desarrollado, dentro de los que sobresalen <em>MainXposed</em>, <em>HaloFloting</em> y <em>MovableWindow</em> pues en estos se realiza pr&aacute;cticamente toda la  modificaci&oacute;n al sistema para que sirva como gestor de ventanas. </font></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0607516.jpg" alt="f06" width="459" height="453"><a name="f06"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El gestor de ventanas basa su funcionamiento en la bandera 0x00002000  de los Intents,  que permite abrir las ventanas en modo di&aacute;logo flotante. Conociendo el hecho de  que todos estos son ejecutados e interpretados desde la clase ActivityRecord  del servicio Activity Manager, se sobrescribi&oacute; el constructor de esta clase para que  todas las aplicaciones se ejecutaran en modo flotante (con  excepci&oacute;n de las ventanas del Launcher y el SystemUI  que tienen que ser obligatoriamente a pantalla completa para el correcto  funcionamiento del ambiente de usuario).</font> <a href="#f07"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Figura 7</font> </a></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/rcci/v10s2/f0707516.jpg" alt="f07" width="327" height="277"><a name="f07"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La decoraci&oacute;n de las ventanas se realiza mediante la modificaci&oacute;n a la  clase Window,  para que el componente ra&iacute;z de una ventana sea un marco compuesto por un borde  tradicional y la vista ra&iacute;z en donde las actividades colocar&iacute;an sus propios  componentes.</font> <a href="#f08"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Figura 8 </font></a></p>     <p align="center"><img src="/img/revistas/rcci/v10s2/f0807516.jpg" alt="f08" width="337" height="328"><a name="f08"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para adicionar la funcionalidad de mover y redimensionar las ventanas,  el gestor de ventanas aprovecha la capacidad del servicio Window Manager de  Android de gestionar la posici&oacute;n de las actividades en la pantalla y solo fue  necesario la implementaci&oacute;n de un evento de arrastrar y soltar sobre la barra  de t&iacute;tulo para que cambie la posici&oacute;n de la actividad y sobre los bordes para  cambiar su tama&ntilde;o. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la presente investigaci&oacute;n se realiz&oacute; la conceptualizaci&oacute;n de  un gestor de ventanas tradicional para Android. Eso tiene gran importancia pues  mejora la usabilidad del sistema en equipos con pantallas de gran tama&ntilde;o,  permitiendo al usuario organizar las actividades a su preferencia. El resultado  impacta directamente el socioadaptabilidad del sistema pues brinda a los  usuarios un ambiente similar a entornos tradicionales como el de Windows. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La soluci&oacute;n propuesta supera a las mencionadas anteriormente  pues permite que todas las actividades sean ejecutadas en modo ventana y no  solo las definidas por los fabricantes, no posee un l&iacute;mite de aplicaciones  ejecutadas al mismo tiempo y realiza la decoraci&oacute;n de las ventanas.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con  esta incorporaci&oacute;n de este resultado, y futuras investigaciones como un entorno  de escritorio tradicional, se acerca el ambiente de usuario de Android a las  met&aacute;foras y est&aacute;ndares utilizados en los sistemas operativos para computadoras  de escritorio. </font></p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><strong><font size="3" face="Verdana, Arial, Helvetica, sans-serif">AGRADECIMIENTOS</font></strong></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A la Universidad de las Ciencias Inform&aacute;ticas y al equipo de  trabajo de Nova. </font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">1. <strong>Open Handset Alliance. </strong>Open Handset Alliance. [En l&iacute;nea] 2015. [Citado el: 10 de Octubre de 2015]. Disponible en: http://www.openhandsetalliance.com/.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">2. <strong>The Statistics Portal. </strong>Number of apps available in leading app stores as of July 2015. [En l&iacute;nea] Julio de 2015. [Citado el: 30 de Septiembre de 2015]. Disponible en: http://www.statista.com/statistics/276623/number-of-appsavailable-in-leading-app-stores/.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">3. <strong>Net Market Share. </strong>Market share for mobile, browsers, operating systems and search engines. [En l&iacute;nea] Septiembre de 2015. [Citado el: 10 de Octubre de 2015]. Disponible en: https://www.netmarketshare.com/operatingsystem-market-share.aspx?qprid=8&qpcustomd=1.    </font></p>     ]]></body>
<body><![CDATA[<!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">4. <strong>Android Open Source Project. </strong>The Android Source Code. [En l&iacute;nea] 2015. [Citado el: 10 de Octubre de 2015]. Disponible en: https://source.android.com/source/index.html.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">5. <strong>Samsung. </strong>Nueva funci&oacute;n multiwindow. [En l&iacute;nea] 2015. [Citado el: 12 de octubre de 2015]. Disponible en: http://www.samsung.com/es/consumer/flagship/tutorial_galaxy_note3/note3/tutorial/new_multiwin_index.html.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">6. <strong>Yaghmour, Karim. </strong><em>Embedded Android. </em>Sebastopol: O&rsquo;Reilly Media, Inc, 2013. 978-1-449-30829-2.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">7. <strong>Android Open Source Project. </strong>Android Interfaces and Architecture. [En l&iacute;nea] 2015. [Citado el: 10 de Octubre de 2015]. Disponible en: https://source.android.com/devices/index.html.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">8. <strong>Brahler, Stefan. </strong><em>Analysis of the Android Architecture. </em>Karlsruhe: s.n., 2010.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">9. <strong>Myers, Brad A. </strong><em>A Taxonomy of Window Manager User Interfaces. </em>5, s.l.: IEEE Computer Graphics and Applications, 1988, Vol. 8.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">10. <strong>Android Engineering Application & Consulting Services Team. </strong>Android Anatomy and Physiology. [En l&iacute;nea] Noviembre de 2009. [Citado el: 15 de Septiembre de 2015]. Disponible en: http://androidteam.googlecode.com/files/Anatomy-Physiology-of-an-Android.pdf.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">11. <strong>XPosed. </strong>XPosed Insaller | XPosed Module Repository. [En l&iacute;nea] 2015. [Citado el: 15 de Septiembre de 2015]. Disponible en: http://repo.xposed.info/module/de.robv.android.xposed.installer.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">12. <strong>Xposed. </strong>Development tutorial . [En l&iacute;nea] 12 de Agosto de 2014. [Citado el: 1 de Octubre de 2015]. Disponible en: https://github.com/rovo89/XposedBridge/wiki/Development-tutorial.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">13. <strong>XHaloFloatingWindow. </strong>XPosed Module Repository. [En l&iacute;nea] 21 de Julio de 2014. [Citado el: 3 de octubre de 2015]. Disponible en: http://repo.xposed.info/module/com.zst.xposed.halo.floatingwindow</font><p name="_ENREF_1">&nbsp;</p>     <p name="_ENREF_1">&nbsp;</p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 15/04/2016    <br> Aceptado: 05/05/2016</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="">
<collab>Open Handset Alliance</collab>
<source><![CDATA[Open Handset Alliance]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<collab>The Statistics Portal</collab>
<source><![CDATA[Number of apps available in leading app stores as of July 2015]]></source>
<year>Juli</year>
<month>o </month>
<day>de</day>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="">
<collab>Net Market Share</collab>
<source><![CDATA[Market share for mobile, browsers, operating systems and search engines]]></source>
<year>Sept</year>
<month>ie</month>
<day>mb</day>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<collab>Android Open Source Project</collab>
<source><![CDATA[The Android Source Code]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<collab>Samsung</collab>
<source><![CDATA[Nueva función multiwindow]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Yaghmour]]></surname>
<given-names><![CDATA[Karim]]></given-names>
</name>
</person-group>
<source><![CDATA[Embedded Android]]></source>
<year>2013</year>
<publisher-name><![CDATA[Sebastopol: O&#8217;Reilly Media, Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<collab>Android Open Source Project</collab>
<source><![CDATA[Android Interfaces and Architecture]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Brahler]]></surname>
<given-names><![CDATA[Stefan]]></given-names>
</name>
</person-group>
<source><![CDATA[Analysis of the Android Architecture]]></source>
<year>2010</year>
<publisher-name><![CDATA[Karlsruhe]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Myers]]></surname>
<given-names><![CDATA[Brad A]]></given-names>
</name>
</person-group>
<source><![CDATA[A Taxonomy of Window Manager User Interfaces]]></source>
<year>1988</year>
<volume>Vol. 8</volume>
<publisher-name><![CDATA[IEEE Computer Graphics and Applications]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<collab>Android Engineering Application & Consulting Services Team</collab>
<source><![CDATA[Android Anatomy and Physiology]]></source>
<year>Novi</year>
<month>em</month>
<day>br</day>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<collab>XPosed</collab>
<source><![CDATA[XPosed Insaller | XPosed Module Repository]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<collab>Xposed</collab>
<source><![CDATA[Development tutorial]]></source>
<year>12 d</year>
<month>e </month>
<day>Ag</day>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="">
<collab>XHaloFloatingWindow</collab>
<source><![CDATA[XPosed Module Repository]]></source>
<year>21 d</year>
<month>e </month>
<day>Ju</day>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
