Released late 2013 for the BlackBerry Z10 and Q10, running BlackBerry 10 OS. It addressed a market gap as the GoPro official app was not available for BlackBerry 10.
App design
For this app, I wanted to expose basic controls of the GoPro camera, as available to iOS and Android users with the official app.
Functionalities of the app include:
- controlling the GoPro to take stills, videos, bursts and time-lapse
- viewing GoPro Live Preview on the connected BlackBerry smartphones
- handling the HTTP communication over Wi-Fi between the BlackBerry phone and the GoPro camera
Challenges
I was able to find some good information online on how the GoPro could be controlled using HTTP GET requests, and I spent a lot of time experimenting and understanding the state machine of the GoPro camera.
Camera states handled in my state machine include:
enum GoProState {
StateDisconnected,
StatePoweringOn,
StatePowered,
StatePoweringOff,
StateIdle,
StateChangingMode,
StateStopRecording
};
The most difficult part was to understand how to access the live preview, and make it work smoothly using the QNX mm-renderer.
The Preview stream is accessed by HTTP Live Streaming (HLS), by a M3U8 playlist file. Very little documentation was available at the time and it required a lot of experiments to get it to work.
Tech stack
The BB10 app was developed using the Cascade UI framework. It provided building blocks for creating apps quickly, as well as APIs for accessing device peripherals and components such as the light sensor and camera.
- The front-end was built with QML and JavaScript.
- The application logic was written in Qt/C++.
In 2026, BlackBerry devices and BB10 are obsolete. For reference, here is some useful information about Qt development for BlackBerry.
License
Open source, GPL-3.0 Published on Github.