MOVERIO
BT-300 ドキュメント

3. ディスプレイ制御

3.1. ディスプレイ制御概要

BT-300は光学シースルーを特徴とするスマートグラスです。視界を妨げずクリアな映像を導く光学技術により、周囲の状況を確認しながら、必要な情報をディスプレイに表示させることが可能です。また、単眼タイプと比べ、両眼シースルータイプは視野内の正面に映像や画像を投写できるのでより多くの情報を表示可能です。

機能一覧

  • 全画面表示
  • 2D/3D表示切替
  • 表示輝度制御
  • ミュート制御

3.2. 全画面表示機能

全画面表示を行う場合には、下記の方法による実装をしてください。BT-300ではAndroid標準機能を使用することにより、全画面表示が可能となっています。
参考)BT-200では、Android標準機能による全画面表示が行えないため、Epson独自APIを使用していました。

■全画面表示にしたいアプリケーションへの実装例

Activity の onCreate()にて下記処理を実施してください。

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

※上記は一例です。詳細は下記URLを参照してください。
https://developer.android.com/training/system-ui/immersive.html

■全画面表示中の2D/3D切り替え

全画面表示中に2D/3D表示切替を行う場合は、「2D/3Dを示すOSD」が非表示になるようにパラメータを指定してください。OSDを表示すると、全画面表示が解除されます。詳細は、3.3 2D/3D表示切替のインターフェースを参照してください。

■全画面表示中のVideoView使用に関する注意事項

全画面表示時に、VideoViewを非表示にすると、表示が不安定になる場合があります。VideoView#setVisibility()をコールする時に、View.INVISIBLEまたはView.GONEを指定して非表示する場合には、次の方法によって不安定になる現象を避けることができます。

非表示にする対象のVideoViewの前面に、任意のViewを配置して下さい。例えば、下記のような、何も表示しないTextViewをレイアウトファイルに追加することにより、見た目は変わらずに現象を避けることができます。

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

3.3. 2D/3D表示切替

BT-300ではSide by side方式のコンテンツを3D表示させることが可能です。
Side by side方式とは一つの画面に左右の画像を並べて格納する方式です。

HDサイズの画面でSide by side方式を実現する場合、左右それぞれ1280×720を1/2に縮小した640×720ピクセルの画像を並べて1フレームの画像を構成する必要があります。

Side by side方式の画像を左目と右目の各々に分離し、各ディスプレイ出力させるには、以下のインターフェースを利用します。

  • インポートモジュール

    com.epson.moverio.btcontrol.DisplayControl

  • コンストラクタ

    DisplayControl(Context context)

  • インターフェース

    • 2D/3D表示切替

      int setMode(int DisplayMode, boolean toast)

    • パラメータ

      DisplayMode:2D/3Dモードの状態

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

      toast:2D/3Dを示すOSDの表示/非表示の切替え

      表示 : true
      非表示 : false

      ※全画面表示中にコールする場合には、falseを指定してOSDを非表示にしてください。trueを指定してコールした場合、全画面表示が解除されます。

    • 戻り値

      実行結果 0(成功)、-1(失敗)

    • 現在の 2D/3D 表示設定取得

      int getMode()

    • パラメータ

      なし

    • 戻り値

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

3.3.1. ディスプレイ輝度調整

ヘッドセットに内蔵されたディスプレイ表示の輝度を調整すると、表示映像の透け具合が変化します。輝度が低い状態では画像はより透けて見え、輝度を高くすると画像が強く浮いて見えます。

※R1.3.0より前のシステムソフトウェアの場合、Android標準APIである、WindowManager.LayoutParamsのscreenBrightnessフィールドを使用したディスプレイ輝度調整は行えません。R1.3.0より前のシステムソフトウェアをお使いの場合は、最新版へアップデートしてください。

  • インポートファイル

    com.epson.moverio.btcontrol.DisplayControl

  • コンストラクタ

    DisplayControl(Context context)

  • インターフェース

    • ディスプレイ輝度(バックライト)の設定

      int setBacklight(int backlight)

    • パラメータ

      backlight:輝度レベル 0(最小輝度)~20(最大輝度)

    • 戻り値

      実行結果 0(成功)、-1(失敗)

    • ディスプレイ輝度の取得

      int getBacklight()

    • パラメータ

      なし

    • 戻り値

      現在の輝度設定値(0~20)

3.4. ミュート機能

3.4.1. ディスプレイミュート

ディスプレイ表示を一時的に停止したい場合にはミュート機能が利用できます。例えば、装着中に危険を感じた時に映像をミュートにすることによって視界を確保したい場合にお使いください。
ミュート状態への移行、復帰については下記のインターフェースを使用してください。

  • インポートファイル

    com.epson.moverio.btcontrol.DisplayControl

  • コンストラクタ

    DisplayControl(Context context)

  • インターフェース

    • ミュート状態を設定する

      int setMute(boolean mute)

    • パラメータ

      mute:ミュート ON(true)/ OFF(false)

    • 戻り値

      実行結果 0(正常値)、その他(エラー)

    • ミュート状態を取得する

      boolean getMute()

    • パラメータ

      なし

    • 戻り値

      実行結果 true(ミュートON)/ false(ミュートOFF)

3.4.2. ミュートノック機能との比較

類似の機能として、BT-300 のシステム標準機能である、映像と音声を一時的に停止するミュートノックがあります。API を使用した場合のディスプレイミュートとの比較を、下表に示します。

項目 ディスプレイミュート API ミュートノック
使用方法 DisplayControl#setMute()
をコールする
  • 設定アプリの「タップによるミュート」をONにした状態で、ヘッドセットを軽く2回たたく
  • 復帰する場合には、次の操作を行う
    • ヘッドセットを軽く2回たたく
    • 切替キー、音量キー、電源ボタンのいずれかを押す

※ミュート中にオートスリープが働いた場合にはスリープが優先され、スリープ状態となり、スリープ復帰時にミュートは解除される

映像動作 ミュート時 ディスプレイが消灯する
  • ディスプレイが消灯する(左列と同様の処理)
  • システムからAudioManagerに対してKEYCODE_MEDIA_PAUSEが発行され、動画再生が一時停止する
復帰時 ディスプレイが点灯する
  • ディスプレイが点灯する(左列と同様の処理)
  • システムからAudioManagerに対してKEYCODE_MEDIA_PLAYが発行され、動画再生が再開する
音声動作 ミュート時 変化しない システムからAudioManagerに対してKEYCODE_MEDIA_PAUSEが発行され音楽再生が一時停止する
復帰時 - システムからAudioManagerに対してKEYCODE_MEDIA_PLAYが発行され、音楽再生が再開する
備考 現在のミュート状態を知るには、DisplayControl#getMute()をコールする ミュートノックのON、OFFは、アプリケーションには通知されない

3.5. シースルーを活かす画像の作り方

MOVERIO はプロジェクション技術を応用した製品です。ユーザーは、導光板を経由してハーフミラーに投影された映像を見る仕組みのため、ハーフミラーに反射しない、即ち黒で表示された映像部分では透け感が強い見え方になります。
背景が透けて文字が表示されるようなコンテンツを作る際には、文字表示はより目立ちやすい明るい色を、背景部分は黒で描画を行うことで、対象部分だけを実映像に重ねあわせて表示することが可能になります。

以下のような方法により、シースルーを活かした絵作りが行えます。

  1. 全画面表示を行う。

    スクリーン感を低減するために、まず必要な画像以外(ステータスバー等)を消します。

  2. 背景を黒にする。

    表示したいオブジェクト以外を黒データ([R,G,B]=[0,0,0])にします。
    黒い部分は、外光を透過します。

Go to Top