

| package sudo.nasaspaceapps.cryosphere; | |
| import android.Manifest; | |
| import android.content.Intent; | |
| import android.content.pm.PackageManager; | |
| import android.graphics.Bitmap; | |
| import android.net.Uri; | |
| import android.support.annotation.NonNull; | |
| import android.support.design.widget.NavigationView; | |
| import android.support.design.widget.Snackbar; | |
| import android.support.v4.app.ActivityCompat; | |
| import android.support.v4.view.GravityCompat; | |
| import android.support.v4.widget.DrawerLayout; | |
| import android.support.v7.app.ActionBar; | |
| import android.support.v7.app.AppCompatActivity; | |
| import android.os.Bundle; | |
| import android.support.v7.widget.Toolbar; | |
| import android.text.Html; | |
| import android.text.Spanned; | |
| import android.util.Log; | |
| import android.view.Menu; | |
| import android.view.MenuItem; | |
| import android.view.View; | |
| import android.widget.ImageView; | |
| import android.widget.TextView; | |
| import android.widget.Toast; | |
| import com.bumptech.glide.Glide; | |
| import com.google.android.gms.common.api.Status; | |
| import com.google.android.gms.location.places.Place; | |
| import com.google.android.gms.location.places.PlacePhotoMetadata; | |
| import com.google.android.gms.location.places.PlacePhotoMetadataBuffer; | |
| import com.google.android.gms.location.places.PlacePhotoMetadataResponse; | |
| import com.google.android.gms.location.places.PlacePhotoResponse; | |
| import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment; | |
| import com.google.android.gms.location.places.ui.PlaceSelectionListener; | |
| import com.google.android.gms.maps.model.LatLng; | |
| import com.google.android.gms.tasks.OnCompleteListener; | |
| import com.google.android.gms.tasks.Task; | |
| import retrofit2.Call; | |
| import retrofit2.Callback; | |
| import retrofit2.Response; | |
| import sudo.nasaspaceapps.cryosphere.rest.api.WeatherApi; | |
| import sudo.nasaspaceapps.cryosphere.rest.model.Weather; | |
| public class MainActivity extends AppCompatActivity { | |
| //----------------------DRAWER---------------------------------------- | |
| private DrawerLayout mDrawerLayout; | |
| //-----------------------Permissions | |
| private final int MY_PERMISSIONS=124; | |
| //----------------------PLACES SDK | |
| PlaceAutocompleteFragment placeAutoComplete; | |
| private double latitude; | |
| private double longitude; | |
| private String city; | |
| //------------------------UI's---------------------------------- | |
| TextView mainData; | |
| TextView temp; | |
| ImageView plainImg1; | |
| TextView tempNav; | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.activity_main); | |
| beginPermission(); | |
| //Toolbar | |
| Toolbar toolbar = findViewById(R.id.toolbar); | |
| setSupportActionBar(toolbar); | |
| ActionBar actionbar = getSupportActionBar(); | |
| actionbar.setDisplayHomeAsUpEnabled(true); | |
| actionbar.setHomeAsUpIndicator(R.drawable.ic_menu); | |
| //UI's---------------------------------- | |
| mainData = findViewById(R.id.FrontData); | |
| temp = findViewById(R.id.tempmain); | |
| plainImg1 = findViewById(R.id.planeimg1); | |
| Glide.with(this).load(R.drawable.image1).into(plainImg1); | |
| tempNav = findViewById(R.id.tempnav); | |
| //----------------------------NavigationView---------------------------------------- | |
| mDrawerLayout = findViewById(R.id.drawer_layout); | |
| NavigationView navigationView = findViewById(R.id.nav_view); | |
| navigationView.setNavigationItemSelectedListener( | |
| new NavigationView.OnNavigationItemSelectedListener() { | |
| @Override | |
| public boolean onNavigationItemSelected(MenuItem menuItem) { | |
| // set item as selected to persist highlight | |
| menuItem.setChecked(true); | |
| // close drawer when item is tapped | |
| mDrawerLayout.closeDrawers(); | |
| // Add code here to update the UI based on the item selected | |
| // For example, swap UI fragments here | |
| switch (menuItem.getItemId()) { | |
| // case R.id.nav_UV: | |
| // | |
| // break; | |
| case R.id.nav_Blogs:{ | |
| Intent i = new Intent(MainActivity.this,BlogActivity.class); | |
| startActivity(i); | |
| } | |
| break; | |
| // case R.id.nav_skin: | |
| } | |
| return true; | |
| } | |
| }); | |
| //------------------------------------AUTOCOMPLETE PLACES---------------------------------------------------------------- | |
| placeAutoComplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocompletemain); | |
| placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() { | |
| @Override | |
| public void onPlaceSelected(Place place) { | |
| Log.d("Maps", "Place selected: " + place.getName()); | |
| city = String.valueOf(place.getName()); | |
| LatLng latLng = place.getLatLng(); | |
| //latLng.latitude(); | |
| latitude = latLng.latitude; | |
| longitude = latLng.longitude; | |
| Intent i = new Intent(MainActivity.this, MapsFragment.class); | |
| i.putExtra("latitude", String.valueOf(latitude)); | |
| i.putExtra("longitude", String.valueOf(longitude)); | |
| i.putExtra("place", city); | |
| startActivity(i); | |
| } | |
| @Override | |
| public void onError(Status status) { | |
| Log.d("Maps", "An error occurred: " + status); | |
| Toast.makeText(MainActivity.this, "Please Check Internet Connection", Toast.LENGTH_LONG).show(); | |
| } | |
| }); | |
| getData(); | |
| } | |
| //---------------------------MENU---------------------------------- | |
| @Override | |
| public boolean onOptionsItemSelected(MenuItem item) { | |
| switch (item.getItemId()) { | |
| case android.R.id.home: | |
| mDrawerLayout.openDrawer(GravityCompat.START); | |
| return true; | |
| // case R.id.call_an_ambulance: | |
| // phoneIntent.setData(Uri.parse("tel:102")); | |
| // startActivity(phoneIntent); | |
| // return true; | |
| // case R.id.call_the_firefighters: | |
| // phoneIntent.setData(Uri.parse("tel:101")); | |
| // startActivity(phoneIntent); | |
| // return true; | |
| // case R.id.call_the_police: | |
| // phoneIntent.setData(Uri.parse("tel:100")); | |
| // startActivity(phoneIntent); | |
| // return true; | |
| } | |
| return super.onOptionsItemSelected(item); | |
| } | |
| //-------------------------------Side Menu---------------------------------- | |
| @Override | |
| public boolean onCreateOptionsMenu(Menu menu) { | |
| // Inflate the menu; this adds items to the action bar if it is present. | |
| getMenuInflater().inflate(R.menu.main, menu); | |
| return true; | |
| } | |
| ///-----------------------------------Permissions--------------------------- | |
| public void beginPermission() { | |
| if ((ActivityCompat.checkSelfPermission(this, | |
| Manifest.permission.CAMERA) | |
| != PackageManager.PERMISSION_GRANTED) && (ActivityCompat.checkSelfPermission(this, | |
| Manifest.permission.ACCESS_FINE_LOCATION) | |
| != PackageManager.PERMISSION_GRANTED) && (ActivityCompat.checkSelfPermission(this, | |
| Manifest.permission.CALL_PHONE) | |
| != PackageManager.PERMISSION_GRANTED)) { | |
| Log.i("1", "Permission is not granted"); | |
| if (ActivityCompat.shouldShowRequestPermissionRationale(this, | |
| Manifest.permission.CAMERA) && (ActivityCompat.shouldShowRequestPermissionRationale(this, | |
| Manifest.permission.ACCESS_FINE_LOCATION)) && (ActivityCompat.shouldShowRequestPermissionRationale(this, | |
| Manifest.permission.CALL_PHONE))) { | |
| Log.i("REQUEST", "Requesting permission...."); | |
| ActivityCompat.requestPermissions(MainActivity.this, | |
| new String[]{Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE }, | |
| MY_PERMISSIONS); | |
| } else { | |
| ActivityCompat.requestPermissions(this, | |
| new String[]{Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE}, | |
| MY_PERMISSIONS); | |
| } | |
| } else { | |
| Toast.makeText(MainActivity.this, "THANKS", Toast.LENGTH_LONG); | |
| //Permission Granted | |
| } | |
| } | |
| @Override | |
| public void onRequestPermissionsResult(int requestCode, | |
| String permissions[], int[] grantResults) { | |
| switch (requestCode) { | |
| case MY_PERMISSIONS: { | |
| if (grantResults.length > 0 | |
| && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
| Log.i("1", "Permission is granted"); | |
| } else { | |
| Log.i("1", "Permission is again not granted"); | |
| Snackbar mySnackbar = Snackbar.make(findViewById(android.R.id.content), | |
| "Please ennable the permissions", Snackbar.LENGTH_SHORT); | |
| mySnackbar.setAction("ENABLE", new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID))); | |
| } | |
| }); | |
| mySnackbar.show(); | |
| } | |
| return; | |
| } | |
| } | |
| } | |
| //------------------------------------END PERMISSIONS--------------------------------------------------------------------------- | |
| public void getData() | |
| { | |
| char unit = 'c'; | |
| String YQL = String.format("select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"%s\") and u='" + unit + "'", "Delhi"); | |
| WeatherApi.Factory.getInstance().getWeather(YQL, "json").enqueue(new Callback<Weather>() { | |
| @Override | |
| public void onResponse(Call<Weather> call, Response<Weather> response) { | |
| Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show(); | |
| try { | |
| Weather list = response.body(); | |
| temp.setText(response.body().getQuery().getResults().getChannel().getItem().getCondition().getTemp()+" 'C"); | |
| // tempNav.setText(response.body().getQuery().getResults().getChannel().getItem().getCondition().getTemp()+" 'C"); | |
| // tempHumid.setText(response.body().getQuery().getResults().getChannel().getAtmosphere().getHumidity()); | |
| //mainData.setText(Html.fromHtml(response.body().getQuery().getResults().getChannel().getItem().getDescription())); | |
| String formattedText = getString(R.string.html_string); | |
| Spanned result = Html.fromHtml(formattedText); | |
| mainData.setText(result); | |
| } | |
| catch (NullPointerException e){ | |
| temp.setText("0"); | |
| } | |
| } | |
| @Override | |
| public void onFailure(Call<Weather> call, Throwable t) { | |
| Toast.makeText(MainActivity.this, "Check Internet Connection", Toast.LENGTH_SHORT).show(); | |
| // progress.dismiss(); | |
| } | |
| }); | |
| } | |
| } |
Design an app that lets a user pick a location and learn about the parts of Earth's cryosphere that impact that location.
SpaceApps is a NASA incubator innovation program.