Skip to content

manafishrov/android

Repository files navigation

Manafish Android App

Android control application for the Manafish ROV built with Tauri, SolidJS, and Rust. It is an Android-focused adaptation of the desktop app in ../app: it speaks the exact same WebSocket protocol to the ROV firmware and renders the same HUD and settings, but replaces keyboard/gamepad input with on-screen touch controls (virtual joysticks and sliders).

Differences from the desktop app

  • Touch controls replace the keyboard/gamepad tabs: two virtual joysticks (left = surge/sway, right = pitch/yaw) with sliders above them for heave and roll, rendered over the camera feed. They can be toggled in Settings → Touch Controls.
  • HUD touch buttons for functions that are keybind-only on desktop: record, desired-depth stepping, auxiliary action axes, and custom actions.
  • No updater, SD-card flashing, or window chrome — these are desktop-only features.
  • Recording saves the MediaRecorder output directly (no FFmpeg remux).

Connecting to the ROV

Use an ethernet-to-USB-C adapter. The ROV firmware runs a DHCP server on its ethernet port, so the phone gets an address automatically; the app then connects to the same ws://10.10.10.10:9000 and WebRTC endpoints as the desktop app.

Prerequisites

  • Bun
  • Rust with the Android targets (rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android)
  • Android SDK + NDK, with ANDROID_HOME and NDK_HOME set
  • JDK 17+

Setup

bun install
bun run tauri android init

Development

bun run tauri android dev

Build

bun run tauri android build

Note

On Windows, Tauri links the built Rust library into the Gradle project with a symbolic link, which requires Developer Mode (or SeCreateSymbolicLinkPrivilege). Without it the build fails after the Rust compile step. Either enable Developer Mode, or copy the built library manually and finish with Gradle:

Copy-Item src-tauri\target\aarch64-linux-android\debug\libmanafish_lib.so `
  src-tauri\gen\android\app\src\main\jniLibs\arm64-v8a\
cd src-tauri\gen\android
.\gradlew.bat assembleArm64Debug -x rustBuildArm64Debug

Scripts

Script Description
bun run dev Start Vite dev server
bun run build Build frontend
bun run test Run frontend tests (vitest)
bun run lint Lint TypeScript
bun run lint:fix Lint and auto-fix TypeScript
bun run fmt Format TypeScript
bun run fmt:check Check TypeScript formatting
bun run lint:rs Lint Rust
bun run lint:rs:fix Lint and auto-fix Rust
bun run fmt:rs Format Rust
bun run fmt:rs:check Check Rust formatting

Rust tests: cargo test --manifest-path src-tauri/Cargo.toml.

License

This project is licensed under the GNU Affero General Public License v3.0 or later - see the LICENSE file for details.

About

Android app for controlling Manafish.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages