Guest User

Untitled

a guest
Aug 24th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.08 KB | None | 0 0
  1. import android.app.AlertDialog;
  2. import android.app.ProgressDialog;
  3. import android.graphics.Color;
  4. import android.graphics.Typeface;
  5. import android.os.Bundle;
  6. import android.os.Handler;
  7. import android.support.v4.app.Fragment;
  8. import android.text.SpannableString;
  9. import android.text.style.ForegroundColorSpan;
  10. import android.text.style.RelativeSizeSpan;
  11. import android.util.Log;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.ViewGroup;
  15. import android.widget.Button;
  16. import android.widget.TextView;
  17. import android.widget.Toast;
  18.  
  19. import org.json.JSONObject;
  20.  
  21. import java.text.DateFormat;
  22. import java.text.SimpleDateFormat;
  23. import java.util.Date;
  24. import java.util.Calendar;
  25. import java.util.Locale;
  26.  
  27. public class WeatherFragment extends Fragment {
  28. Typeface weatherFont;
  29. Button button;
  30. ProgressDialog pd;
  31. TextView detailsField[] = new TextView[10] , weatherIcon[] = new TextView[11];
  32. TextView windView , humidityView , directionView, dailyView, updatedField, cityField;
  33. double tc;
  34. Handler handler;
  35. int Clicks = 0;
  36. private void updateWeatherData(final String city){
  37. new Thread(){
  38. public void run(){
  39. final JSONObject[] json = RemoteFetch.getJSON(getActivity(), city);
  40. if(json == null){
  41. handler.post(new Runnable(){
  42. public void run(){
  43. Toast.makeText(getActivity(),
  44. getActivity().getString(R.string.place_not_found),
  45. Toast.LENGTH_LONG).show();
  46. }
  47. });
  48. } else {
  49. handler.post(new Runnable(){
  50. public void run(){
  51. renderWeather(json);
  52. }
  53. });
  54. }
  55. }
  56. }.start();
  57. }
  58.  
  59. public void Units(JSONObject json1)
  60. {
  61. try {
  62. int bool = Clicks % 2;
  63. switch (bool) {
  64. case 0 :
  65. double Fah = json1.getJSONObject("main").getDouble("temp") * 1.8 + 32;
  66. int F = (int) Fah;
  67. button.setText(Integer.toString(F) + "°F");
  68. ++Clicks;
  69. break;
  70. case 1:
  71. button.setText((int) Math.round(json1.getJSONObject("main").getDouble("temp")) + "°C");
  72. ++Clicks;
  73. break;
  74. }
  75. }
  76. catch (Exception ex)
  77. {
  78. Log.e("Not Found" , "BFFK");
  79. }
  80. }
  81.  
  82. public void changeCity(String city)
  83. {
  84. updateWeatherData(city);
  85. }
  86.  
  87. private void renderWeather(JSONObject[] jsonj){
  88. try {
  89. button.setVisibility(View.INVISIBLE);
  90. Clicks = 0;
  91. Log.i("Showed" , "Done");
  92. final JSONObject json = jsonj[0] , json1 = jsonj[1];
  93. tc = json1.getJSONObject("main").getDouble("temp");
  94. int a = (int) Math.round(json1.getJSONObject("main").getDouble("temp"));
  95. //button.setText("°C"); //℃
  96. cityField.setText(json.getJSONObject("city").getString("name").toUpperCase(Locale.US) +
  97. ", " +
  98. json.getJSONObject("city").getString("country"));
  99. cityField.setOnClickListener(new View.OnClickListener()
  100. {
  101. public void onClick(View v) {
  102. AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); //Read Update
  103. alertDialog.setTitle("City Information");
  104. try {
  105. alertDialog.setMessage(json.getJSONObject("city").getString("name").toUpperCase(Locale.US) +
  106. ", " +
  107. json.getJSONObject("city").getString("country"));
  108. alertDialog.show();
  109. Log.i("Load", "BFFK");
  110. } catch (Exception ex) {
  111. Log.e("Error", "FFFF");
  112. }
  113. }
  114. });
  115. Log.i("Location" , "Location Received");
  116. JSONObject details[] = new JSONObject[10];
  117. for (int i = 0; i < 10; ++i)
  118. {
  119. details[i] = json.getJSONArray("list").getJSONObject(i);
  120. }
  121. Log.i("Objects" , "JSON Objects Created");
  122. for (int i = 0; i < 10; ++i)
  123. {
  124. final JSONObject J = details[i];
  125. String date1 = details[i].getString("dt");
  126. Date expiry = new Date(Long.parseLong(date1) * 1000);
  127. String date = new SimpleDateFormat("EE, dd").format(expiry);
  128. SpannableString ss1= new SpannableString(date + "\n"
  129. + details[i].getJSONObject("temp").getLong("max") + "°" + " "
  130. + details[i].getJSONObject("temp").getLong("min") + "°" + "\n");
  131. ss1.setSpan(new RelativeSizeSpan(1.1f), 0,7, 0); // set size
  132. ss1.setSpan(new RelativeSizeSpan(1.4f) , 8 , 11 , 0);
  133. detailsField[i].setText(ss1);
  134. Log.i("Details[" + Integer.toString(i) + "]", "Infor String " + Integer.toString(i + 1) + " loaded");
  135. setWeatherIcon(details[i].getJSONArray("weather").getJSONObject(0).getInt("id") , i);
  136. detailsField[i].setOnClickListener(new View.OnClickListener() {
  137. public void onClick(View v)
  138. {
  139. AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); //Read Update
  140. alertDialog.setTitle("Weather Information");
  141. try{
  142. String date1 = J.getString("dt");
  143. Date expiry = new Date(Long.parseLong(date1) * 1000);
  144. String date = new SimpleDateFormat("EE, dd MMMM yyyy").format(expiry);
  145. alertDialog.setMessage(date +
  146. "\n" + J.getJSONArray("weather").getJSONObject(0).getString("description").toUpperCase(Locale.US) +
  147. "\n" + "Maximum: " + J.getJSONObject("temp").getLong("max") + " ℃" +
  148. "\n" + "Minimum: " + J.getJSONObject("temp").getLong("min") + " ℃" +
  149. "\n" + "Morning: " + J.getJSONObject("temp").getLong("morn") + " ℃" +
  150. "\n" + "At Night: " + J.getJSONObject("temp").getLong("night") + " ℃" +
  151. "\n" + "Evening: " + J.getJSONObject("temp").getLong("eve") + " ℃" +
  152. "\n" + "Humidity: " + J.getString("humidity") + "%" +
  153. "\n" + "Pressure: " + J.getString("pressure") + " hPa" +
  154. "\n" + "Wind: " + J.getString("speed") + "km/h");
  155. alertDialog.show();
  156. Log.i("Load" , "BFFK");}
  157. catch (Exception e) {
  158. Log.e("Error", "FO");
  159. }
  160. }
  161. });
  162. weatherIcon[i].setOnClickListener(new View.OnClickListener() {
  163. public void onClick(View v)
  164. {
  165. AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); //Read Update
  166. alertDialog.setTitle("Weather Information");
  167. try{
  168. String date1 = J.getString("dt");
  169. Date expiry = new Date(Long.parseLong(date1) * 1000);
  170. String date = new SimpleDateFormat("EE, dd MMMM yyyy").format(expiry);
  171. alertDialog.setMessage(date +
  172. "\n" + J.getJSONArray("weather").getJSONObject(0).getString("description").toUpperCase(Locale.US) +
  173. "\n" + "Maximum: " + J.getJSONObject("temp").getLong("max") + " ℃" +
  174. "\n" + "Minimum: " + J.getJSONObject("temp").getLong("min") + " ℃" +
  175. "\n" + "Morning: " + J.getJSONObject("temp").getLong("morn") + " ℃" +
  176. "\n" + "At Night: " + J.getJSONObject("temp").getLong("night") + " ℃" +
  177. "\n" + "Evening: " + J.getJSONObject("temp").getLong("eve") + " ℃" +
  178. "\n" + "Humidity: " + J.getString("humidity") + "%" +
  179. "\n" + "Pressure: " + J.getString("pressure") + " hPa" +
  180. "\n" + "Wind: " + J.getString("speed") + "km/h");
  181. alertDialog.show();
  182. Log.i("Load" , "BFFK");}
  183. catch (Exception e) {
  184. Log.e("Error", "FO");
  185. }
  186. }
  187. });
  188. }
  189. DateFormat df = DateFormat.getDateTimeInstance();
  190. String updatedOn = df.format(new Date(json1.getLong("dt")*1000));
  191. updatedField.setText("Last update: " + updatedOn);
  192. int deg = json1.getJSONObject("wind").getInt("deg");
  193. if (deg < 90)
  194. directionView.setText(getActivity().getString(R.string.top_right));
  195. else if (deg == 90)
  196. directionView.setText(getActivity().getString(R.string.right));
  197. else if (deg < 180)
  198. directionView.setText(getActivity().getString(R.string.bottom_right));
  199. else if (deg == 180)
  200. directionView.setText(getActivity().getString(R.string.down));
  201. else if (deg < 270)
  202. directionView.setText(getActivity().getString(R.string.bottom_left));
  203. else if (deg == 270)
  204. directionView.setText(getActivity().getString(R.string.left));
  205. else
  206. directionView.setText(getActivity().getString(R.string.top_left));
  207. setWeatherIcon(json1.getJSONArray("weather").getJSONObject(0).getInt("id"),10);
  208. humidityView.setText("HUMIDITY:\n" + json1.getJSONObject("main").getInt("humidity") + "%");
  209. Log.i("Humidity Loaded" , "Done");
  210. windView.setText("WIND:\n" + json1.getJSONObject("wind").getDouble("speed") + "km/h");
  211. Log.i("Wind Loaded" , "Done");
  212. Log.i("10" , "Weather Icon 11 Set");
  213. button.setOnClickListener(new View.OnClickListener() {
  214. public void onClick (View v)
  215. {
  216. Units(json1);
  217. }
  218. });
  219. weatherIcon[10].setOnClickListener(new View.OnClickListener()
  220. {
  221. public void onClick (View v)
  222. {
  223. AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); //Read Update
  224. alertDialog.setTitle("Weather Information");
  225. try{
  226. String d1 = new java.text.SimpleDateFormat("hh:mm:ss a").format(new Date(json1.getJSONObject("sys").getLong("sunrise")*1000));
  227. String d2 = new java.text.SimpleDateFormat("hh:mm:ss a").format(new Date(json1.getJSONObject("sys").getLong("sunset")*1000));
  228. alertDialog.setMessage(json1.getJSONArray("weather").getJSONObject(0).getString("description").toUpperCase(Locale.US) +
  229. "\n" + "TEMPERATURE :\t " + json1.getJSONObject("main").getInt("temp") + " ℃" +
  230. "\n" + "Maximum:\t " + json1.getJSONObject("main").getDouble("temp_max") + " ℃" +
  231. "\n" + "Minimum:\t " + json1.getJSONObject("main").getDouble("temp_min") + " ℃" +
  232. "\n" + "Humidity:\t " + json1.getJSONObject("main").getString("humidity") + "%" +
  233. "\n" + "Pressure:\t " + json1.getJSONObject("main").getString("pressure") + " hPa" +
  234. "\n" + "Wind:\t " + json1.getJSONObject("wind").getString("speed") + "km/h" +
  235. "\n" + "Sunrise:\t " + d1 +
  236. "\n" + "Sunset:\t " + d2);
  237. alertDialog.show();
  238. Log.i("Load" , "BFFK");}
  239. catch (Exception e) {
  240. Log.e("Error", "FO");
  241. }
  242. }
  243. });
  244. button.setText(Integer.toString(a) + "°C");
  245. button.setVisibility(View.VISIBLE);
  246. }catch(Exception e){
  247. Log.e("SimpleWeather", "One or more fields not found in the JSON data");
  248. }
  249. }
  250.  
  251. public WeatherFragment(){
  252. handler = new Handler();
  253. }
  254.  
  255. @Override
  256. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  257. Bundle savedInstanceState) {
  258. View rootView = inflater.inflate(R.layout.fragment_weather, container, false);
  259. cityField = (TextView)rootView.findViewById(R.id.city_field);
  260. updatedField = (TextView)rootView.findViewById(R.id.updated_field);
  261. humidityView = (TextView) rootView.findViewById(R.id.humidity_view);
  262. windView = (TextView) rootView.findViewById(R.id.wind_view);
  263. directionView = (TextView)rootView.findViewById(R.id.direction_view);
  264. directionView.setTypeface(weatherFont);
  265. dailyView = (TextView)rootView.findViewById(R.id.daily_view);
  266. dailyView.setText("DAILY");
  267. button = (Button)rootView.findViewById(R.id.button1);
  268. button.setText("°C");
  269. for (int i = 0; i < 11; ++i)
  270. {
  271. String f = "details_view" + (i + 1) , g = "weather_icon" + (i + 1);
  272. if (i != 10) {
  273. int resID = getResources().getIdentifier(f, "id", getContext().getPackageName());
  274. detailsField[i] = (TextView) rootView.findViewById(resID);
  275. }
  276. int resIDI = getResources().getIdentifier(g, "id" , getContext().getPackageName());
  277. weatherIcon[i] = (TextView)rootView.findViewById(resIDI);
  278. weatherIcon[i].setTypeface(weatherFont);
  279. }
  280. return rootView;
  281. }
  282.  
  283. @Override
  284. public void onCreate(Bundle savedInstanceState) {
  285. super.onCreate(savedInstanceState);
  286. weatherFont = Typeface.createFromAsset(getActivity().getAssets(), "fonts/weather.ttf");
  287. updateWeatherData(new CityPreference(getActivity()).getCity());
  288. }
  289.  
  290. private void setWeatherIcon(int id , int i){
  291. String icon = "";
  292. switch(id) {
  293. case 501 : icon = getActivity().getString(R.string.weather_drizzle);
  294. break;
  295. case 500 : icon = getActivity().getString(R.string.weather_drizzle);
  296. break;
  297. case 502 : icon = getActivity().getString(R.string.weather_rainy);
  298. break;
  299. case 503 : icon = getActivity().getString(R.string.weather_rainy);
  300. break;
  301. case 504 : icon = getActivity().getString(R.string.weather_rainy);
  302. break;
  303. case 511 : icon = getActivity().getString(R.string.weather_rain_wind);
  304. break;
  305. case 520 : icon = getActivity().getString(R.string.weather_shower_rain);
  306. break;
  307. case 521 : icon = getActivity().getString(R.string.weather_drizzle);
  308. break;
  309. case 522 : icon = getActivity().getString(R.string.weather_thunder);
  310. break;
  311. case 531 : icon = getActivity().getString(R.string.weather_thunder);
  312. break;
  313. case 200 : icon = getActivity().getString(R.string.weather_thunder);
  314. break;
  315. case 201 : icon = getActivity().getString(R.string.weather_thunder);
  316. break;
  317. case 202 : icon = getActivity().getString(R.string.weather_thunder);
  318. break;
  319. case 210 : icon = getActivity().getString(R.string.weather_thunder);
  320. break;
  321. case 211 : icon = getActivity().getString(R.string.weather_thunder);
  322. break;
  323. case 212 : icon = getActivity().getString(R.string.weather_thunder);
  324. break;
  325. case 221 : icon = getActivity().getString(R.string.weather_thunder);
  326. break;
  327. case 230 : icon = getActivity().getString(R.string.weather_thunder);
  328. break;
  329. case 231 : icon = getActivity().getString(R.string.weather_thunder);
  330. break;
  331. case 232 : icon = getActivity().getString(R.string.weather_thunder);
  332. break;
  333. case 300 : icon = getActivity().getString(R.string.weather_shower_rain);
  334. break;
  335. case 301 : icon = getActivity().getString(R.string.weather_shower_rain);
  336. break;
  337. case 302 : icon = getActivity().getString(R.string.weather_heavy_drizzle);
  338. break;
  339. case 310 : icon = getActivity().getString(R.string.weather_shower_rain);
  340. break;
  341. case 311 : icon = getActivity().getString(R.string.weather_shower_rain);
  342. break;
  343. case 312 : icon = getActivity().getString(R.string.weather_heavy_drizzle);
  344. break;
  345. case 313 : icon = getActivity().getString(R.string.weather_rain_drizzle);
  346. break;
  347. case 314 : icon = getActivity().getString(R.string.weather_heavy_drizzle);
  348. break;
  349. case 321 : icon = getActivity().getString(R.string.weather_heavy_drizzle);
  350. break;
  351. case 600 : icon = getActivity().getString(R.string.weather_snowy);
  352. break;
  353. case 601 : icon = getActivity().getString(R.string.weather_snowy);
  354. break;
  355. case 602 : icon = getActivity().getString(R.string.weather_heavy_snow);
  356. break;
  357. case 611 : icon = getActivity().getString(R.string.weather_sleet);
  358. break;
  359. case 612 : icon = getActivity().getString(R.string.weather_heavy_snow);
  360. break;
  361. case 903 :
  362. case 615 : icon = getActivity().getString(R.string.weather_snowy);
  363. break;
  364. case 616 : icon = getActivity().getString(R.string.weather_snowy);
  365. break;
  366. case 620 : icon = getActivity().getString(R.string.weather_snowy);
  367. break;
  368. case 621 : icon = getActivity().getString(R.string.weather_snowy);
  369. break;
  370. case 622 : icon = getActivity().getString(R.string.weather_snowy);
  371. break;
  372. case 701 :
  373. case 702 :
  374. case 721 : icon = getActivity().getString(R.string.weather_smoke);
  375. break;
  376. case 751 :
  377. case 761 :
  378. case 731 : icon = getActivity().getString(R.string.weather_dust);
  379. break;
  380. case 741 : icon = getActivity().getString(R.string.weather_foggy);
  381. break;
  382. case 762 : icon = getActivity().getString(R.string.weather_volcano);
  383. break;
  384. case 771 :
  385. case 900 :
  386. case 781 : icon = getActivity().getString(R.string.weather_tornado);
  387. break;
  388. case 904 : icon = getActivity().getString(R.string.weather_sunny);
  389. break;
  390. case 800 : icon = getActivity().getString(R.string.weather_sunny);
  391. break;
  392. case 801 : icon = getActivity().getString(R.string.weather_cloudy);
  393. break;
  394. case 802 : icon = getActivity().getString(R.string.weather_cloudy);
  395. break;
  396. case 803 : icon = getActivity().getString(R.string.weather_cloudy);
  397. break;
  398. case 804 : icon = getActivity().getString(R.string.weather_cloudy);
  399. break;
  400. case 901 : icon = getActivity().getString(R.string.weather_storm);
  401. break;
  402. case 902 : icon = getActivity().getString(R.string.weather_hurricane);
  403. break;
  404. }
  405. Log.i(Integer.toString(id) , Integer.toString(i));
  406. weatherIcon[i].setText(icon);
  407. }
  408. }
Add Comment
Please, Sign In to add comment