Skip to content

Repository files navigation

📹 Insta360 Karoo Remote

Control remoto por Bluetooth para tu cámara Insta360 X5 desde un Hammerhead Karoo 2.

License Platform Kotlin


🎯 Características

Control Remoto BLE

  • Conectar/desconectar a tu cámara Insta360 X5 por Bluetooth Low Energy
  • Grabar video remotamente desde el Karoo
  • Capturar fotos con un solo toque
  • Marcar highlights en tiempo real

🎥 Integración Nativa Karoo

  • Data Fields personalizados en el display del Karoo
  • Monitoreo de batería en tiempo real
  • Estado de conexión visible
  • Auto-grabación sincronizada con trayectos

📺 UI/UX Intuitiva

  • Indicador visual de grabación (overlay en pantalla)
  • Botones de control grandes y accesibles
  • Información en tiempo real del estado de la cámara

⚙️ DevOps Integrado

  • GitHub Actions para compilación automática de APK
  • Artefactos descargables en cada push
  • Comentarios automáticos en PRs

📋 Requisitos

  • Android 8.0+ (API 26+)
  • Hammerhead Karoo 2 (con soporte BLE)
  • Insta360 X5 o compatible
  • Permisos de Bluetooth activados en el dispositivo

Permisos Necesarios

  • BLUETOOTH - Conexión BLE
  • BLUETOOTH_ADMIN - Control de Bluetooth
  • BLUETOOTH_SCAN - Escaneo de dispositivos (Android 12+)
  • BLUETOOTH_CONNECT - Conexión a dispositivos (Android 12+)
  • SYSTEM_ALERT_WINDOW - Overlay de grabación

🚀 Instalación

Opción 1: Descargar APK Pre-compilado

  1. Ve a Releases
  2. Descarga el APK más reciente
  3. Instala en tu Karoo 2

Opción 2: Compilar desde Código

Prerequisitos

  • Android Studio Flamingo o superior
  • JDK 11+
  • Gradle 8.0+

Pasos

# Clonar repositorio
git clone https://github.com/tueresmas/insta360.git
cd insta360

# Compilar APK Debug
./gradlew assembleDebug

# Compilar APK Release (sin firma)
./gradlew assembleRelease

Los APK generados estarán en:

  • Debug: app/build/outputs/apk/debug/app-debug.apk
  • Release: app/build/outputs/apk/release/app-release-unsigned.apk

Instalar en el dispositivo

# Debug
./gradlew installDebug

# O manual
adb install app/build/outputs/apk/debug/app-debug.apk

📱 Configuración de tu Cámara

1. Encontrar tu dirección MAC

Tu dirección MAC actual es: F0:23:AE:18:C0:CD (Insta360 X5)

Si necesitas actualizar la dirección MAC:

  1. Opción A: Cambiar en el código (recomendado)

    // Archivo: app/src/main/kotlin/com/tueresmas/insta360karoo/ui/MainActivity.kt
    // Línea 166
    val cameraMAC = "F0:23:AE:18:C0:CD"  // Cambia aquí
  2. Opción B: Encontrar MAC de tu cámara

    • En la cámara: Menú → Bluetooth → Ver información
    • O usar app: nRF Connect
    • O terminal:
      adb shell settings get Bluetooth

2. Emparejar Bluetooth (primera vez)

  1. En Hammerhead Karoo 2: Bluetooth → Escanear dispositivos
  2. Selecciona X5 6HFRW5
  3. Confirma emparejamiento en ambos dispositivos

📖 Uso

Iniciar la App

  1. Abre Insta360 Karoo Remote en el Karoo 2
  2. Verás el estado de conexión en la pantalla

Conectar a la Cámara

  1. Tap en botón "Conectar Cámara"
  2. Espera a que se establezca la conexión (5-10 segundos)
  3. El estado cambiará a "CONECTADO" (verde)

Controlar la Cámara

Botón Función
🔴 REC Iniciar/Detener grabación
📷 FOTO Capturar foto
DESTAC. Marcar highlight en video

Data Fields (Display Karoo)

La app añade dos campos personalizados en el display:

  • Estado de Cámara: Muestra REC/STBY/DISC
  • Batería: Porcentaje de batería en tiempo real

🔧 Solucionar Problemas

❌ La app no conecta a la cámara

Solución:

  1. Verifica que la MAC sea correcta: F0:23:AE:18:C0:CD
  2. Asegúrate de que Bluetooth esté activado en ambos dispositivos
  3. Reinicia la app y la cámara
  4. Desempareja y vuelve a emparejar

❌ Permisos de Bluetooth denegados

Solución:

  1. Ve a Configuración → Aplicaciones → Insta360 Karoo Remote → Permisos
  2. Activa todos los permisos de Bluetooth
  3. Reinicia la app

❌ El overlay de grabación no aparece

Solución:

  1. Ve a Configuración → Aplicaciones especiales → Permiso para mostrar sobre otras apps
  2. Activa Insta360 Karoo Remote
  3. Reinicia la app

❌ La batería no se actualiza

Solución:

  1. Asegúrate de que la cámara esté encendida
  2. Verifica que esté emparejada correctamente
  3. Reinicia la conexión BLE

📦 Estructura del Proyecto

insta360/
├── app/
│   ├── src/
│   │   ├── main/
│   │   │   ├── kotlin/
│   │   │   │   └── com/tueresmas/insta360karoo/
│   │   │   │       ├── ui/
│   │   │   │       │   └── MainActivity.kt          # UI principal
│   │   │   │       ├── service/
│   │   │   │       │   ├── Insta360BluetoothService.kt      # Servicio BLE
│   │   │   │       │   └── RecordingOverlayService.kt       # Overlay grabación
│   │   │   │       ├── karoo/
│   │   │   │       │   ├── CameraStateDataField.kt  # Data Field estado
│   │   │   │       │   ├── CameraBatteryDataField.kt # Data Field batería
│   │   │   │       │   └── RideRecordingListener.kt  # Listener eventos
│   │   │   │       └── utils/
│   │   │   └── res/
│   │   │       ├── layout/
│   │   │       │   └── activity_main.xml
│   │   │       ├── drawable/
│   │   │       └── values/
│   │   │           ├── colors.xml
│   │   │           ├── strings.xml
│   │   │           └── themes.xml
│   │   └── test/
│   └── build.gradle
├── .github/
│   └── workflows/
│       └── build.yml                    # GitHub Actions CI/CD
├── gradle.properties
├── settings.gradle
└── README.md

🛠️ Tecnologías

  • Lenguaje: Kotlin
  • Minimo SDK: Android 8.0 (API 26)
  • Target SDK: Android 14 (API 34)
  • Build System: Gradle 8.0+
  • BLE: Android Bluetooth Low Energy API
  • Logging: Timber
  • Karoo SDK: Hammerhead Karoo 2 Extension SDK

Dependencias Principales

// Karoo SDK
implementation 'com.hammerhead.sdk:karoo-ext:1.1.0'

// Kotlin
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'

// Android
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core:1.10.1'

// Logging
implementation 'com.jakewharton.timber:timber:5.0.1'

📝 Cambios en la Configuración

Actualizar MAC Address de tu Cámara

Si cambias de cámara, actualiza la MAC en MainActivity.kt:

private fun connectToCamera() {
    // Cambiar aquí la dirección MAC
    val cameraMAC = "F0:23:AE:18:C0:CD"  // ← NUEVA MAC
    
    bluetoothService?.connectToCamera(cameraMAC)
    Toast.makeText(this, "Conectando a cámara...", Toast.LENGTH_SHORT).show()
}

Luego recompila:

./gradlew assembleDebug

🚀 CI/CD con GitHub Actions

Este proyecto incluye un workflow automático en GitHub Actions que:

✅ Compila el APK en cada push
✅ Genera artefactos descargables
✅ Ejecuta tests automáticos
✅ Comenta en PRs con el estado del build

Ver builds: Ve a Actions


📄 Licencia

Este proyecto está bajo licencia MIT. Ver LICENSE para más detalles.


👤 Autor

tueresmas - GitHub


🤝 Contribuciones

¡Las contribuciones son bienvenidas! Para cambios importantes:

  1. Fork el proyecto
  2. Crea una rama (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

⚠️ Disclaimer

Este proyecto es no oficial y no está afiliado con Insta360 o Hammerhead.

Úsalo bajo tu propio riesgo. El autor no se responsabiliza por:

  • Daños al dispositivo o cámara
  • Pérdida de datos
  • Mal funcionamiento de la aplicación

🆘 Soporte


📚 Referencias


Última actualización: 11 de julio de 2026
Versión: 1.0.0

¡Disfruta controlando tu Insta360 desde tu Karoo 2! 🚴📹

About

insta 360 for hammerhead karoo 2

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages