Java tutorial
/* * Copyright (C) 2014 AChep@xda <ynkr.wang@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package com.bullmobi.message.ui.activities; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.View; import com.bullmobi.message.Config; import com.bullmobi.message.Presenter; import com.bullmobi.message.R; import com.bullmobi.message.Timeout; import com.bullmobi.message.ui.fragments.PocketFragment; import com.bullmobi.base.Device; /** * Created by Artem on 25.01.14. */ public class EasyNotificationActivity extends KeyguardActivity implements Timeout.OnTimeoutEventListener, PocketFragment.OnSleepRequestListener { private static final String TAG = "EasyNotificationActivity"; private final Config mConfig = Config.getInstance(); private final Presenter mPresenter = Presenter.getInstance(); private PocketFragment mPocketFragment; @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); populateFlags(hasFocus); } @SuppressLint("NewApi") private void populateFlags(boolean windowHasFocus) { final View decorView = getWindow().getDecorView(); if (windowHasFocus) { int visibilityUi = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LOW_PROFILE; if (mConfig.isFullScreen()) { // Hide status bar if fullscreen mode is enabled. visibilityUi = visibilityUi | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN; if (Device.hasKitKatApi()) { // Hide navigation bar and flag sticky. visibilityUi = visibilityUi | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; } } decorView.setSystemUiVisibility(visibilityUi); } } @Override protected void onCreate(Bundle savedInstanceState) { if (mConfig.isWallpaperShown()) setTheme(R.style.MaterialTheme_EasyNotification_Wallpaper); super.onCreate(savedInstanceState); mPresenter.onCreate(this); setContentView(R.layout.easynotification); // Initialize non-UI fragments. if (savedInstanceState == null) { initInternalFragments(); } else { // Find fragments. FragmentManager fm = getSupportFragmentManager(); mPocketFragment = (PocketFragment) fm.findFragmentByTag(PocketFragment.TAG); // TODO: Maybe remove PocketFragment if active mode is disabled? } // Setup fragments. if (mPocketFragment != null) { mPocketFragment.setListener(this); } // mPulsingThread = new PulsingThread(getContentResolver()); // mPulsingThread.start(); } @Override public void onStart() { super.onStart(); mPresenter.onStart(); mConfig.getTriggers().incrementLaunchCount(this, null); } @Override protected void onResume() { super.onResume(); mPresenter.onResume(); hideHeadsUpApp(true); populateFlags(true); } @Override protected void onPause() { hideHeadsUpApp(false); populateFlags(false); mPresenter.onPause(); super.onPause(); } @Override public void onStop() { mPresenter.onStop(); super.onStop(); } @Override protected void onDestroy() { mPresenter.onDestroy(); super.onDestroy(); } /** * Asks HeadsUp (https://play.google.com/store/apps/details?id=com.bullmobi.headsup) to * pause or continue showing its floating notifications. * * @param hideHeadsUp {@code true} to disallow showing floating notifications, * {@code false} to allow. */ private void hideHeadsUpApp(boolean hideHeadsUp) { Intent intent = new Intent(hideHeadsUp ? "com.bullmobi.headsup.ACTION_DISALLOW_HEADSUP" : "com.bullmobi.headsup.ACTION_ALLOW_HEADSUP"); sendBroadcast(intent); } /** * Initializes non-UI fragments such as {@link com.bullmobi.message.ui.fragments.PocketFragment}. */ private void initInternalFragments() { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); // Turns screen off inside of your pocket. if (mConfig.isActiveModeEnabled()) { mPocketFragment = PocketFragment.newInstance(); ft.add(mPocketFragment, PocketFragment.TAG); } ft.commit(); } /** * {@inheritDoc} */ @Override public boolean onSleepRequest() { // Probably it's not the best solution, but not worst too. // Check if user does not interact with app before locking. if (!getTimeout().isPaused()) { return lock(); } return false; } public Config getConfig() { return mConfig; } }