Bringing the field-media workflow to Android

SoFlow built a Kotlin and Jetpack Compose Android prototype that pulls full-quality media straight off a GoPro HERO13 Black over local Wi-Fi, saves it into MediaStore, and adds sharing, ZIP backup, and cleanup tools on top.
Media Desk Android Prototype
Client
Media Desk Android Prototype
Timeline
Proof card
Services
Website
About

An Android proof point for GoPro field-media import

This is a prototype proof card rather than a production app page. It mirrors the field media workflow direction on Android using Kotlin, Jetpack Compose, and GoPro HTTP endpoints.
Challenge

The challenge behind the build

Android and iOS handle camera Wi-Fi connections, media storage, and sharing very differently. Proving the same field workflow — connect, import, deliver, back up — would work on Android meant building real native code, not assuming the iOS approach would translate.

Goal

The implementation goal

Build a Kotlin and Jetpack Compose prototype with a camera-agnostic architecture, validated first against a GoPro HERO13 Black over its local HTTP interface, that lists media, imports it at full quality, and hands it off for sharing or backup.

Result

A native Android path from camera to client

The prototype connects to a GoPro over local Wi-Fi, lists available media through the camera's HTTP endpoints, pulls full-quality files straight into Android's MediaStore, and layers on share intents, ZIP backup export, activity logging, and cleanup tools — proving the workflow end to end on Android.

Stack
Kotlin, Jetpack Compose, Android MediaStore, GoPro HTTP, ZIP export
Systems
GoPro HERO13 Black, Android MediaStore, local camera Wi-Fi
Category
Custom Solutions
This is some text inside of a div block.

The brief was to explore Android parity for the Media Desk field workflow: camera connection, media import, client sharing, and backup export.

This is some text inside of a div block.

Android creator delivery has different platform APIs than iOS, but the field workflow still needs reliable camera listing, full-quality import, local storage, and share/export behavior.

This is some text inside of a div block.

This is intentionally v1: it skips Bluetooth pairing and assumes the device is already joined to the camera's Wi-Fi network before import starts.

This is some text inside of a div block.

SoFlow built a Kotlin and Jetpack Compose prototype with a camera-agnostic architecture and a working GoPro HERO13 Black HTTP implementation as its first real target.

This is some text inside of a div block.

The app uses a camera-agnostic interface layer so other GoPro or similar models could be added later, with a concrete HERO13 Black HTTP implementation doing the real work today: listing media, downloading full-quality files, writing them into MediaStore, and exposing share and ZIP-export actions.

This is some text inside of a div block.
  • Configurable camera base URL for HTTP-connected GoPro devices
  • GoPro media listing and full-quality file downloads
  • Direct import into Android MediaStore (Pictures and Movies)
  • Client share intents for fast handoff
  • Backup ZIP export, activity log, and storage cleanup tools
This is some text inside of a div block.

The prototype gives SoFlow a real, working Android proof point for field media tools, clearly scoped as a proof card rather than a finished product.

This is some text inside of a div block.
  • Confirmed working: Kotlin, Jetpack Compose, GoPro HTTP listing, full-quality download, MediaStore import, share intents, and ZIP export
  • Bluetooth pairing intentionally deferred out of v1 scope
  • Built as a direct Android counterpart to the iOS Media Sync Desk workflow
This is some text inside of a div block.

Is this a finished Android app?

No — it's a working proof card built to test Android parity with SoFlow's iOS field-media app. It proves the camera-import-to-MediaStore path works on Android's different APIs; it isn't yet a production release.

Why put this in Webflow if external code is involved?

Webflow is the public storytelling and CMS layer. External code should stay in the app, Worker, or integration layer where it can be versioned, secured, and tested.

What is needed before publishing?

Real Android screenshots from the prototype, plus a clear explanation of how it relates to Media Sync Desk, before this goes live as a public Work entry.

This is some text inside of a div block.

This proves SoFlow can validate a platform-specific mobile workflow — here, Android — on its own terms instead of forcing a single architecture across iOS and Android before either is proven.

This is some text inside of a div block.

Is this a finished Android app?

No — it's a working proof card built to test Android parity with SoFlow's iOS field-media app. It proves the camera-import-to-MediaStore path works on Android's different APIs; it isn't yet a production release.

Why put this in Webflow if external code is involved?

This is some text inside of a div block.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

This is some text inside of a div block.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

This is some text inside of a div block.
This is some text inside of a div block.
Before

SoFlow's field-media workflow existed only on iOS, with no tested equivalent for Android devices or clients.

After

A working Android prototype now proves the same camera-to-delivery workflow — connect, import, share, back up — using Android's native APIs.

This is some text inside of a div block.

Talking to a camera over local Wi-Fi, writing full-quality files into Android's MediaStore, triggering share intents, and building ZIP exports all require native Android code — none of it is something a website or no-code layer can do.

Let's talk

Ready to elevate your business?