sábado, 28 de enero de 2012

Remote widget control para Android

 Ya son norma general en un teclado ciertas teclas multimedia para, por ejemplo, saltar esa canción que aborreces.



 Pero no siempre estamos sentados delante del escritorio. Ya estemos sentados en un sofá, tumbados en la cama leyendo, escribiendo o jugando, este control a distancia os podrá ser útil.


Características 

 La característica principal de este control es su forma de widget. En el market podemos encontrar cientos de aplicaciones para el control remoto, pero quería una muy básica y directa.

 Los controles son: reproducir/pausar, siguiente y anterior, y se pueden usar para cualquier reproductor. Para poder controlar un "media center" están los botones de cursores, enter, retroceso y menú contextual. Estos controles son suficientes para interaccionar con cualquier reproductor o "media center".

 La interacción entre la aplicación y el ordenador se lleva a cabo por medio de un servicio web. Se trata de una pequeña aplicación elaborada en "Python" y traducirá las solicitudes del móvil en pulsaciones de teclado.


Instalación

Los pasos a seguir son sencillos.
Primero en vuestro móvil Android, descargáis la aplicación desde aquí o ayudados por el QRcode que encontráis debajo de estas lineas.




En su configuración escribir la ip de vuestra computadora y el puerto en el cual queráis poner el cliente en la misma.


Instalación en el pc

Linux

Es necesario instalar del repositorio una aplicación que se encarga de crear las pulsaciones llamada xautomation.

   sudo apt-get install xautomation

Ahora podéis descargar el script que hará de servidor desde aquí, guardarlo donde queráis en vuestro home. Abrir "Aplicaciones de inicio" y añadir esta nueva aplicación con el nombre que queráis, en comando deberéis escribir la ruta del archivo y al principio la palabra 'python' (comprobar antes en una terminal que funciona dicho comando).



Cuando reiniciéis el sistema el servicio estará disponible.

Windows

 Aquí tenéis el servicio para Windows (ha sido probado en XP, pero aun no en 7). Finalmente esta elaborado en c++, tenia la posibilidad de utilizar parte del código de Python que elabore para Linux, pero no es frecuente tener instalado lo necesario en Windows. También lo intente por Java, pero una vez que tenia el servicio preparado, simular las pulsaciones de las teclas multimedia no era posible (tenéis aquí el código del proyecto por si en adelante pudieran hacerse dichas pulsaciones).

Pongo a disposición de vosotros el código fuente por si lo necesitarais o quisierais modificar.

Para instalarlo primero descargar el archivo server.exe y guardarlo en la carpeta que encontrareis en esta ruta (cambiando USUARIO y unidad por el vuestro):

C:\Documents and Settings\USUARIO\Menú Inicio\Programas\Inicio

Cuando reiniciéis el sistema el servicio estará disponible.


Preguntas frecuentes
  • ¿Por que un servicio web y no bluetooth?
    La respuesta son varias razones, entre consumo de energía, la situación habitual y buscar la facilidad para todos. Con cualquier lenguaje se puede hacer un servicio web de manera sencilla. Ademas permite poder ampliar las opciones del control en un futuro para comunicar entre la aplicación y el servicio en ambos sentidos de múltiples maneras.
  • Tengo el puerto ocupado, ¿puedo cambiarlo?
    La aplicación en Android tienen un campo para ello, y el servicio web de python que he propuesto puede cambiarse por el parámetro --port n (siendo n el puerto que queráis).

  • ¿Utilizo X sistema puedo hacerme un cliente?
    Si alguien quisiera hacerse un servidor propio, las llamadas desde la aplicación móvil a los servicios son: "/play","/next", "/prev", "/up", "/down", "/right", "/left", "/enter", "/menu", "/backspace".

10 comentarios:

  1. Muy interesante este tutorial, pero ¿Que tengo que hacer para configurarlo si tengo windows 7?

    Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Se necesita un servidor que haga las pulsaciones que se le demandan para Windows.
      Esta en mis planes hacer uno, pero la impaciencia al verlo funcionando en Linux me ha podido. Trataré de hacer uno cuanto antes y volveré con noticias.

      Siento que tengas que esperar.

      Eliminar
    2. Ya he dejado a disposición de todos el servicio web para Windows.
      Lo tengo algo más de una semana, pero por unas cosas u otras aun no he encontrado quien lo probara, pero debería funcionar también en Windows 7.

      Eliminar
  2. Lo he instakado en un Galaxy S2 y me encuentro los siguientes inconvenientes:

    - Al poner la IP, el boton guardar no hace nada, siempre se queda en 192.168.1.186 (Para probar he cambiado la IP del equipo por esa)
    - Instalado el servidor en Windows 7 y no parece hacer nada, desde el widget pulsas pero Windows Media no responde, ademas no hay ninguna señal de que exactamente el boton del widget se haya pulsado y realmente esta funcionando.

    Como ves, inconvenientes por ambas partes.

    ResponderEliminar
    Respuestas
    1. Hola:

      - En cuanto a la IP, si pulsabas guardar se guardaba sin más, y aunque al volver a abrirlo mostraba la ip 192.168.1.186, en realidad esta cambiada.
      Hoy mismo he subido una nueva versión con unas pequeñas modificaciones para que el usuario tenga mejor respuesta de sus acciones.

      - En cuanto a windows 7 eres el primero que la prueba, voy a buscar algún amigo para probarlo por mi mismo.

      Aun así por si quieres comprobar tú mismo si el servicio funciona, sigue estos pasos (todos en el propio pc): pon cualquier canción o vídeo, ejecuta el "server.exe", abre un navegador y entra en esta dirección "http://localhost:10036/play".
      En caso de ver la palabra "ok" y detenerse o reproducir la canción el servicio funciona. Si esta segunda cosa no ocurre tal vez sea el reproductor o el sistema el que no entienda la pulsación emulada.

      En caso de funcionar en el mismo pc que da servicio para comprobar si el firewall impide la comunicación con los demás, abre esa misma dirección con el navegador otro dispositivo conectado a la misma red (movil o portatil), pero cambiando la palabra "localhost" por la ip. Ej "http://192.168.1.171:10036/play"

      Gracias y espero poder solucionar los inconvenientes pronto.

      Eliminar
  3. Buenas de nuevo:

    Acabo de probar la nueva version:

    Efectivamente ahora se guarda la IP y sale el mensaje "guardado".
    Tambien he visto que se iluminan los botones, buen trabajo, aunque con hacer el boton verde hubiese bastado XD.
    He probado en el PC lo que has comentado y nada, no responde, de hecho me he asegurado de abrir los puertos en el router, desactivar el firewall y poner el server.exe en modo compatibilidad con XP y nada. Me parece raro que de problemas por el mero hecho de ser un Windows 7.
    De todas maneras, estare encantado de ayudarte en los avances. Te mando un correo desde el market. Saludos.

    ResponderEliminar
  4. me gusta pero unas sugerencias

    puedes cambiar los controles y hacerlo más orientado a control de multimedia, poner solo siguiente, anterior, pausa/play, vol+, vol-.
    eso en cuestion, ya que no se que utilidad tenga las teclas de direccion o el enter en un mando a distancia,

    pero si puedes me avisas que la verdad me gusto, solo que el widget esta muy cargado con cosas que realmente no son utiles, pero si lo simplificas tu aplicacion puede llegar a un ratin muy elevado por hacer lo que hace, eso claro es una sugerencia y un punto de vista

    PD. cual seria el codigo para vol+ y vol- que pienso editar el codigo fuente y hacer lo que te dije para usarlo en mi android que realmente es una app util

    ResponderEliminar
  5. Hola Rareza:
    Cuando lo hice pensé en ponerle el volumen, pero me pareció muy sobre cargado.
    La razón de los cursores y enter tiene mucho sentido en un media center, con las teclas de un reproductor de cd no puedes recorrer los menús de xbmc por ejemplo.

    Lo más apropiado y sencillo es que haga un segundo widget con solo los botones típicos del reproductor de audio (Anterior, play/pause, siguiente, volumen +, volumen -) y dejar el otro con solo las teclas de media center (cursores, enter, retroceso, menu).
    Pero llevo un tiempo viviendo lejos de mi casa (alegraos por mi, es por haber encontrado trabajo), teniendo como única computadora un netbook, al cual la sola mención de Eclipse hace que se eche a temblar. Prometí preparar el servicio para Windows 7, pero tampoco se siente mi netbook con suficiente fuerza para él.
    Así, que no se cuando me podre poner ha hacer "mis cosas" :( y no sera por falta de ganas.

    En cuanto al código para volumen, supongo que preguntas por el servicio web. Era algo que no estaba antes, pero acabo de modificar el código fuente de Python y C++ para que lo tengas disponible, pero no he podido compilar la versión de c++ para Windows, si lo necesitas compílalo.

    Los nuevos servicios webs son /volup y /voldown.

    Si necesitas ayuda házmelo saber.

    ResponderEliminar
  6. MMM oye te dire algo, con respecto a la compatibilidad, me imagino que a muchos no les sirve por que se requiere que se ejecute como administrador, simplemente es darle permisos de administrador permanentes y listo se acabo el dilema,

    yo lo uso en windows 8, lo estoy testeando y la verdad el programa no me dio problemas, pero en cuanto a funciones, me sirve más la tecla de subir y bajar volumen, la tecla esa de función vol+ y vol-, la sube o baja el volumen a todo el sistema no solo al reproductor de musica, así que voy a probar con la que me dijiste

    por cierto entiendo tu explicación del por que mejor unas de flechas y no de volumen, pero hay un defecto en lo que planteas, si uno esta jugando o esta lejos del pc, no tiene en primer plano el reproductor de musica, lo que deja inutilizadas las teclas de movimiento y la de menu, por eso pienso que teclas de cambio de canción y control de volumen, tanto como la de silencio y tambien la de play/pause, son mejores que esas otras

    en fin como dije antes es mi opinión

    gracias

    ResponderEliminar
  7. gracias genio! =D la IP q se utilisa es la de direccion ipv4 que se encuentra en detalles de coneccion de red inalambrica ( en mi caso xq lo asia mediante wifi ) el puerto utilisado por el servidor es el 10036, y para los q no les funciona agregar el server.exe en la lsita de programas permitidos por el fireware. asegurarse estar coenctado a la misma red tanto la pc como el android. otra forma para corrobora es usando el comando para testear dado por el programador
    http://localhost:10036/play
    una ves q funcione es q el server ya esta activo y luego le cambiamos el localhost por nuestra direccion ipv4, si esta permitido x el fireware deberia funcionar, no es necesario probar desde otra pc con el mismo navegador ej:
    http://192.168.1.171:10036/play
    sito los ejemplos del autor :).
    pd: tengo wndows 7 64bits, al exe le di clik derecho propiedades y en compatibilidad le puse como windows xp sp2, pero creo que deberia funcionar sin problemas si no se modifica esto, yo lo hice x las dudas. disfrutenlo! =) y me gustaria si se lo puede hacer mas grande el widget para los telefonos con pantallas chicas como el mio jaja de ahi todo esta genial, para the kmplayer con los cursores anda geial ;) tanto para video como audio.
    si tenes ganas t agradeseria si podes hacer uno para navegar en la pc, no necesariamente un cursor.. jaja pero desde ya MUCHISIMAS gracias! me baje muchos programas pagos y todo.. pero ESTE es el mejor ;). si me dejas lo puedo compartir en taringa.net?

    ResponderEliminar