6 votos

¿Cómo llamar desde la consola?

¿Cómo hacer o recibir una llamada desde la consola?

Esperando algo así, al estilo UNIX:

make_call +3750291234567 < played_data.wav > recorded_data.wav

wait_for_call < played_data.wav > recorded_data.wav 2> call_info.txt

Preferiblemente esto no debe tener efectos secundarios como los sonidos del dispositivo. El teléfono es Xperia X10 (para el que se informa que la grabación de llamadas funciona).

Quiero que las llamadas sean scriptables como otras cosas de Linux a las que me he acostumbrado.

8voto

Joe Puntos 376

No vas a ser capaz de lograr esto utilizando sólo las herramientas de userland, como lo que describes - al menos no mientras se ejecuta Android.

La razón es que el RIL abre el dispositivo de radio (generalmente algún nodo de dispositivo bajo /dev/* ) como un servicio linux de bajo nivel, y mientras eso tiene un bloqueo exclusivo en el dispositivo, nada más puede leer o escribir en la radio. El RIL se comunica entonces con la plataforma Android para todos los eventos relacionados con la radio.

Se podría hacer con algunos extensa modificaciones en el núcleo subyacente de Linux (es de código abierto, así que definitivamente es una posibilidad si no te importa ensuciarte las manos en C), o sustituyendo el demonio RIL (no es tan fácil, porque el rild es no que se requiere que sea de código abierto, por lo que no se sabe cuál es la implementación subyacente sin hacer ingeniería inversa). Hacer esto último romperá la capacidad de Android para usarlo correctamente, a menos que de alguna manera se llegue a un canal de compatibilidad para la comunicación proxy entre el nuevo RIL y el RIL existente - e incluso entonces, hay una buena probabilidad de que Android se confunda cuando intenta hacer una llamada (sabiendo que el módem no debe estar actualmente en uso, pero recibiendo una respuesta de la radio diciendo que está en uso).

En su defecto, también podrías conseguirlo sustituyendo la aplicación Teléfono y utilizando todas las APIs nativas de la plataforma. Pero creo que no funcionará (al menos basándome en mi conocimiento de cómo funcionan las radios de HTC). En un dispositivo HTC, cuando realizas una llamada, Android notifica rild que realiza la llamada, y luego rild dice el radio que debe enrutar todo el audio de la llamada a través del altavoz del teléfono y enrutar todo el sonido recogido del micrófono en la llamada telefónica. La plataforma Android no gestiona el enrutamiento del audio de la llamada por sí misma.

Todo lo anterior requiere rootear el dispositivo e instalar una ROM personalizada como mínimo.

4voto

Steve Obbayi Puntos 1499

Deberías ser capaz de hacer llamadas telefónicas fácilmente en la línea de comandos, asumiendo que tienes Root.

El comando es service call phone 2 s16 "+18001231234" . Esto hará que se empiece a llamar automáticamente a ese número de teléfono.

Sin embargo, todo esto se hace en primer plano. Si tuvieras el teléfono, verías aparecer las pantallas normales de llamada. Si estuvieras tratando de lanzar una llamada telefónica detrás de las escenas sin que el usuario lo sepa, no estoy seguro de cómo lo harías.

Además, esto es sólo para enviar llamadas, no para recibirlas. Y no se puede canalizar un archivo de sonido a la llamada en lugar de utilizar el micrófono real, ni se puede grabar el sonido entrante.

Más información: Android - Llamar/Marcar desde la línea de comandos del shell adb

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X