Sign inSign up

hn8888/adb-api

By hn8888

•Updated 9 months ago

API Docker para controlar dispositivos Android mediante ADB

Image
Developer tools
0

3.9K

hn8888/adb-api repository overview

⁠ADB Control API

API Docker para controlar dispositivos Android mediante ADB (Android Debug Bridge).

⁠Características

  • ✅ Conectar/desconectar dispositivos Android
  • ✅ Obtener información detallada del dispositivo (modelo, versión, RAM, batería)
  • ✅ Monitorear la aplicación actualmente en pantalla
  • ✅ Listar aplicaciones instaladas
  • ✅ Acceder a logs del sistema (logcat)
  • ✅ Controlar el volumen (aumentar, disminuir, silenciar, nivel específico)
  • ✅ Reproducir videos de YouTube
  • ✅ Control de reproducción (pausa, salir)
  • ✅ Descargar capturas de pantalla
  • ✅ Enviar comandos ADB personalizados
  • ✅ Validación automática de conexión
  • ✅ Documentación interactiva con Swagger

⁠Requisitos

  • Docker
  • Docker Compose
  • Dispositivos Android con depuración ADB habilitada

⁠Instalación

⁠1. Clonar o crear el proyecto
mkdir docker-adb-api
cd docker-adb-api
⁠2. Construir la imagen
docker-compose build
⁠3. Iniciar el contenedor
docker-compose up -d
⁠4. Verificar que está corriendo
docker ps | grep adb-control-api

⁠Uso

⁠Acceso a la API
  • URL base: http://localhost:8000
  • Documentación Swagger: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
⁠Ejemplos de uso
⁠1. Conectar a un dispositivo
curl -X POST "http://localhost:8000/devices/connect?ip=192.168.0.161&port=5555"
⁠2. Listar dispositivos conectados
curl "http://localhost:8000/devices"
⁠3. Obtener información detallada del dispositivo
curl "http://localhost:8000/device/info?device_ip=192.168.0.161"
⁠4. Obtener aplicación actualmente en pantalla
curl "http://localhost:8000/device/current-app?device_ip=192.168.0.161"
⁠6. Obtener lista de aplicaciones instaladas
curl "http://localhost:8000/device/installed-apps?device_ip=192.168.0.161&limit=20"
⁠7. Obtener logs del sistema
curl "http://localhost:8000/device/logcat?device_ip=192.168.0.161&lines=50"
⁠8. Obtener volumen actual
curl "http://localhost:8000/device/volume/current?device_ip=192.168.0.161"
⁠9. Aumentar volumen
curl -X POST "http://localhost:8000/device/volume/increase?device_ip=192.168.0.161&steps=2"
⁠10. Disminuir volumen
curl -X POST "http://localhost:8000/device/volume/decrease?device_ip=192.168.0.161&steps=1"
⁠11. Establecer volumen a un nivel específico
curl -X POST "http://localhost:8000/device/volume/set?device_ip=192.168.0.161&level=7"
⁠12. Silenciar dispositivo
curl -X POST "http://localhost:8000/device/volume/mute?device_ip=192.168.0.161"
⁠13. Reproducir video de YouTube
curl -X POST "http://localhost:8000/play?device_ip=192.168.0.161&video_url=https://www.youtube.com/watch?v=dQw4w9WgXcQ"
⁠14. Pausar video
curl -X POST "http://localhost:8000/stop?device_ip=192.168.0.161"
⁠15. Salir de la app
curl -X POST "http://localhost:8000/exit?device_ip=192.168.0.161"
⁠16. Descargar screenshot
curl "http://localhost:8000/screenshot?device_ip=192.168.0.161" -o screenshot.png
⁠17. Obtener estado
curl "http://localhost:8000/status?device_ip=192.168.0.161"
⁠18. Enviar comando personalizado
curl -X POST "http://localhost:8000/command?device_ip=192.168.0.161&command=input%20keyevent%20KEYCODE_HOME"
⁠19. Desconectar dispositivo
curl -X POST "http://localhost:8000/devices/disconnect?device_ip=192.168.0.161"

⁠Endpoints

MétodoRutaDescripciónParámetros
GET/Información de la API-
Device Management
POST/devices/connectConectar dispositivoip, port (opcional)
GET/devicesListar dispositivos conectados-
GET/statusEstado del dispositivodevice_ip
POST/devices/disconnectDesconectar dispositivodevice_ip
Device Information
GET/device/infoInformación detallada del dispositivodevice_ip
GET/device/current-appAplicación actualmente en pantalladevice_ip
GET/device/installed-appsLista de aplicaciones instaladasdevice_ip, limit (opcional)
GET/device/logcatLogs del sistemadevice_ip, lines (opcional), filter_text (opcional)
Volume Control
GET/device/volume/currentObtener volumen actualdevice_ip
POST/device/volume/increaseAumentar volumendevice_ip, steps (1-15)
POST/device/volume/decreaseDisminuir volumendevice_ip, steps (1-15)
POST/device/volume/setEstablecer nivel de volumendevice_ip, level (0-15)
POST/device/volume/muteSilenciar dispositivodevice_ip
Video Control
POST/playReproducir videodevice_ip, video_url
POST/stopPausar videodevice_ip
POST/exitSalir de appdevice_ip
Device Operations
GET/screenshotDescargar screenshotdevice_ip
POST/commandComando personalizadodevice_ip, command

⁠Respuestas

⁠Éxito (200)
{
  "status": "success",
  "message": "Conectado a 192.168.0.161:5555"
}
⁠Error (4xx/5xx)
{
  "detail": "Dispositivo no conectado"
}

⁠Configuración de Dispositivo Android

Para que la API funcione, necesitas:

  1. Habilitar Depuración por USB:

    • Configuración → Información del dispositivo
    • Build Number (presiona 7 veces)
    • Configuración → Opciones de desarrollador
    • Activar "Depuración por USB"
  2. Habilitar Depuración Inalámbrica:

    • Opciones de desarrollador → Depuración inalámbrica
    • Aceptar la solicitud de conexión

⁠Logs

Ver logs del contenedor:

docker logs -f adb-control-api

⁠Detener la API

docker-compose down

⁠Solución de problemas

⁠La API no conecta al dispositivo
  1. Verifica que ADB esté habilitado en el dispositivo
  2. Verifica que el dispositivo y la PC estén en la misma red
  3. Comprueba la IP correcta: adb devices
  4. Reinicia el contenedor: docker-compose restart
⁠Screenshot no se descarga
  1. Verifica que el dispositivo tenga espacio en /sdcard
  2. Revisa los logs: docker logs adb-control-api

⁠Integración con Home Assistant

Usa los scripts disponibles en home-assistant/scripts.yaml

⁠Licencia

Licencia de Uso No Comercial

Este proyecto está bajo una licencia de uso no comercial. Puedes utilizarlo para:

  • ✅ Uso personal y educativo
  • ✅ Investigación académica
  • ✅ Desarrollo y testing interno
  • ✅ Proyectos de código abierto no comerciales

Uso comercial prohibido sin autorización explícita. Para licencias comerciales, contacta a los autores.

Ver LICENSE⁠ para más detalles.

Tag summary

Content type

Image

Digest

sha256:5c7e4c5fa…

Size

64.6 MB

Last updated

9 months ago

docker pull hn8888/adb-api