MaxstARSDK  3.5.0
All Classes Functions Variables
ODGR7Controller.java
1 /*
2  * Copyright 2017 Maxst, Inc. All Rights Reserved.
3  */
4 
5 package com.maxst.ar.wearable;
6 
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;
14 
15 import com.osterhoutgroup.api.ext.ExtendDisplay;
16 
18 
19  private static final String TAG = ODGR7Controller.class.getSimpleName();
20 
21  ODGR7Controller(Activity activity, String modelName, boolean supportedDevice) {
22  super(activity, modelName, supportedDevice);
23  }
24 
25  @Override
26  public void extendSurface(boolean toggle) {
27  super.extendSurface(toggle);
28  extendSurfaceInternal(toggle);
29  }
30 
31  @Override
32  public void extendWindow(boolean toggle) {
33  super.extendWindow(toggle);
34  extendWindowInternal(toggle);
35  }
36 
37  @Override
38  public void setStereoMode(boolean toggle) {
39  super.setStereoMode(toggle);
40  setStereoModeInternal(toggle);
41  }
42 
43  private void setStereoModeInternal(final boolean toggle) {
44  activity.runOnUiThread(new Runnable() {
45 
46  @Override
47  public void run() {
48  Window window = activity.getWindow();
49  if (window != null) {
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);
56 
57  ExtendDisplay.extendWindow(window, toggle);
58 
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);
63 
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();
70  if (toggle) {
71  layoutParams.width = metrics.widthPixels;
72  surfaceView.setLayoutParams(layoutParams);
73  } else {
74  layoutParams.width = metrics.widthPixels;
75  surfaceView.setLayoutParams(layoutParams);
76  }
77  }
78  }
79  }
80  });
81  }
82 
83  private void extendSurfaceInternal(final boolean toggle) {
84  activity.runOnUiThread(new Runnable() {
85  @Override
86  public void run() {
87  ViewGroup viewGroup = (ViewGroup) activity.getWindow().getDecorView();
88  SurfaceView surfaceView = getSurfaceViewInViewTree(viewGroup);
89 
90  if (surfaceView != null) {
91  ExtendDisplay.extendSurface(surfaceView, toggle);
92  Log.d(TAG, "Extend SurfaceView as : " + toggle);
93  if (toggle) {
94  DisplayMetrics metrics = new DisplayMetrics();
95  ExtendDisplay.getDisplayMetrics(activity, surfaceView, metrics);
96  //surfaceView.getHolder().setFixedSize(metrics.widthPixels, metrics.heightPixels);
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);
104  }
105  }
106  }
107  });
108  }
109 
110  private void extendWindowInternal(final boolean toggle) {
111  activity.runOnUiThread(new Runnable() {
112 
113  @Override
114  public void run() {
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);
123  }
124  }
125  });
126  }
127 
128  private SurfaceView getSurfaceViewInViewTree(ViewGroup viewGroup) {
129 
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) {
138  return surfaceView;
139  }
140  }
141  }
142 
143  return null;
144  }
145 }