Álvaro González Sotillo

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-api desde 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"
}