Java tutorial
/** * Copyright 2014-2016 CyberVision, Inc. * <p/> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kaaproject.kaa.demo.photoframe; import android.Manifest; import android.annotation.TargetApi; import android.app.ProgressDialog; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Toast; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.kaaproject.kaa.demo.photoframe.communication.Events; import org.kaaproject.kaa.demo.photoframe.fragment.DevicesFragment; import org.kaaproject.kaa.demo.photoframe.fragment.LoginFragment; import org.kaaproject.kaa.demo.photoframe.kaa.KaaManager; /** * The implementation of the {@link AppCompatActivity} class. * Manages fragments transition depending on the current application state. */ public class MainActivity extends AppCompatActivity { private static final int REQUEST_READ_EXTERNAL_STORAGE = 22; private KaaManager mKaaManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_photo_frame); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.READ_EXTERNAL_STORAGE }, REQUEST_READ_EXTERNAL_STORAGE); } else { startKaa(); } if (mKaaManager == null || !mKaaManager.isUserAttached()) { new LoginFragment().move(this); } else { new DevicesFragment().move(this); } } public KaaManager getKaaManager() { return mKaaManager; } @Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override protected void onStop() { super.onStop(); EventBus.getDefault().unregister(this); } @Override protected void onDestroy() { super.onDestroy(); mKaaManager.stop(); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public void setLightsOutMode(boolean enabled) { final Window window = getWindow(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { if (enabled) { window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } } else { window.getDecorView().setSystemUiVisibility(enabled ? View.SYSTEM_UI_FLAG_FULLSCREEN : 0); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQUEST_READ_EXTERNAL_STORAGE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { startKaa(); } else { Toast.makeText(this, R.string.activity_main_give_permission, Toast.LENGTH_SHORT).show(); } break; } } @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void onKaaStarted(Events.KaaStartedEvent event) { Toast.makeText(this, R.string.activity_main_kaa_started, Toast.LENGTH_SHORT).show(); } private void startKaa() { mKaaManager = new KaaManager(MainActivity.this); mKaaManager.start(); } }