エラーメッセージはないが、実行できない
- 評価
- クリップ 0
- VIEW 243
位置情報から天気を表示するアプリを作っています。
位置情報を取得してその緯度経度から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です
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
y_waiwai
2019/12/12 15:47
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
HRSKT
2019/12/12 16:16
エラーがないというのは「Buildは通ったけど」という意味ですよね
AndroidStudioの logcat ウインドウの表示はどうでしょうか?
そこもエラーなしですか?
m.ts10806
2019/12/12 17:26
>「問題が発生したため終了します」
これはエラーメッセージです。
jimbe
2019/12/12 22:57
何が起きているのか分からない状態で一部のコードだけ見ても, 恐らく作者以上に分かりません.
Hitoshi_kitoさんのおっしゃる通り, android studio から実行していれば logcat に情報が出ているはずですので, まずそちらをご確認ください.
どうしても詳細が分からないのでしたら, アプリの処理を少しずつコメントにしていって, 落ちなくなったらその直前にコメントにした個所が怪しいとみる等, とにかく状況を調べることをしたほうが宜しいかと思います.
trident_aru
2019/12/13 13:30
皆様、ありがとうございます。
HIroshi_Kitoさんのおっしゃる通り「Buildは通ったけど」で間違いないです。
HIroshi_Kitoさん、Jimbeさんの仰る通りlogcatにエラーがあったので詳細確認をしてから出直します。