@Override protected String doInBackground(Location... locations) { Location lCityLocation = locations[0]; // Location values in Regions class Region.setMyLocation_latitude(String.valueOf(lCityLocation.getLatitude())); Region.setMyLocation_longitude(String.valueOf(lCityLocation.getLongitude())); MainActivity.weatherJSONResponse = WeatherInfo.getWeatherInfo(lCityLocation); return MainActivity.weatherJSONResponse; }
/** Read JSON weather response & Set UI text elements */ @Override protected void onPostExecute(String aInWeatherJsonStr) { try { // Get Root JSON Object JSONObject lWeatherJSONRootObj = new JSONObject(aInWeatherJsonStr); // Save city weather information Region.setMyCity(lWeatherJSONRootObj.getString("name").toUpperCase()); // main object contains city temperature information JSONObject lWeatherMainObj = lWeatherJSONRootObj.getJSONObject("main"); // Convert kelvin to Celsius temperature Region.setTemperature((float) lWeatherMainObj.getDouble("temp") - 273.15f); // Contains weather description ( Example: "Moderate rain") JSONArray lWeatherArray = lWeatherJSONRootObj.getJSONArray("weather"); JSONObject lWeatherDescription = lWeatherArray.getJSONObject(0); Region.setWeather_description(lWeatherDescription.getString("description")); String lDegreeSymbol = "\u00b0"; // Display city weather information MainActivity.city_field.setText(Region.getMyCity()); MainActivity.temperature.setText( String.valueOf(Math.round(Region.getTemperature())) + lDegreeSymbol + " " + "C"); MainActivity.weather_description.setText(Region.getWeather_description()); // Call weather image icon task // JSONObject lWeatherIconJsonObj = lWeatherArray.getJSONObject(3); String lWeatherIconCode = lWeatherDescription.getString("icon"); if (lWeatherIconCode != null) { switch (lWeatherIconCode) { case "01d": MainActivity.temperaturePic.setImageResource(R.drawable.sunny); break; case "02d": case "03d": case "04d": MainActivity.temperaturePic.setImageResource(R.drawable.sunnywithclouds); break; case "09d": case "09n": case "10d": case "10n": MainActivity.temperaturePic.setImageResource(R.drawable.lightrain); break; case "11d": case "11n": MainActivity.temperaturePic.setImageResource(R.drawable.thunder); break; case "13d": case "13n": MainActivity.temperaturePic.setImageResource(R.drawable.snow); break; case "01n": case "02n": case "03n": case "04n": MainActivity.temperaturePic.setImageResource(R.drawable.night); break; case "50d": case "50n": MainActivity.temperaturePic.setImageResource(R.drawable.mist); break; } } // **TODO: We have internal image resource to display weather icons // new GetWeatherIconTask().execute(lWeatherIconCode); // // if (Region.getIconData() != null && Region.getIconData().length > 0) { // Bitmap img = BitmapFactory.decodeByteArray(Region.getIconData(), 0, // Region.getIconData().length); // weatherImageView.setImageBitmap(img); // } } catch (JSONException ex) { ex.printStackTrace(); } }