package com.distantfuture.videos.misc; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.StrictMode; import android.util.Log; import android.view.View; import com.distantfuture.videos.BuildConfig; import java.util.Date; public class DUtils { public static void log(String message) { if (isDebugBuild()) Log.d("####", (message == null ? "null" : message)); } public static boolean isDebuggable(Context context) { PackageManager pm = context.getPackageManager(); try { ApplicationInfo info = pm.getApplicationInfo(context.getPackageName(), 0); return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; } catch (PackageManager.NameNotFoundException e) { } return true; } public static void sleep(int milliseconds) { try { Thread.sleep(milliseconds); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); } } public static boolean isDebugBuild() { // this was crashing, disabled for now return false; // BuildConfig.DEBUG; } public static void activateStrictMode() { if (isDebugBuild()) { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() // .detectAll() // for all detectable problems .detectDiskReads() // .detectDiskWrites() .detectNetwork().penaltyLog() // .penaltyDialog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .detectActivityLeaks().detectLeakedRegistrationObjects() // .penaltyDeath() .build()); } } public static String currentMethod() { return Thread.currentThread().getStackTrace()[3].getMethodName() + "()"; } public static String systemUIVisibilityString(View theView) { int crap = theView.getWindowSystemUiVisibility(); int duhs[] = {View.SYSTEM_UI_FLAG_LOW_PROFILE, View.SYSTEM_UI_FLAG_HIDE_NAVIGATION, View.SYSTEM_UI_FLAG_FULLSCREEN, View.SYSTEM_UI_FLAG_LAYOUT_STABLE, View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY}; String result = "OK: 0"; for (int duh : duhs) { if ((crap & duh) == duh) { switch (duh) { case View.SYSTEM_UI_FLAG_LOW_PROFILE: result += " | SYSTEM_UI_FLAG_LOW_PROFILE"; break; case View.SYSTEM_UI_FLAG_HIDE_NAVIGATION: result += " | SYSTEM_UI_FLAG_HIDE_NAVIGATION"; break; case View.SYSTEM_UI_FLAG_FULLSCREEN: result += " | SYSTEM_UI_FLAG_FULLSCREEN"; break; case View.SYSTEM_UI_FLAG_LAYOUT_STABLE: result += " | SYSTEM_UI_FLAG_LAYOUT_STABLE"; break; case View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: result += " | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION"; break; case View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: result += " | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN"; break; case View.SYSTEM_UI_FLAG_IMMERSIVE: result += " | SYSTEM_UI_FLAG_IMMERSIVE"; break; case View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY: result += " | SYSTEM_UI_FLAG_IMMERSIVE_STICKY"; break; } } } return result; } public static void timeLog(String message, Date startTime) { Date now = new Date(); DUtils.log("message: " + (now.getTime() - startTime.getTime()) / 1000); } }