Settings guide

The SmartEyeglass API allows you to control settings such as screen depth, safe display, and power saving mode. This guide explains how and when to use these special modes and settings.

The basics

To get started working with configuration modes, set up a project using the SampleDisplaySettingExtension; see more about creating SmartEyeglass projects in the How to create your first SmartEyeglass project tutorial. See the API overview for more about how the sample creates and initializes a control class.

The SmartEyeglassControlUtils class allows you to access these configuration options:

  • Safe display mode
  • Power modes
  • Sound effects
  • Apparent screen depth
  • Telephony status

Testing Note: The SmartEyeglass Emulator does not support emulation of features that rely on SmartEyeglass hardware; these include power modes, sound effects, and apparent screen depth. You must test your implementations of these features with a real device.

Safe display mode settings

The safety of your users should always be your primary consideration, especially when designing extension applications that can be used while walking or driving.

The full display of the SmartEyeglass can obstruct the view of the user, and tends to distract the user from what is really happening in the real world. Safe Display Mode allows you to turn off the upper half of the SmartEyeglass display:

Full display: Safe Display mode is OFF.

Full display: Safe Display mode is OFF.

Half display: Safe Display mode is ON.

Half display: Safe Display mode is ON.

Activate safe display mode

You can activate Safe Display Mode programmatically. We recommend that you do so when your application detects that the user is starting to move.

  • To enable Safe Display Mode, include this call in the handler that you define for the triggering event:
    mSmartEyeglassControlUtils.enableSafeDisplayMode();
    
  • To restore the full-screen display, turn Safe Display Mode off:
    mSmartEyeglassControlUtils.disableSafeDisplayMode();
    

When you enable or disable Safe Display Mode, you must redraw the screen for the change to take effect. For example:

@Override
public void onResume() {
    mSmartEyeglassControlUtils.enableSafeDisplayMode();
    updateScreen();
}

Design guidelines for safe display

When you activate Safe Display Mode, the SmartEyeglass masks whatever you are displaying on the top half of the screen. You can provide a “glimpse” function, allowing users to switch to the Safe Display Mode for a short time in order to have a better view the surroundings; in this case, you don’t have to actually change your display.

If you want to continue showing your application UI in Safe Display Mode, you must adjust what you display on the screen to fit into the smaller display area. You can do this by changing the layout, and also by simplifying what is shown, retaining only the most important elements. Don’t make things smaller — trying to interpret an image that is harder to see is even more distracting than trying to look past the full display.

For a more complete example of how to use Safe Display mode, see the SampleDisplaySettingExtension sample project. The SampleDisplaySettingControl class contains the display logic.

Check your implementation

You can test your application during development using either the SmartEyeglass Emulator or the SmartEyeglass device. Final testing should be performed with the actual device.

Power mode settings

Your SmartEyeglass apps can demand extra performance from the SmartEyeglass hardware if necessary, by shifting into a different power mode. The high-power mode is useful for camera operations that involve large data transfers. In addition, you can enable a standby mode to conserve power.

Connectivity and power usage

The SmartEyeglass device can communicate with the host device over a Bluetooth or Wireless LAN connection. The type of connection affects the power-usage profile.

  • In the default power mode (POWER_MODE_NORMAL) the SmartEyeglass connects to its host device over Bluetooth, ensuring an efficient balance between data transmission and battery life. When the user launches an app, this is the default power level.
  • When you switch to the higher level (POWER_MODE_HIGH), communication between the SmartEyeglass and its host device switches to a Wireless LAN connection.

How to change power modes

To change power modes, create a class that extends the ControlExtension class of SmartExtensionAPI. Call the SmartEyeglassControlUtils.setPowerMode() method and assign the desired power mode:

setPowerMode(SmartEyeglassControl.Intents.POWER_MODE_HIGH)

To revert the power mode to its normal state, assign POWER_MODE_NORMAL.

See the SamplePowerModeExtension in the SmartEyeglass SDK for an example of how to implement this feature. Note that you must use an actual SmartEyeglass device to test your implementation; the emulator does not simulate this power function.

CAUTION: Use this feature only when necessary, and make sure that your user cannot unintentionally leave the power running at the higher level.

Standby mode

When there is no user activity for about five minute, the device automatically enters a standby mode to conserve power. In standby mode, the display is off and the CPU stops. Standby mode is automatically deactivated when the user presses any button on the controller.

You can activate standby mode programmatically when you detect a period of inactivity. To activate standby mode, use the SmartEyeglassControlUtils.requestEnterStandbyMode() method.

Sound effect settings

The SmartEyeglass controller has a speaker that can play sounds in response to button-press events. Sound effects are enabled by default. Your application can enable or disable them programmatically.

To disable sound effects, call:

SmartEyeglassControlUtils.disableSoundEffect();

To re-enable them after you have disabled them, call:

SmartEyeglassControlUtils.enableSoundEffect();

Learn from the code example

For a more complete example of how to use sound effects, see the SampleSoundEffectSettingExtension sample project. The SampleSoundEffectSettingControl class contains the sound-effect logic.

Apparent screen depth settings

The SmartEyeglass “screen” is a display plane that can appear to be in different distances from the user’s eyes. You can use the API to set the apparent screen depth.

Users can have a preference for the most comfortable viewing distance, but there are also safety considerations. When the device is being used outdoors, a shallower depth interferes more with the user’s perception of their surroundings. You should choose a screen depth that takes account of the user’s preference, and also of the environment in which the application is expected to be used.

How apparent screen depth works

Depth perception is a construct of the brain that is based on how the muscles of each eye focus on an object. Each eye is at a different angle from any given object. The angle formed by the observer’s eyes and the object is called the angle of convergence. For closer objects, the angle is bigger or wider, as compared to farther objects.

Angle of convergence.

Angle of convergence.

The SmartEyeglass software takes advantage of this biological trait to make an image in display appear closer or further away by changing the angle between two copies of the image. The API provides a setting that changes this angle, and therefore the apparent depth of anything that appears on the SmartEyeglass display.

Safety considerations for screen depth

Normally, a person tends to focus on nearby objects when indoors, and would have to look up and adjust their focus to see, for example, something or someone approaching from across the room. Similarly, when a person is out and around, they tend to focus further away, and have to look down or adjust their focus to, for example, avoid nearby obstacles. For the most part, people perform these adjustments automatically. However, when a user is using the SmartEyeglass device, they tend to focus their attention on the display, at whatever depth it appears. Just as texting while walking can be dangerous, displaying images close to the eyes on the SmartEyeglass can interfere with a user’s normal outdoor focus.

Factors affecting optimal display depth.

Factors affecting optimal display depth.

When you design your UI, it is important that you consider how your display might distract the user’s attention. We recommend that you offer the user a reminder and an option to change to the default screen depth, according to the user’s location and activity.

How to change the screen depth

You can set screen depth programmatically. We recommend that you do so when your application detects that the user starts to move or when at a new location since the accessory was last used. To set the screen depth, call this method with an event handler:

mSmartEyeglassControlUtils.setScreenDepth(mDepth);

Depth values can be integers from -4 to 6:

  • -4 is about 10 meters
  • 0 is about 5 meters (default)
  • 6 is the nearest setting

Telephony status

When the user pairs the SmartEyeglass with the host device, the telephone function of the phone considers it to be a Bluetooth headset. The user can activate the SmartEyeglass telephony function on the host phone in the SmartEyeglass settings.

The SmartEyeglass API does not allow your app to turn the telephony function on or off, but you can query the current status with SmartEyeglassControlsUtils.requestTelephonyFunctionStatus().

Comments 0

Sort by:

Showing 0 of 0 comments. Show all comments