Java tutorial
/* * Copyright 2016 Google Inc. All Rights Reserved. * * 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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 com.minerva; import android.app.Dialog; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { /*** Logging tag ***/ protected String LOG_TAG; public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 1; /*** General activity attributes ***/ public final String PREFS_NAME1 = "MyPrefsFile1"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); checkAndRequestPermissions(); LOG_TAG = MainActivity.this.getClass().getSimpleName(); Log.i(LOG_TAG, "Creating application Main Activity..."); // *** Setting up the Toolbar *** Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // *** Handling navigation buttons and clicks *** BottomNavigationView bottomNavigationVew = (BottomNavigationView) findViewById(R.id.navigation); bottomNavigationVew .setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.action_camera: Log.i(LOG_TAG, "Accessing Camera Activity..."); Intent cameraIntent = new Intent(MainActivity.this, CameraActivity.class); startActivity(cameraIntent); break; case R.id.action_gallery: Log.i(LOG_TAG, "Accessing Gallery Activity..."); Intent galleryIntent = new Intent(MainActivity.this, GalleryActivity.class); startActivity(galleryIntent); break; case R.id.action_home: break; } return false; } }); // *** Handling first time use *** SharedPreferences settings = getSharedPreferences(PREFS_NAME1, 0); //if (settings.getBoolean("my_first_time1", false)) { //the app is being launched for first time, do something // *** First time task *** final Dialog alertDialog = new Dialog(this); alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); alertDialog.setContentView(R.layout.navigation); alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); alertDialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); alertDialog.show(); Button gotIt = (Button) alertDialog.findViewById(R.id.gotIt); gotIt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { alertDialog.dismiss(); } }); // record the fact that the app has been started at least once // settings.edit().putBoolean("my_first_time", false).commit(); } private boolean checkAndRequestPermissions() { int camera = ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA); int storage = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE); int loc = ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION); int loc2 = ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION); List<String> listPermissionsNeeded = new ArrayList<>(); if (camera != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(android.Manifest.permission.CAMERA); } if (storage != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (loc2 != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(android.Manifest.permission.ACCESS_FINE_LOCATION); } if (loc != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(android.Manifest.permission.ACCESS_COARSE_LOCATION); } if (!listPermissionsNeeded.isEmpty()) { ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS); return false; } return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { // *** Inflate the menu; this adds items to the action bar if it is present. *** getMenuInflater().inflate(R.menu.toolbar_item, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { /*** Handle action bar item clicks here. The action bar will automatically handle clicks on the Home/Up button, so long as you specify a parent activity in AndroidManifest.xml. ***/ int id = item.getItemId(); if (id == R.id.action_settings) { return true; } else if (id == R.id.settings) { // *** Launch Settings Activity *** Intent intent = new Intent(MainActivity.this, SettingsActivity.class); startActivity(intent); return true; } else if (id == R.id.aboutUs) { // *** Display AboutUs Section *** aboutUs(); return true; } return super.onOptionsItemSelected(item); } private void aboutUs() { AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = LayoutInflater.from(this); View viewRoot = inflater.inflate(R.layout.about_us, null); builder.setTitle("About Us"); builder.setView(viewRoot); AlertDialog dialog = builder.create(); dialog.show(); dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); } }