App Development
Requirements:
Your app must be hosted online by your team to be added to our app store.
Web application
M/M2 - 1080x1920, 1920x1080 Epic/Luma -2160x3840
Follow Style guide for optimal holographic effect
Testing on a computer:
We recommend testing your app in your Chromium browser using the developer tools. You can simulate our unit's dimensions by setting the browser to a 9x16 ratio. This will help you ensure your app looks and functions correctly on our devices. Device resolutions: M/M2 - 1080x1920, 1920x1080 Epic/Luma -2160x3840
Connectivity Requirements:
Your app must be hosted online and accessible via Wi-Fi to run on our devices. We recommend caching videos within your app instead of streaming them to mitigate issues with poor Wi-Fi connections. Offline applications are not currently supported. If offline functionality is required, you can use the HDMI 2 port on the back of the Epic/Luma/M2 unit. Please note that HDMI 2 is not available on the M unit.
Hardware Access:
Your app will have automatic access to the touchscreen, camera, and microphone without needing to request user permission. On the Epic there is a second camera with RealSense in its name. In the Luma there is a camera that appears with HDMI in the name from the HDMI 2. If you are building apps for all devices I recommend ignoring these two cameras unless you intend to use them. The audio devices select as device default are correct but you must choose the correct camera sometimes.
const validCameras = devices.filter(
(device) =>
device.kind === "videoinput" &&
(!device.label ||
(!device.label.match(/hdmi/i) && !device.label.match(/real/i)))
);Speech-to-Text Functionality:
Our browser does not currently support WebKitSpeech. If your app requires speech-to-text functionality, you will need to use a third-party API such as Google Cloud Speech-to-Text.
Web Video Encoding:
When adding videos to your web app we recommend encoding the file so it is not as large in size. We also recommend hosting it in some form of cloud storage or cdn that can server video content instead of building it into your compiled app. Other techniques like caching can help in low internet environments.
Luma/Epic
Filetype: .webm
Video: VP9, 8mbps, 2160 x 3840p (Vertical)
Audio: Opus, Stereo, 48k, 320kbps
M/M2
Filetype: .webm
Video: VP9, 5mbps, 1080 x 1920p (Vertical) or 1920 x 1080 (Horizontal)
Audio: Opus, Stereo, 48k, 320kbps
Testing on Proto OS:
The Proto App Launcher is a valuable tool that allows users to seamlessly launch web applications and URLs on their devices. Before submitting your app for approval to the app store, you can launch URLs on your device to test.
http://protoapps.protohologram.com/
The App Launcher acts as the gateway for users to access a variety of web applications and URLs. Through this URL, users can launch any specific application or webpage that we provide, expanding the capabilities of their Proto devices.
Submission:
Check out the App Store Submission tab to see how to get it added to the private or public app store.
Additional Options For App Submission:
If you already have submitted your app and want to activate any of these features feel free to reach out.
Play Offline
All apps originally required internet to run on the device. While we do not support apps installed directly to the device yet this new app submission flag does two things. First, if the device loses internet and the app is launched it will continue to play the app. This helps in situations where you can utilize the cache and may have spotty internet. Second, it allows you to launch applications without needing a connection to proto cloud. This is helpful if you have the device on a corporate network with no outbound connection and want to launch and app running on your local network (ex: 192.168.1.1)
Include Serial Number
We can now send the devices serial number as a query parameter to your application.
Example: https://yourappurl.com/?protoSerialNumber=SERIALAPPEARSHERE
This can be helpful if you have multiple devices in the field running the same app and need to differentiate between devices which is running without the need to make several apps per device.
Pinch to Zoom
With the latest chrome update they removed the ability for users to disable zoom via code so we have added this flag to allow you to disable this or enable it. If you have a 3D application we recommend allowing pinch to zoom so all multi finger gestures work. If you simply have something like content or and avatar on screen you may want this flag on so users cannot walk up to the screen zoom in then walk away leaving the next user confused.