Screen Orientation

The device may be worn on the left or right eye, and will always be in landscape or reverseLandscape orientation.

  • The proper orientation to specify for your Activity in the manifest is:

Java

android:screenOrientation="sensorLandscape"


Determining Display Type

While most of the hardware on the M400 and M4000 is identical, the unique displays on each device allow users to interact with what is on-screen in vastly different ways.

As such, you may wish to design user interfaces for your application that are specifically targeted to one device or the other.
Instead of developing and maintaining two separate apps to accomplish this goal, Vuzix recommends to detect the display type of the device at run time and dynamically switch the interface to the appropriate experience.

To do this, Vuzix has added a function to the HUD-Resources library to quickly query the display type, an example of how to utilize this can be found below.

For more information on including this library in your project, please refer here.

Java

if(Utils.getDisplayType() == Utils.DisplayType.OCCLUDED) {
// M400s have an occluded OLED display
}
else if(Utils.getDisplayType() == Utils.DisplayType.TRANSPARENT) {
// M4000s have a transparent waveguide-based display
}


Navigation

The user will navigate your UI with the three physical buttons or touch swipes that can be automatically translated to KeyEvent key codes as described in the Interaction Methods article.

  • Allow UI elements to be navigated with simple left/right/up/down navigation, and give users clear visual indicators which UI element currently has focus.

  • Consider adding customized verbal navigation using the Vuzix Speech SDK.

  • Explicitly control the focus order. More details can be found in the separate Navigation and Focus article.

Usability Best Practices

The most important aspect to a well-designed user interface for an application intended to be used on the M400 or M4000 is simplicity. This is largely driven by the limited amount of space on the display.

  • Avoid complex menu systems, instead use a linear progression through interface components to minimize the amount of time a user needs to dedicate to navigating the application UI.

  • Limit the amount of information being displayed to the user at any given moment to be very contextually relevant. I.E. a single, specific instruction to guide the user to performing an individual step in a procedure.

  • Avoid displaying complex diagrams or schematics to the user, instead opt for displaying only the components immediately relevant to the task at hand.

  • Try to minimize the frequency of scenarios requiring the user to physically interact with the device by leveraging alternative methods of advancing a user through the application interface. The best way to do so is by leveraging voice commands, but this can also be done by automatically advancing a user to the next screen based on any number of interactions, such as scanning a barcode, taking a picture, or some other form of verification that the step has been completed.

Did this answer your question?