istereo2

annotate src/android/MainActivity.java @ 33:3784a2d4bed5

more ad fuckery
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 10 Oct 2015 16:38:19 +0300
parents 622f61160016
children
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 }