5 package com.maxst.ar.wearable;
7 import android.app.Activity;
8 import android.util.DisplayMetrics;
9 import android.util.Log;
10 import android.view.SurfaceView;
11 import android.view.View;
12 import android.view.ViewGroup;
13 import android.view.Window;
15 import com.osterhoutgroup.api.ext.ExtendDisplay;
19 private static final String TAG =
ODGR7Controller.class.getSimpleName();
21 ODGR7Controller(Activity activity, String modelName,
boolean supportedDevice) {
22 super(activity, modelName, supportedDevice);
26 public void extendSurface(
boolean toggle) {
27 super.extendSurface(toggle);
28 extendSurfaceInternal(toggle);
32 public void extendWindow(
boolean toggle) {
33 super.extendWindow(toggle);
34 extendWindowInternal(toggle);
38 public void setStereoMode(
boolean toggle) {
39 super.setStereoMode(toggle);
40 setStereoModeInternal(toggle);
43 private void setStereoModeInternal(
final boolean toggle) {
44 activity.runOnUiThread(
new Runnable() {
48 Window window = activity.getWindow();
50 DisplayMetrics metrics =
new DisplayMetrics();
51 ExtendDisplay.getDisplayMetrics(activity, window, metrics);
52 Log.d(TAG,
"Extend Window as : " + toggle);
53 Log.d(TAG,
"Before setting");
54 Log.d(TAG,
"Screen width : " + metrics.widthPixels);
55 Log.d(TAG,
"Screen height : " + metrics.heightPixels);
57 ExtendDisplay.extendWindow(window, toggle);
59 ExtendDisplay.getDisplayMetrics(activity, window, metrics);
60 Log.d(TAG,
"After setting");
61 Log.d(TAG,
"Screen width : " + metrics.widthPixels);
62 Log.d(TAG,
"Screen height : " + metrics.heightPixels);
64 ViewGroup viewGroup = (ViewGroup) window.getDecorView();
65 SurfaceView surfaceView = getSurfaceViewInViewTree(viewGroup);
66 if (surfaceView != null) {
67 Log.d(TAG,
"SurfaceView is not null");
68 ExtendDisplay.extendSurface(surfaceView, toggle);
69 ViewGroup.LayoutParams layoutParams = surfaceView.getLayoutParams();
71 layoutParams.width = metrics.widthPixels;
72 surfaceView.setLayoutParams(layoutParams);
74 layoutParams.width = metrics.widthPixels;
75 surfaceView.setLayoutParams(layoutParams);
83 private void extendSurfaceInternal(
final boolean toggle) {
84 activity.runOnUiThread(
new Runnable() {
87 ViewGroup viewGroup = (ViewGroup) activity.getWindow().getDecorView();
88 SurfaceView surfaceView = getSurfaceViewInViewTree(viewGroup);
90 if (surfaceView != null) {
91 ExtendDisplay.extendSurface(surfaceView, toggle);
92 Log.d(TAG,
"Extend SurfaceView as : " + toggle);
94 DisplayMetrics metrics =
new DisplayMetrics();
95 ExtendDisplay.getDisplayMetrics(activity, surfaceView, metrics);
97 android.view.ViewGroup.LayoutParams lp = surfaceView.getLayoutParams();
98 lp.width = metrics.widthPixels;
99 lp.height = metrics.heightPixels;
100 surfaceView.setLayoutParams(lp);
101 surfaceView.requestLayout();
102 Log.d(TAG,
"SurfaceView width : " + metrics.widthPixels);
103 Log.d(TAG,
"SurfaceView height : " + metrics.heightPixels);
110 private void extendWindowInternal(
final boolean toggle) {
111 activity.runOnUiThread(
new Runnable() {
115 Window window = activity.getWindow();
116 if (window != null) {
117 ExtendDisplay.extendWindow(window, toggle);
118 DisplayMetrics metrics =
new DisplayMetrics();
119 ExtendDisplay.getDisplayMetrics(activity, window, metrics);
120 Log.d(TAG,
"Extend Window as : " + toggle);
121 Log.d(TAG,
"window width : " + metrics.widthPixels);
122 Log.d(TAG,
"window height : " + metrics.heightPixels);
128 private SurfaceView getSurfaceViewInViewTree(ViewGroup viewGroup) {
130 int numOfChild = viewGroup.getChildCount();
131 for (
int i = 0; i < numOfChild; i++) {
132 View view = viewGroup.getChildAt(i);
133 if (view instanceof SurfaceView) {
134 return (SurfaceView) view;
135 }
else if (view instanceof ViewGroup) {
136 SurfaceView surfaceView = getSurfaceViewInViewTree((ViewGroup) view);
137 if (surfaceView != null) {