CamControl
CamControl copied to clipboard
Open source app to connect with popular action cameras, replacing your vendor's closed source app system.
Action Cam Control App for Android
Open source vendor agnostic client application to interface with most popular sports cameras (eg: GoPro, Yi, SJCam, etc...).
Quick Links:
Downloads:
Downloads will be hosted on F-Droid and the GitHub releases page.
Google Play releases will also be uploaded.
Aims:
- Open source and login-free
- Virtually permissionless
- Support most action cameras
- Have all the features from the vendor's client
- Run without Google Play Services
Mockup of the app UI:
Disclaimer: Not a designer.
Works with:
- GoPro - API
Planned:
- Xiaomi Yi
- Insta 360 One X
- DJI Action Cameras
- Sony Action Cameras
- SJcam
- Other ChinaPro to be added
Features:
The app must at least have the following features regardless of camera used:
- Preview live stream
- Control basic features eg: record, take picture, change modes, turn on or off
- Get camera status messages
- Get videos and photos off memory
- Camera detection
Contribute!
I maintain the GoPro Wifi API and I will be doing the GoPro support, if you want to add support for your action camera:
- See the /camera/goproAPI folder, this is what provides the app with instructions and assets on how to connect to a GoPro camera, add a new folder inside /camera/ named
camera name
API, inside you'll need to place the following files:- Camera.kt:
- Details about the camera(s) itself:
-
model_name
array, -
ip_address
as a string, -
baseURL
,statusURL
, -
settingsURL
, -
commandURL
as string (with :port if needed), -
connectionMsg
array as string (this is to check if the camera is connected, first item should be a URL and second item should be a string), -
info
array with information from the vendor (eg: vendor name, vendor country, vendor website)
-
- Details about the camera(s) itself:
- Constants.kt:
- Host your commands in this file, I tend to follow a Video/Photo/MultiShot/Setup/Command structure which is easy to understand and use. Other cameras are different but try to stick to that structure.
- Live.kt:
- This should have a function called
getStream
that returns a Uri or a Video that ExoPlayer can play.
- This should have a function called
- Media.kt:
- Many cameras have a media front end in their IP addresses with port 8080, you'll need the URL the vendor app uses, for GoPro for instance its a JSON. It should have a
mediaURL
Uri and a function calledgetMedia()
which returns an array with the URLs of the photos and videos.
- Many cameras have a media front end in their IP addresses with port 8080, you'll need the URL the vendor app uses, for GoPro for instance its a JSON. It should have a
- Status.kt:
- Should be a list of Strings or integers with an appropriate Status name.
- Camera.kt:
License & Libraries used
- com.github.armcha:SpaceNavigationView
- de.mrmaffen:libvlc-android
- com.github.gabrielemariotti.changeloglib
- com.github.medyo:android-about-page