Termux-api
Qué es Termux:API
Ya comenté que Android tenía un terminal muy interesante con Termux. El problema es que estaba algo limitado ya que no tenía una integración real con el teléfono. Este problema está en vía de solución con Termux:API.
Las instrucciones de instalación son simples:
- Instalar la aplicación Termux:API desde Google Play
- Instalar el paquete
termux-apidesde la terminal de Termux.
Con esto ya se pueden crear scripts de shell que interaccionen con el teléfono.
Un ejemplo de uso
Estoy empezando a entrenar, y en mi rutina está incluida una caminata con cambios de ritmo: 5 minutos de calentamiento, 2 minutos a paso rápido, 2 a paso lento... hasta los 23 minutos en total.
Hay muchísimas apps para realizar este tipo de entrenamientos (en Runtastic se llama interval training), pero utilizarlas no tiene mérito ☺. Es mucho más divertido utilizar termux-vibrate y termux-tts-speak (ver funcion hablar) en un script para conseguir este efecto.
# Solicitamos no entrar en deep sleep termux-wake-lock hablar "en 5 minutos se comenzará a andar rápido" esperar_y_hablar $((5*60)) "Ahora hay que andar rápido" esperar_y_hablar $((2*60)) "Ahora hay que andar lento" esperar_y_hablar $((2*60)) "Ahora hay que andar rápido" esperar_y_hablar $((2*60)) "Ahora hay que andar lento" esperar_y_hablar $((2*60)) "Ahora hay que andar rápido" esperar_y_hablar $((2*60)) "Ahora hay que andar lento" esperar_y_hablar $((2*60)) "Ahora hay que andar rápido" esperar_y_hablar $((2*60)) "Ahora hay que andar lento" esperar_y_hablar $((2*60)) "Ahora hay que andar rápido" esperar_y_hablar $((2*60)) "ya hemos acabado" # Ya podemos ir a deep sleep termux-wake-unlock
El listado anterior utiliza estas funciones de shell:
#!/bin/bash
mensaje(){
echo $(date +%H:%M:%S) " -- " $*
}
hablar(){
mensaje "$1"
(termux-vibrate;
termux-tts-speak "$1")&
}
temporizador(){
# Temporizador con cuenta atrás
for s in $(seq "$1" -10 9)
do
printf "%d " $s
sleep 10
done
printf "\n"
}
esperar_y_hablar(){
mensaje "Esperando $1 segundos para:" "$2"
# El temporizador tiene problemas de precisión
# Mejor lanzarlo asíncrono y esperar con sleep
temporizador "$1"&
sleep "$1"
hablar "$2"
}