MOVERIO
BT-350 Documentation

3. Display Control

3.1. Display control summary

The BT-350 is smart glass that features an optical see-through system. You can overlay information on the display using an optical technique that provides clear images, without disturbing the view of the user's surroundings. It is also possible to project more information since the device uses a see-through system allowing images to be projected for both eyes, as opposed to the single image monocular type.

Summary of functions

  • Full screen display
  • Switch between 2D/3D display
  • Display brightness control
  • Mute control
  • Display distance control

3.2. Full screen display function

When displaying in full screen, mount using the following method. Full screen display is available for the BT-350 by using the standard Android functions.
In the BT-200, since full screen display was not available using the standard Android functions, the Epson original API was used.
Note that although the Epson APIs were available for the BT-200, they cannot be used with the BT-350.

Executing full screen in applications

Execute the following process in onCreate() for each Activity.

View view = this.getWindow().getDecorView();
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

* The above is an example only. See the following URL for details.
https://developer.android.com/training/system-ui/immersive.html

Switch between 2D/3D in full screen display

To switch between 2D/3D in full screen display, specify the parameter so that "OSD to show 2D/3D" will not be displayed. If OSD is shown, full screen display will be canceled. For details, refer to 3.3 Switch between 2D/3D display.

Notes on using VideoView during full screen mode

If you hide VideoView on full screen mode, the display image may become unstable.
In the case of calling VideoView#setVisibility() with using View.INVISIBLE or View.GONE for hiding the display image, you can avoid the issue by the following method.

Place arbitrary image in front of the the VideoView you want to hide.

For example, you can avoid the issue without any change of appearance by adding TextView that does not display any image to the layout file like the following.

<TextView
 android:layout_width="match_parent"
 android:layout_height="match_parent" />

3.3. Switch between 2D/3D display

The BT-350 allows you to display 3D content using side by side.
The side by side method places images on the left and right of the screen.

When using the side by side system with an HD size screen, you need to arrange images from left to right by reducing 1280 x 720 by half (640 x 720 pixels) to create one frame of an image.

You can use the following interface to separate images for the left and right eyes in the side by side system, and output each display.

  • Import module

    com.epson.moverio.btcontrol.DisplayControl

  • Constructor

    DisplayControl(Context context)

  • Interface

    • Switch 2D/3D display

      int setMode(int DisplayMode, boolean toast)

    • Parameters

      DisplayMode: 2D/3Dmode situation

      2D Mode : DisplayControl.DISPLAY_MODE_2D
      3D Mode : DisplayControl. DISPLAY_MODE_3D

      toast : Switch between show/hide for the OSD for 2D/3D

      Show : true
      Hide : false

      * To call during full screen display, specify false to turn OSD display off. When called by specifying true, full screen display will be canceled.

    • Return value

      Execution results: 0 (success), -1 (failure)

    • Acquire current 2D/3D display setting

      int getMode()

    • Parameters

      None

    • Return value

      2D Mode : DisplayControl.DISPLAY_MODE_2D Constant value 0
      3D Mode : DisplayControl. DISPLAY_MODE_3D Constant value 1

3.3.1. Adjust display brightness

When changing the brightness of display built-into the headset, you can change the transparency of the displayed image. When the brightness is low, the image is more transparent, and when the brightness is high, the image is more opaque.

* For system software prior to R1.1.0, you can not adjust the display brightness by using the screenBrightness field of WindowManager.LayoutParams which is the Android standard API. If you are using system software prior to R1.1.0, please update to the latest version.

  • Import file

    com.epson.moverio.btcontrol.DisplayControl

  • Constructor

    DisplayControl(Context context)

  • Interface

    • Display brightness settings

      int setBacklight(int backlight)

    • Parameters

      backlight: Brightness level 0 (dark) to 20 (bright)

    • Return value

      Execution results: 0 (success), -1 (failure)

    • Acquire display brightness

      int getBacklight()

    • Parameters

      None

    • Return value

      Current brightness setting (0 to 20)

3.4. Mute function

3.4.1. Display mute

You can use the mute function to temporarily stop displaying images. For example, you can use this to clear your view if you feel there is any possibility of danger in your immediate surroundings.
Use the following interface to activate and then deactivate mute.

  • Import file

    com.epson.moverio.btcontrol.DisplayControl

  • Constructor

    DisplayControl(Context context)

  • Interface

    • Set mute status

      int setMute(boolean mute)

    • Parameters

      Mute: Mute ON (true)/ OFF (false)

    • Return value

      Execution results: 0 (normal value), Others (error)

    • Acquire the mute status

      boolean getMute()

    • Parameters

      None

    • Return value

      Execution results: true (mute ON), false (mute OFF)

3.4.2. Comparison of mute knock function

For similar function, there is a system standard function of BT-350 called mute knock to temporary stop video and sound. Comparisons to display mute using API are shown as below

Item Display mute API Mute knock
How to use Call
DisplayControl#setMute()
By turning "Tap mute" in setting App ON, tap headset twice lightly
To return, perform the following operation
Tap headset twice lightly
Press either function key, volume key or power button
*When auto sleep operate during mute, sleep function have priority and will be in sleep mode. After returning from sleep mode, mute will be canceled.
Video motion When mute Display turns off Display turns off (Same as left column)
KEYCODE_MEDIA_PAUSE will be issued from system to AudioManager to pause video play
When return Display turns on Display turns on(Same as left column)
KEYCODE_MEDIA_PLAY will be issued from system to AudioManager to restart video play
Sound motion When mute No Change KEYCODE_MEDIA_PAUSE will be issued from system to AudioManager to pause music play
When return - KEYCODE_MEDIA_PLAY will be issued from system to AudioManager to restart music play
Remarks To know current mute situation, call
DisplayControl#getMute()
No notification to App for mute knock ON and OFF

3.5. Display distance control

You can adjust the display distance.
The following figure shows the display distance from a remote position. You can change the display distance setting to view the displayed image closer than the default status. The default is approximately 11m.

When the display distance is set to a short distance, the display position of the image in the left and right of the display moves closer to the center. This cause the user to go slightly cross-eyed which appears to shorten the display distance.
At this time, note that the displayed image becomes narrower and cropped partially.

* Being cross-eyed for an extended period could cause eyestrain. Be sure to take a break if you feel tired. Stop using the device immediately if you still feel tired or uncomfortable even after taking a break.

  • Import file

    com.epson.moverio.btcontrol.DisplayControl

  • Constructor

    DisplayControl(Context context)

  • Interface

    • Display distance settings

      boolean setDisplayDistance(int distanceValue)

      Parameters

      [in] distanceValue : Table 3-1 Reference

      Return value

      Execution results: true (success), false (failure)

    • Acquire display distance

      int getDisplayDistance()

      Parameters

      None

      Return value

      distanceValue : Table 3-1 Reference

Table 3-1 Supported Distance value and Display distance
Distance value(ID) 0
Default
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Display distance[m] 11 10 9 8 7.5 7 6.5 6 5.5 5 4.5 4 3.5 3 2.5 2

* These are average values and will differ depending on the individual.

3.6. Creating images for the see-through function

MOVERIO is a device that uses projection technology. This system provides the user with an image projected onto a half-mirror via a light-guided panel, creating a half-mirror version (whereby not all the pixels are needed) allowing images to be arranged over a real-life scene giving a sense of transparency, and creating a more vivid augmented reality experience.
To create this transparent background effect, so visual elements (text, graphics...) stand out vividly, the background will need to be set to black when drawing on the projection, so you display the target section overlapping with the actual images.

The following steps allow you to create images making use of the see-through function.

  1. Execute full screen display.

    To reduce the feeling of being in a screen, remove everything except for the necessary image (status bar and so on).

  2. Make the background black.

    Make everything black except for the object you want to display ([R,G,B] = [0,0,0]).
    In theory, the black section should keep out external light.

Go to Top