位置情報から天気を表示するアプリを作っています。 位置情報を取得してその緯度経度からAPIのopenweathermapを利用して天気を受け取り表示したいです ### 発生している問題・エラーメッセージ エラーメッセージはありませんが実行すると「問題が発生したため終了します」と表示されます。どうしても原因がわからないので投稿させていただきました。ご協力よろしくお願いします。 ### 該当のソースコード ```java public void onLocationChanged(Location location) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); try { String requestURL = "http://api.openweathermap.org/data/2.5/find?lat=" + latitude + "&lon=" + longitude + "&cnt=1&APPID=" + API; URL url = new URL(requestURL); InputStream is = url.openConnection().getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); // JSON形式で結果が返るためパースのためにStringに変換する StringBuilder sb = new StringBuilder(); String line; while (null != (line = reader.readLine())) { sb.append(line); } String data = sb.toString(); try { JSONObject rootObj = new JSONObject(data); JSONArray listArray = rootObj.getJSONArray("list"); JSONObject obj = listArray.getJSONObject(0); // 地点ID int id = obj.getInt("id"); // 地点名 String cityName = obj.getString("name"); // 気温(Kから℃に変換) JSONObject mainObj = obj.getJSONObject("main"); float currentTemp = (float) (mainObj.getDouble("temp") - 273.15f); float minTemp = (float) (mainObj.getDouble("temp_min") - 273.15f); float maxTemp = (float) (mainObj.getDouble("temp_max") - 273.15f); // 湿度 if (mainObj.has("humidity")) { int humidity = mainObj.getInt("humidity"); } // 取得時間 long time = obj.getLong("dt"); // 天気 JSONArray weatherArray = obj.getJSONArray("weather"); JSONObject weatherObj = weatherArray.getJSONObject(0); String iconId = weatherObj.getString("icon"); String weatherDescription = weatherArray.getString(Integer.parseInt("description")); temptext.setText((int) currentTemp); temp_mintext.setText((int) minTemp); temp_maxtext.setText((int) maxTemp); rin_text.setText(weatherDescription); weather_text.setText((CharSequence) weatherArray); address.setText(cityName); } catch (JSONException e) { } } catch (IOException e) { e.printStackTrace(); } }
補足情報(FW/ツールのバージョンなど)
コードは学校で作ったGPSのコードとネットにあったopenweathermapの利用例のコードを使って作りました。
個人的に問題あると思っている部分を掲載させていただきます。
runningdeviceはNexus6PAPI23です
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
エラーがないというのは「Buildは通ったけど」という意味ですよね
AndroidStudioの logcat ウインドウの表示はどうでしょうか?
そこもエラーなしですか?
>「問題が発生したため終了します」
これはエラーメッセージです。
何が起きているのか分からない状態で一部のコードだけ見ても, 恐らく作者以上に分かりません.
Hitoshi_kitoさんのおっしゃる通り, android studio から実行していれば logcat に情報が出ているはずですので, まずそちらをご確認ください.
どうしても詳細が分からないのでしたら, アプリの処理を少しずつコメントにしていって, 落ちなくなったらその直前にコメントにした個所が怪しいとみる等, とにかく状況を調べることをしたほうが宜しいかと思います.
皆様、ありがとうございます。
HIroshi_Kitoさんのおっしゃる通り「Buildは通ったけど」で間違いないです。
HIroshi_Kitoさん、Jimbeさんの仰る通りlogcatにエラーがあったので詳細確認をしてから出直します。
あなたの回答
tips
プレビュー