2011-06-07 12 views
5

Estoy trabajando en un proyecto para automatizar algunas tareas (como reproducir una canción, reproducir un video, recibir datos bluetooth, etc.) en un teléfono Android desde una PC.Envío de comandos desde una PC a un teléfono Android - a través de una conexión física (USB, serie, etc.)

Básicamente, la PC enviará un notificador al teléfono y una aplicación o algo similar en el teléfono procesaría el notificador y haría 'algo'. Lo contrario de esto realmente: http://code.google.com/p/android-notifier/

he visto algunos ejemplos que muestran cómo enviar comandos a una aplicación Android oyente o servicio a través de una conexión de red, pero en este caso, me gustaría mucho más la transmisión sea a través de una física conexión.

USB Idealmente, me gustaría que la conexión sea a través del puerto USB. Pero he visto algunas publicaciones en línea que sugieren que el SDK no lo admite de forma nativa. (Android apps, communicating with a device plugged in the USB port).

serie a través de USB También he visto algunos sitios que muestran cómo utilizar un Breakout Box para realizar la comunicación serie bidireccional, pero sólo con el G1. ¿Es esto posible con los teléfonos más nuevos?

El teléfono Estoy abierto a realmente cualquier teléfono nuevo. Actualmente estoy mirando el Galaxy S, porque tiene la salida de video a través del conector para auriculares. Estoy abierto a rooting si es necesario.

+0

me di cuenta de cómo llamar a una acción intención desde la línea de comandos usando adb y la cáscara ... http://learnandroid.blogspot.com /2008/01/run-android-application-from-command.html Ahora necesito averiguar cómo recuperar los datos ... –

+0

Puede escribir datos en un archivo y luego enviarlos a una PC por 'adb pull ' – werewindle

+0

¿Tengo que sondear, o es una llamada de bloqueo/síncrona? –

Respuesta

0

Lo que puede hacer es que el teléfono funcione como servidor y luego use adb para reenviar puertos [1].

En este caso, la aplicación para PC se conectaría a localhost, que se redirigirá a la aplicación en el teléfono a través del cable usb.

Pero si vas de esta manera, es posible que del mismo modo que basta con conectar directamente a IP del teléfono (sin el puerto ADB reenvío) ...

[1] http://developer.android.com/guide/developing/tools/adb.html#forwardports

+0

ADB no establece una red, por lo que no, no puede conectarse directamente; si ADB es el transporte, debe usar el puerto hacia adelante. Es posible que esté confundiendo los alias de la red del host solo del emulador. –

+0

@ChrisStratton Con "simplemente conéctese directamente a la IP del teléfono" quise no usar ADB en absoluto. Entonces no estoy seguro de lo que quieres decir :) – BoD

+0

¿Cómo proponías conectarlo entonces? ¿Wifi? Es casi seguro que no puede hacer conexiones entrantes a través de un proveedor de telefonía móvil. –

2

Implement a HTTP server in your app, a continuación, poner su teléfono en modo de sujeción USB. Esto creará una red local entre su teléfono y su PC. Debería poder enviar solicitudes HTTP o crear websockets utilizando la IP del teléfono.

EDIT: He probado, y funciona, ver here

Cuestiones relacionadas