rev |
line source |
nuclear@24
|
1 package com.mutantstargoat.stereotunnel;
|
nuclear@24
|
2
|
nuclear@24
|
3 import android.os.Bundle;
|
nuclear@24
|
4 import android.app.NativeActivity;
|
nuclear@24
|
5 import android.view.*;
|
nuclear@24
|
6 import android.view.WindowManager.LayoutParams;
|
nuclear@25
|
7 import android.view.ViewGroup.MarginLayoutParams;
|
nuclear@25
|
8 import android.widget.*;
|
nuclear@25
|
9 import com.google.android.gms.ads.*;
|
nuclear@25
|
10 import android.util.Log;
|
nuclear@25
|
11 import android.content.res.Configuration;
|
nuclear@24
|
12
|
nuclear@24
|
13 public class MainActivity extends NativeActivity
|
nuclear@24
|
14 {
|
nuclear@25
|
15 public static String tag = "stereotunnel";
|
nuclear@25
|
16 public static String ad_id_test = "ca-app-pub-3940256099942544/6300978111";
|
nuclear@25
|
17 public static String ad_id_prod = "ca-app-pub-3466324067850759/4861471428";
|
nuclear@25
|
18
|
nuclear@25
|
19 public static String dev_id_gnexus = "B6FBA93004067A8DA892B85127D9454C";
|
nuclear@28
|
20 public static String dev_id_nexus7 = "EC3418DBCF3628D89527BCE612BBA299";
|
nuclear@25
|
21
|
nuclear@25
|
22 MainActivity act;
|
nuclear@25
|
23
|
nuclear@32
|
24 AdView ad_view = null;
|
nuclear@25
|
25 PopupWindow ad_win;
|
nuclear@25
|
26 LinearLayout ad_layout, ad_main_layout;
|
nuclear@25
|
27 boolean ad_ready = false;
|
nuclear@33
|
28 boolean ad_visible = false;
|
nuclear@33
|
29 boolean ad_show_pending = false;
|
nuclear@33
|
30 AdRequest ad_request;
|
nuclear@24
|
31
|
nuclear@24
|
32 @Override
|
nuclear@24
|
33 protected void onCreate(Bundle saved_inst)
|
nuclear@24
|
34 {
|
nuclear@24
|
35 super.onCreate(saved_inst);
|
nuclear@24
|
36
|
nuclear@24
|
37 // go fullscreen
|
nuclear@24
|
38 int winflags = LayoutParams.FLAG_FULLSCREEN |
|
nuclear@25
|
39 LayoutParams.FLAG_LAYOUT_NO_LIMITS |
|
nuclear@25
|
40 LayoutParams.FLAG_LAYOUT_IN_SCREEN |
|
nuclear@25
|
41 LayoutParams.FLAG_KEEP_SCREEN_ON;
|
nuclear@25
|
42
|
nuclear@24
|
43 Window win = getWindow();
|
nuclear@24
|
44 win.setFlags(winflags, winflags);
|
nuclear@24
|
45 }
|
nuclear@24
|
46
|
nuclear@24
|
47 @Override
|
nuclear@25
|
48 public void onDestroy()
|
nuclear@25
|
49 {
|
nuclear@25
|
50 destroy_ad_popup();
|
nuclear@25
|
51 super.onDestroy();
|
nuclear@25
|
52 }
|
nuclear@25
|
53
|
nuclear@25
|
54 @Override
|
nuclear@25
|
55 public void onAttachedToWindow()
|
nuclear@25
|
56 {
|
nuclear@25
|
57 super.onAttachedToWindow();
|
nuclear@25
|
58
|
nuclear@25
|
59 create_ad_popup();
|
nuclear@25
|
60 }
|
nuclear@25
|
61
|
nuclear@25
|
62 @Override
|
nuclear@24
|
63 public void onWindowFocusChanged(boolean focus)
|
nuclear@24
|
64 {
|
nuclear@24
|
65 super.onWindowFocusChanged(focus);
|
nuclear@24
|
66 if(focus) {
|
nuclear@24
|
67 set_fullscreen();
|
nuclear@24
|
68 }
|
nuclear@24
|
69 }
|
nuclear@24
|
70
|
nuclear@24
|
71 protected void onResume()
|
nuclear@24
|
72 {
|
nuclear@31
|
73 Log.i(tag, "[JAVA] onResume()");
|
nuclear@24
|
74 super.onResume();
|
nuclear@25
|
75 if(ad_view != null) {
|
nuclear@25
|
76 ad_view.resume();
|
nuclear@25
|
77 }
|
nuclear@24
|
78 set_fullscreen();
|
nuclear@24
|
79 }
|
nuclear@24
|
80
|
nuclear@25
|
81 protected void onPause()
|
nuclear@25
|
82 {
|
nuclear@31
|
83 Log.i(tag, "[JAVA] onPause()");
|
nuclear@25
|
84 super.onPause();
|
nuclear@25
|
85 if(ad_view != null) {
|
nuclear@25
|
86 ad_view.pause();
|
nuclear@25
|
87 }
|
nuclear@25
|
88 }
|
nuclear@25
|
89
|
nuclear@30
|
90 /*
|
nuclear@25
|
91 public void onConfigurationChanged(Configuration config)
|
nuclear@25
|
92 {
|
nuclear@25
|
93 super.onConfigurationChanged(config);
|
nuclear@25
|
94
|
nuclear@25
|
95 destroy_ad_popup();
|
nuclear@25
|
96 create_ad_popup();
|
nuclear@25
|
97 }
|
nuclear@30
|
98 */
|
nuclear@25
|
99
|
nuclear@24
|
100 public void set_fullscreen()
|
nuclear@24
|
101 {
|
nuclear@24
|
102 int uiflags = View.SYSTEM_UI_FLAG_FULLSCREEN |
|
nuclear@24
|
103 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
nuclear@24
|
104 View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
nuclear@24
|
105 View.SYSTEM_UI_FLAG_LOW_PROFILE;
|
nuclear@24
|
106
|
nuclear@24
|
107 if(android.os.Build.VERSION.SDK_INT >= 19) {
|
nuclear@24
|
108 uiflags |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
nuclear@24
|
109 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
nuclear@24
|
110 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
|
nuclear@24
|
111 }
|
nuclear@24
|
112
|
nuclear@24
|
113 View decor = getWindow().getDecorView();
|
nuclear@24
|
114 decor.setSystemUiVisibility(uiflags);
|
nuclear@24
|
115 }
|
nuclear@25
|
116
|
nuclear@25
|
117 // ads ...
|
nuclear@25
|
118 public void create_ad_popup()
|
nuclear@25
|
119 {
|
nuclear@31
|
120 Log.i(tag, "[JAVA] create_ad_popup called");
|
nuclear@25
|
121 if(ad_view != null) return;
|
nuclear@25
|
122
|
nuclear@25
|
123 act = this;
|
nuclear@25
|
124
|
nuclear@33
|
125 /*
|
nuclear@25
|
126 this.runOnUiThread(new Runnable() {
|
nuclear@25
|
127 @Override
|
nuclear@25
|
128 public void run()
|
nuclear@33
|
129 {*/
|
nuclear@31
|
130 Log.i(tag, "[JAVA] Creating Ad popup");
|
nuclear@25
|
131
|
nuclear@25
|
132 ad_win = new PopupWindow(act);
|
nuclear@25
|
133 // set minimum size
|
nuclear@25
|
134 int xsz = 320;//AdSize.SMART_BANNER.getWidthInPixels(act);
|
nuclear@25
|
135 int ysz = 50;//AdSize.SMART_BANNER.getHeightInPixels(act);
|
nuclear@25
|
136 ad_win.setWidth(xsz); // orig:320
|
nuclear@25
|
137 ad_win.setHeight(ysz); // orig:50
|
nuclear@25
|
138 ad_win.setWindowLayoutMode(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
nuclear@25
|
139 ad_win.setClippingEnabled(false);
|
nuclear@25
|
140
|
nuclear@25
|
141 ad_main_layout = new LinearLayout(act);
|
nuclear@25
|
142 MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT,
|
nuclear@25
|
143 LayoutParams.WRAP_CONTENT);
|
nuclear@25
|
144 params.setMargins(0, 0, 0, 0);
|
nuclear@25
|
145 act.setContentView(ad_main_layout, params);
|
nuclear@25
|
146
|
nuclear@25
|
147
|
nuclear@25
|
148 ad_view = new AdView(act);
|
nuclear@25
|
149 ad_view.setAdSize(AdSize.BANNER);
|
nuclear@25
|
150 ad_view.setAdUnitId(ad_id_test);
|
nuclear@25
|
151
|
nuclear@25
|
152 ad_layout = new LinearLayout(act);
|
nuclear@25
|
153 ad_layout.setPadding(-5, -5, -5, -5);
|
nuclear@25
|
154 ad_layout.setOrientation(LinearLayout.VERTICAL);
|
nuclear@25
|
155 ad_layout.addView(ad_view, params);
|
nuclear@25
|
156 ad_win.setContentView(ad_layout);
|
nuclear@25
|
157
|
nuclear@25
|
158 ad_view.setAdListener(new AdListener() {
|
nuclear@25
|
159 @Override
|
nuclear@25
|
160 public void onAdLoaded()
|
nuclear@25
|
161 {
|
nuclear@31
|
162 Log.i(tag, "[JAVA] ad loaded");
|
nuclear@25
|
163 super.onAdLoaded();
|
nuclear@25
|
164 ad_ready = true;
|
nuclear@25
|
165 show_ad();
|
nuclear@25
|
166 }
|
nuclear@25
|
167 @Override
|
nuclear@25
|
168 public void onAdFailedToLoad(int error_code)
|
nuclear@25
|
169 {
|
nuclear@31
|
170 Log.e(tag, "[JAVA] ad failed to load, error code: " + error_code);
|
nuclear@25
|
171 super.onAdFailedToLoad(error_code);
|
nuclear@25
|
172 ad_ready = false;
|
nuclear@25
|
173 request_ad();
|
nuclear@25
|
174 }
|
nuclear@25
|
175 });
|
nuclear@25
|
176
|
nuclear@33
|
177 /*if(!ad_view.isLoading()) {
|
nuclear@32
|
178 request_ad();
|
nuclear@33
|
179 }*/
|
nuclear@33
|
180 AdRequest.Builder reqbuild = new AdRequest.Builder();
|
nuclear@33
|
181 reqbuild.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
nuclear@33
|
182 reqbuild.addTestDevice(dev_id_gnexus);
|
nuclear@33
|
183 reqbuild.addTestDevice(dev_id_nexus7);
|
nuclear@33
|
184 ad_request = reqbuild.build();
|
nuclear@33
|
185
|
nuclear@33
|
186 ad_win.showAtLocation(ad_main_layout, Gravity.TOP, 0, 0);
|
nuclear@33
|
187 ad_win.update();
|
nuclear@33
|
188
|
nuclear@33
|
189 show_ad();
|
nuclear@32
|
190
|
nuclear@31
|
191 Log.i(tag, "[JAVA] Done creating ad popup");
|
nuclear@33
|
192 /*
|
nuclear@25
|
193 }
|
nuclear@33
|
194 });*/
|
nuclear@25
|
195 }
|
nuclear@25
|
196
|
nuclear@25
|
197 public void destroy_ad_popup()
|
nuclear@25
|
198 {
|
nuclear@31
|
199 Log.i(tag, "[JAVA] destroy_ad_popup called");
|
nuclear@25
|
200
|
nuclear@25
|
201 if(ad_view != null) {
|
nuclear@25
|
202 ad_view.destroy();
|
nuclear@25
|
203 ad_view = null;
|
nuclear@25
|
204 }
|
nuclear@25
|
205 if(ad_win != null) {
|
nuclear@25
|
206 ad_win.dismiss();
|
nuclear@25
|
207 ad_win = null;
|
nuclear@25
|
208 }
|
nuclear@25
|
209 }
|
nuclear@25
|
210
|
nuclear@25
|
211 public void request_ad()
|
nuclear@25
|
212 {
|
nuclear@31
|
213 Log.i(tag, "[JAVA] requesting ad");
|
nuclear@31
|
214
|
nuclear@31
|
215 if(ad_view == null) {
|
nuclear@31
|
216 Log.e(tag, "[JAVA] request_ad called without an ad_view");
|
nuclear@31
|
217 return;
|
nuclear@31
|
218 }
|
nuclear@25
|
219
|
nuclear@25
|
220 AdRequest.Builder reqbuild = new AdRequest.Builder();
|
nuclear@25
|
221 reqbuild.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
nuclear@25
|
222 reqbuild.addTestDevice(dev_id_gnexus);
|
nuclear@28
|
223 reqbuild.addTestDevice(dev_id_nexus7);
|
nuclear@25
|
224 ad_view.loadAd(reqbuild.build());
|
nuclear@25
|
225 }
|
nuclear@25
|
226
|
nuclear@25
|
227 private void show_ad()
|
nuclear@25
|
228 {
|
nuclear@33
|
229 Log.i(tag, "[JAVA] show_ad called");
|
nuclear@33
|
230 if(ad_view == null || ad_request == null) {
|
nuclear@33
|
231 ad_show_pending = true;
|
nuclear@33
|
232 return;
|
nuclear@33
|
233 }
|
nuclear@33
|
234 /*if(!ad_visible) {
|
nuclear@33
|
235 ad_view.resume();
|
nuclear@33
|
236 }*/
|
nuclear@33
|
237 if(!ad_ready && !ad_view.isLoading()) {
|
nuclear@33
|
238 ad_view.loadAd(ad_request);
|
nuclear@33
|
239 return;
|
nuclear@33
|
240 }
|
nuclear@33
|
241 ad_view.setVisibility(View.VISIBLE);
|
nuclear@33
|
242 ad_view.resume();
|
nuclear@33
|
243 ad_win.update();
|
nuclear@33
|
244 ad_show_pending = false;
|
nuclear@33
|
245 /*
|
nuclear@25
|
246 if(ad_ready) {
|
nuclear@31
|
247 Log.i(tag, "[JAVA] show_ad called with ad ready");
|
nuclear@25
|
248 ad_win.showAtLocation(ad_main_layout, Gravity.TOP, 0, 0);
|
nuclear@25
|
249 ad_win.update();
|
nuclear@25
|
250 } else {
|
nuclear@33
|
251 if(!ad_view.isLoading()) {
|
nuclear@31
|
252 Log.i(tag, "[JAVA] show_ad called with ad neither ready nor pending");
|
nuclear@25
|
253 request_ad();
|
nuclear@31
|
254 } else {
|
nuclear@31
|
255 Log.i(tag, "[JAVA] show_ad called with ad pending: nop");
|
nuclear@25
|
256 }
|
nuclear@25
|
257 }
|
nuclear@33
|
258 */
|
nuclear@25
|
259 }
|
nuclear@25
|
260
|
nuclear@25
|
261 private void hide_ad()
|
nuclear@25
|
262 {
|
nuclear@31
|
263 Log.i(tag, "[JAVA] hide_ad called");
|
nuclear@33
|
264 ad_view.destroy();
|
nuclear@33
|
265 ad_view.setVisibility(View.GONE);
|
nuclear@33
|
266 ad_view.pause();
|
nuclear@33
|
267 //ad_win.dismiss();
|
nuclear@33
|
268 ad_win.update();
|
nuclear@29
|
269 //destroy_ad_popup();
|
nuclear@25
|
270 ad_ready = false;
|
nuclear@33
|
271 ad_visible = false;
|
nuclear@33
|
272 ad_show_pending = false;
|
nuclear@25
|
273 }
|
nuclear@25
|
274
|
nuclear@25
|
275
|
nuclear@25
|
276 /*
|
nuclear@25
|
277 @Override
|
nuclear@25
|
278 public void onAdOpened()
|
nuclear@25
|
279 {
|
nuclear@25
|
280 // Code to be executed when an ad opens an overlay that
|
nuclear@25
|
281 // covers the screen.
|
nuclear@25
|
282 }
|
nuclear@25
|
283
|
nuclear@25
|
284 @Override
|
nuclear@25
|
285 public void onAdLeftApplication()
|
nuclear@25
|
286 {
|
nuclear@25
|
287 // Code to be executed when the user has left the app.
|
nuclear@25
|
288 }
|
nuclear@25
|
289
|
nuclear@25
|
290 @Override
|
nuclear@25
|
291 public void onAdClosed()
|
nuclear@25
|
292 {
|
nuclear@25
|
293 // Code to be executed when when the user is about to return
|
nuclear@25
|
294 // to the app after tapping on an ad.
|
nuclear@25
|
295 }
|
nuclear@25
|
296 */
|
nuclear@24
|
297 }
|