Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.SydneyMinyanimAndroid;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager;
- import android.graphics.Color;
- import android.graphics.Typeface;
- import android.location.Location;
- import android.support.v4.app.ActivityCompat;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Gravity;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.Button;
- import android.widget.LinearLayout;
- import android.widget.ScrollView;
- import android.widget.TextView;
- import com.google.android.gms.location.FusedLocationProviderClient;
- import com.google.android.gms.location.LocationServices;
- import com.google.android.gms.tasks.OnSuccessListener;
- import java.util.ArrayList;
- import java.util.Arrays;
- import static android.Manifest.permission.ACCESS_FINE_LOCATION;
- public class MainActivity extends AppCompatActivity {
- private final int amountOfShules = 17;
- private final double[] distanceArray = new double[amountOfShules];
- private final double[] unOrderedDistanceArray = new double[amountOfShules];
- private final String[] orderedDistanceArray = new String[amountOfShules];
- private final double[] shuleLocations = new double[amountOfShules * 2];
- private final String[] shuleNames = new String[amountOfShules];
- private final Button buttons[] = new Button[amountOfShules];
- private static double userLat = 0;
- private static double userLong = 0;
- private Button distanceButton;
- private Button favouriteButton;
- private LinearLayout favouriteLayout;
- private ScrollView scrollView1;
- LinearLayout scrollLayout;
- public static ArrayList<String> favouriteList;
- static SharedPreferences prefs;
- LinearLayout noShuleLayout;
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- SharedData sharedData = new SharedData();
- prefs = getSharedPreferences("list", Context.MODE_PRIVATE);
- final String PREFS_NAME = "MyPrefsFile";
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- if (settings.getBoolean("my_first_time", true)) {
- //the app is being launched for first time, do something
- Log.d("savingTest", "First time");
- favouriteList = new ArrayList<>();
- sharedData.saveList(favouriteList, "list");
- //load first time start
- Intent myIntent = new Intent(getBaseContext(), IntroPictures.class);
- startActivityForResult(myIntent, 1);
- Log.d("gpstest", "Started Intent");
- // Record and store app has been opened for the first time
- settings.edit().putBoolean("my_first_time", false).apply();
- }
- setContentView(R.layout.activity_main);
- getWindow().getDecorView().setBackgroundColor(Color.WHITE);
- Log.d("gpstest", "Set activity main");
- setButtons();
- setButtonClicks();
- setFonts();
- getDistances();
- sharedData.loadList("list");
- final LinearLayout noShuleLayout = findViewById(R.id.noShuleLayout);
- Button noFavouriteButton = (Button) getLayoutInflater().inflate(R.layout.borderless_button_style, null);
- noFavouriteButton.setBackgroundResource(R.drawable.nofavouritedshules);
- noShuleLayout.addView(noFavouriteButton);
- LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) noShuleLayout.getLayoutParams();
- params.width = 800;
- params.height = 800;
- params.gravity = Gravity.CENTER_HORIZONTAL;
- params.topMargin = 180;
- noFavouriteButton.setLayoutParams(params);
- scrollLayout = findViewById(R.id.scollViewLinearLayout);
- scrollView1 = findViewById(R.id.scrollView1);
- favouriteLayout = findViewById(R.id.favouriteLayout);
- distanceButton.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- distanceButton.setBackgroundResource(R.color.pressed_pressed);
- break;
- case MotionEvent.ACTION_MOVE:
- distanceButton.setBackgroundResource(R.color.pressed);
- break;
- case MotionEvent.ACTION_UP:
- distanceButton.setBackgroundResource(R.color.pressed);
- favouriteButton.setBackgroundResource(R.color.unpressed);
- ScrollView scrollView1 = findViewById(R.id.scrollView1);
- scrollView1.setVisibility(View.VISIBLE);
- LinearLayout linearLayout = findViewById(R.id.noShuleLayout);
- linearLayout.setVisibility(View.GONE);
- setButtons();
- setButtonClicks();
- getDistances();
- break;
- }
- return true;
- }
- });
- favouriteButton.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- favouriteButton.setBackgroundResource(R.color.pressed_pressed);
- break;
- case MotionEvent.ACTION_MOVE:
- favouriteButton.setBackgroundResource(R.color.pressed);
- break;
- case MotionEvent.ACTION_UP:
- distanceButton.setBackgroundResource(R.color.unpressed);
- favouriteButton.setBackgroundResource(R.color.pressed);
- scrollView1.setVisibility(View.GONE);
- if (favouriteList == null || favouriteList.size() == 0) {
- noShuleLayout.setVisibility(View.VISIBLE);
- } else {
- noShuleLayout.setVisibility(View.GONE);
- favouriteLayout.removeAllViews();
- favouriteLayout.setVisibility(View.VISIBLE);
- getFavourites();
- }
- break;
- }
- return true;
- }
- });
- }
- private void setButtons() {
- buttons[0] = findViewById(R.id.Button1);
- buttons[1] = findViewById(R.id.Button2);
- buttons[2] = findViewById(R.id.Button3);
- buttons[3] = findViewById(R.id.Button4);
- buttons[4] = findViewById(R.id.Button5);
- buttons[5] = findViewById(R.id.Button6);
- buttons[6] = findViewById(R.id.Button7);
- buttons[7] = findViewById(R.id.Button8);
- buttons[8] = findViewById(R.id.Button9);
- buttons[9] = findViewById(R.id.Button10);
- buttons[10] = findViewById(R.id.Button11);
- buttons[11] = findViewById(R.id.Button12);
- buttons[12] = findViewById(R.id.Button13);
- buttons[13] = findViewById(R.id.Button14);
- buttons[14] = findViewById(R.id.Button15);
- buttons[15] = findViewById(R.id.Button16);
- buttons[16] = findViewById(R.id.Button17);
- distanceButton = findViewById(R.id.DistanceButton);
- favouriteButton = findViewById(R.id.FavouriteButton);
- distanceButton.setBackgroundResource(R.color.pressed);
- favouriteButton.setBackgroundResource(R.color.unpressed);
- }
- private void setButtonClicks() {
- final Intent myIntent = new Intent(getBaseContext(), ShuleInfo.class);
- buttons[0].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[0]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[0]);
- /*ActivityOptions options = ActivityOptions
- .makeSceneTransitionAnimation(this, androidRobotView, "robot");
- // start the new activity
- startActivity(myIntent, options.toBundle());*/
- }
- });
- buttons[1].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[1]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[1]);
- }
- });
- buttons[2].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[2]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[2]);
- }
- });
- buttons[3].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[3]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[3]);
- }
- });
- buttons[4].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[4]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[4]);
- }
- });
- buttons[5].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[5]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[5]);
- }
- });
- buttons[6].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[6]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[6]);
- }
- });
- buttons[7].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[7]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[7]);
- }
- });
- buttons[8].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[8]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[8]);
- }
- });
- buttons[9].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[9]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[9]);
- }
- });
- buttons[10].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[10]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[10]);
- }
- });
- buttons[11].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[11]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[11]);
- }
- });
- buttons[12].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[12]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[12]);
- }
- });
- buttons[13].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[13]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[13]);
- }
- });
- buttons[14].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[14]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[14]);
- }
- });
- buttons[15].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[15]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[15]);
- }
- });
- buttons[16].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", orderedDistanceArray[16]);
- startActivity(myIntent);
- Log.d("gpstest", "Send shuleName: " + orderedDistanceArray[16]);
- }
- });
- }
- private void getDistances() {
- shuleNames[0] = "Central";
- shuleLocations[0] = -33.8904745; //Central Latitude
- shuleLocations[1] = 151.2545533; //Central Longitude
- shuleNames[1] = "Kadima";
- shuleLocations[2] = -33.8681211; //Kadima Latitude
- shuleLocations[3] = 151.2748677; //Kadima Longitude
- shuleNames[2] = "Bina";
- shuleLocations[4] = -33.883901; //Bina Latitude
- shuleLocations[5] = 151.268890; //Bina Longitude
- shuleNames[3] = "Bnei";
- shuleLocations[6] = -33.8839295; //Bnei Latitude
- shuleLocations[7] = 151.2668573; //Bnei Longitude
- shuleNames[4] = "Mizrachi";
- shuleLocations[8] = -33.8839295; //Mizrachi Latitude
- shuleLocations[9] = 151.2668574; //Mizrachi Longitude
- shuleNames[5] = "Masada";
- shuleLocations[10] = -33.7296121; //Masada Latitude
- shuleLocations[11] = 151.1662828; //Masada Longitude
- shuleNames[6] = "Moriah";
- shuleLocations[12] = -33.899280; //Moriah Latitude
- shuleLocations[13] = 151.246600; //Moriah Longitude
- shuleNames[7] = "The Great";
- shuleLocations[14] = -33.872570; //The Great Latitude
- shuleLocations[15] = 151.2094600; //The Great Longitude
- shuleNames[8] = "Yeshiva";
- shuleLocations[16] = -33.891830; //Yeshiva Latitude
- shuleLocations[17] = 151.259390; //Yeshiva Longitude
- shuleNames[9] = "Dover";
- shuleLocations[18] = -33.872700; //Dover Heights Latitude
- shuleLocations[19] = 151.281870; //Dover Heights Longitude
- shuleNames[10] = "Nefesh";
- shuleLocations[20] = -33.8947576; //Nefesh Latitude
- shuleLocations[21] = 151.2707676; //Nefesh Longitude
- shuleNames[11] = "JLC";
- shuleLocations[22] = -33.8851085; //JLC Latitude
- shuleLocations[23] = 151.2741983; //JLC Longitude
- shuleNames[12] = "Sephardi";
- shuleLocations[24] = -33.888820; //Sephardi Latitude
- shuleLocations[25] = 151.254020; //Sephardi Longitude
- shuleNames[13] = "Tzemach Tzedek";
- shuleLocations[26] = -33.889931; //Tzemach Latitude
- shuleLocations[27] = 151.261765; //Tzemach Longitude
- shuleNames[14] = "Coogee";
- shuleLocations[28] = -33.921815; //Coogee Latitude
- shuleLocations[29] = 151.2523163; //Coogee Longitude
- shuleNames[15] = "Maroubra";
- shuleLocations[30] = -33.9357435; //Maroubra Latitude
- shuleLocations[31] = 151.2351443; //Maroubra Longitude
- shuleNames[16] = "Free";
- shuleLocations[32] = -33.8903909; //Free Latitude
- shuleLocations[33] = 151.2599281; //Free Longitude
- FusedLocationProviderClient fuseClient = LocationServices.getFusedLocationProviderClient(this);
- if (ActivityCompat.checkSelfPermission(MainActivity.this, ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- return;
- }
- fuseClient.getLastLocation().addOnSuccessListener(MainActivity.this, new OnSuccessListener<Location>() {
- @Override
- public void onSuccess(Location location) {
- if (!(location == null)) {
- userLong = location.getLongitude();
- Log.d("gpstest","Long: " + userLong);
- userLat = location.getLatitude();
- Log.d("gpstest","Lat: " + userLat);
- for (int i = 0; i < amountOfShules; i++) {
- distanceArray[i] = distanceInKmBetweenEarthCoordinates(userLat, userLong, shuleLocations[i * 2], shuleLocations[(i * 2) + 1]);
- }
- for (int i = 0; i < amountOfShules; i++) {
- unOrderedDistanceArray[i] = distanceInKmBetweenEarthCoordinates(userLat, userLong, shuleLocations[i * 2], shuleLocations[(i * 2) + 1]);
- }
- Arrays.sort(distanceArray);
- for (int i = 0; i < amountOfShules; i++) {
- Log.d("gpstest", "Distance Array: " + String.valueOf(distanceArray[i]));
- for (int j = 0; j < distanceArray.length; j++) {
- Log.d("gpstest", "Unordered Distance Array: " + String.valueOf(unOrderedDistanceArray[j]));
- if (distanceArray[i] == unOrderedDistanceArray[j]) {
- orderedDistanceArray[i] = shuleNames[j];
- Log.d("gpstest", "Shule Name: " + String.valueOf(shuleNames[j]));
- }
- }
- }
- for (int i = 0; i < amountOfShules; i++) {
- switch (orderedDistanceArray[i]) {
- case "Central":
- buttons[i].setBackgroundResource(R.drawable.central);
- break;
- case "Kadima":
- buttons[i].setBackgroundResource(R.drawable.kadima);
- break;
- case "Bina":
- buttons[i].setBackgroundResource(R.drawable.bina);
- break;
- case "Bnei":
- buttons[i].setBackgroundResource(R.drawable.bnei);
- break;
- case "Mizrachi":
- buttons[i].setBackgroundResource(R.drawable.mizrachi);
- break;
- case "Masada":
- buttons[i].setBackgroundResource(R.drawable.masada);
- break;
- case "Moriah":
- buttons[i].setBackgroundResource(R.drawable.moriah);
- break;
- case "The Great":
- buttons[i].setBackgroundResource(R.drawable.the_great);
- break;
- case "Yeshiva":
- buttons[i].setBackgroundResource(R.drawable.yeshiva);
- break;
- case "Dover":
- buttons[i].setBackgroundResource(R.drawable.dover_heights);
- break;
- case "Nefesh":
- buttons[i].setBackgroundResource(R.drawable.nefesh);
- break;
- case "JLC":
- buttons[i].setBackgroundResource(R.drawable.jlc);
- break;
- case "Sephardi":
- buttons[i].setBackgroundResource(R.drawable.sephardi);
- break;
- case "Tzemach Tzedek":
- buttons[i].setBackgroundResource(R.drawable.tzemach_tzedek);
- break;
- case "Coogee":
- buttons[i].setBackgroundResource(R.drawable.coogee);
- break;
- case "Maroubra":
- buttons[i].setBackgroundResource(R.drawable.maroubra);
- break;
- case "Free":
- buttons[i].setBackgroundResource(R.drawable.chabad);
- break;
- }
- }
- }
- }
- });
- }
- private double degreesToRadians(double degrees) {
- return degrees * Math.PI / 180;
- }
- private double distanceInKmBetweenEarthCoordinates(double lat1, double lon1, double lat2, double lon2) {
- int earthRadiusKm = 6371;
- double dLat = degreesToRadians(lat2 - lat1);
- double dLon = degreesToRadians(lon2 - lon1);
- lat1 = degreesToRadians(lat1);
- lat2 = degreesToRadians(lat2);
- double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
- Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
- double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- return earthRadiusKm * c;
- }
- private void setFonts() {
- Typeface typeface = Typeface.createFromAsset(getAssets(), "futura.otf");
- TextView title = findViewById(R.id.Title);
- distanceButton.setTypeface(typeface);
- favouriteButton.setTypeface(typeface);
- title.setTypeface(typeface);
- }
- private void getFavourites() {
- for (int i = 0; i < favouriteList.size(); i++) {
- @SuppressLint("InflateParams") Button favouriteButton = (Button) getLayoutInflater().inflate(R.layout.favourite_button_template, null);
- final Intent myIntent = new Intent(getBaseContext(), ShuleInfo.class);
- final int I = i;
- //detects name of shule and sets according image
- switch (favouriteList.get(i)) {
- case "Central":
- favouriteButton.setBackgroundResource(R.drawable.central);
- break;
- case "Kadima":
- favouriteButton.setBackgroundResource(R.drawable.kadima);
- break;
- case "Bina":
- favouriteButton.setBackgroundResource(R.drawable.bina);
- break;
- case "Bnei":
- favouriteButton.setBackgroundResource(R.drawable.bnei);
- break;
- case "Mizrachi":
- favouriteButton.setBackgroundResource(R.drawable.mizrachi);
- break;
- case "Masada":
- favouriteButton.setBackgroundResource(R.drawable.masada);
- break;
- case "Moriah":
- favouriteButton.setBackgroundResource(R.drawable.moriah);
- break;
- case "The Great":
- favouriteButton.setBackgroundResource(R.drawable.the_great);
- break;
- case "Yeshiva":
- favouriteButton.setBackgroundResource(R.drawable.yeshiva);
- break;
- case "Dover":
- favouriteButton.setBackgroundResource(R.drawable.dover_heights);
- break;
- case "Nefesh":
- favouriteButton.setBackgroundResource(R.drawable.nefesh);
- break;
- case "JLC":
- favouriteButton.setBackgroundResource(R.drawable.jlc);
- break;
- case "Sephardi":
- favouriteButton.setBackgroundResource(R.drawable.sephardi);
- break;
- case "Tzemach Tzedek":
- favouriteButton.setBackgroundResource(R.drawable.tzemach_tzedek);
- break;
- case "Coogee":
- favouriteButton.setBackgroundResource(R.drawable.coogee);
- break;
- case "Maroubra":
- favouriteButton.setBackgroundResource(R.drawable.maroubra);
- break;
- case "Free":
- favouriteButton.setBackgroundResource(R.drawable.chabad);
- break;
- }
- favouriteLayout.addView(favouriteButton);
- LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(788, (788 / 3) * 2);
- layoutParams.setMargins(0, 27, 0, 0);
- favouriteButton.setLayoutParams(layoutParams);
- favouriteButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- myIntent.putExtra("shuleName", String.valueOf(favouriteList.get(I)));
- startActivity(myIntent);
- }
- });
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == 1) {
- if(resultCode == Activity.RESULT_OK){
- getDistances();
- }
- if (resultCode == Activity.RESULT_CANCELED) {
- getDistances();
- }
- }
- }//onActivityResult
- }
Add Comment
Please, Sign In to add comment