質問編集履歴

3

枠の中に移動しました

2021/10/19 14:02

投稿

keikei3
keikei3

スコア2

test CHANGED
File without changes
test CHANGED
@@ -6,99 +6,11 @@
6
6
 
7
7
     'com.test.asyncsample.MainActivity.WeatherInfoBackgroundReceiver' の 'WeatherInfoBackgroundReceiver(android.os.Handler, java.lang.String)' は '()' に適用できません
8
8
 
9
-      以下ソスコード
9
+    エラ部分は上から四行目です
10
10
 
11
-           エラー部分は下から三行目です
11
+ ```ここに言語を入力
12
12
 
13
-
14
-
15
- コード
16
-
17
- `` 
18
-
19
-    public class MainActivity extends AppCompatActivity {
20
-
21
- //ログに記載するタグ用の文字列
22
-
23
- private static final String DEBUG_TAG = "AsyncSample";
24
-
25
- //お天気情報のURL
26
-
27
- private static final String WEATHERINFO_URL = "http://api.openweathermap.org/date/2.5/weather?lang=ja";
28
-
29
- //お天気apiにアクセスするためのapiキー
30
-
31
- private static final String APP_ID = "・・・";
32
-
33
- //リストビューに表示させるリストデータ
34
-
35
- private List<Map<String,String>> _list;
36
-
37
-
38
-
39
- @Override
40
-
41
- protected void onCreate(Bundle savedInstanceState) {
42
-
43
- super.onCreate(savedInstanceState);
44
-
45
- setContentView(R.layout.activity_main);
46
-
47
- _list = createList();
48
-
49
-
50
-
51
- ListView lvCityList = findViewById(R.id.lvCityList);
52
-
53
- String[] from = {"name"};
54
-
55
- int[] to = {android.R.id.text1} ;
56
-
57
- SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), _list,android.R.layout.simple_list_item_1,from,to);
58
-
59
- lvCityList.setAdapter(adapter);
60
-
61
- lvCityList.setOnItemClickListener(new ListItemClickListener());
62
-
63
- }
64
-
65
- //リストビューに表示させる天気ポイントリストデータを生成するメソッド
66
-
67
- private List<Map<String,String>>createList(){
68
-
69
- List<Map<String,String>>list = new ArrayList<>();
70
-
71
-
72
-
73
- Map<String,String>map = new HashMap<>();
74
-
75
- map.put("name","大阪");
76
-
77
- map.put("q","osaka");
78
-
79
- list.add(map);
80
-
81
- map = new HashMap<>();
82
-
83
- map.put("name","神戸");
84
-
85
- map.put("q","kobe");
86
-
87
- list.add(map);
88
-
89
-
90
-
91
- return list;
92
-
93
-
94
-
95
- }
96
-
97
- //お天気情報の取得処理を行うメソッド
98
-
99
- @UiThread
100
-
101
- private void receiveWeatherInfo(final String urlFull){
13
+ private void receiveWeatherInfo(final String urlFull){
102
14
 
103
15
  Looper mainLooper = Looper.getMainLooper();
104
16
 
@@ -112,7 +24,9 @@
112
24
 
113
25
 
114
26
 
27
+ }
28
+
115
-        private class WeatherInfoBackgroundReceiver implements Runnable{
29
+ private class WeatherInfoBackgroundReceiver implements Runnable{
116
30
 
117
31
  //ハンドラオブジェクト
118
32
 
@@ -154,8 +68,38 @@
154
68
 
155
69
  try {
156
70
 
157
- //URLオブジェクトを生成`
71
+ //URLオブジェクトを生成
158
72
 
73
+ URL url = new URL(_urlFull);
159
74
 
75
+ //URLオブジェクトからhttpURLConnectionオブジェクトを取得
76
+
77
+ con = (HttpURLConnection) url.openConnection();
78
+
79
+ //接続に使ってもいい時間を設定
80
+
81
+ con.setConnectTimeout(1000);
82
+
83
+ //データ取得に使っても良い時間
84
+
85
+ con.setReadTimeout(1000);
86
+
87
+ //http接続メソッドをgetに設定
88
+
89
+ con.setRequestMethod("GET");
90
+
91
+ //接続
92
+
93
+ con.connect();
94
+
95
+ //httpURLConnectionオブジェクトからレスポンスデータを取得
96
+
97
+ is = con.getInputStream();
98
+
99
+ //レスポンスうデータであるinputstreamオブジェクトを文字列に変換
100
+
101
+ result = is2String(is);
102
+
103
+ }
160
104
 
161
105
  ```

2

枠の中に移動しました

2021/10/19 14:02

投稿

keikei3
keikei3

スコア2

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
 
14
14
 
15
+ コード
16
+
17
+ `` 
18
+
15
-          public class MainActivity extends AppCompatActivity {
19
+    public class MainActivity extends AppCompatActivity {
16
20
 
17
21
  //ログに記載するタグ用の文字列
18
22
 
@@ -150,4 +154,8 @@
150
154
 
151
155
  try {
152
156
 
153
- //URLオブジェクトを生成
157
+ //URLオブジェクトを生成`
158
+
159
+
160
+
161
+ ```

1

WeatherInfoBackgroundReceiverCLASSを追記しました

2021/10/19 14:00

投稿

keikei3
keikei3

スコア2

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,49 @@
105
105
  ExecutorService executorService = Executors.newSingleThreadExecutor();
106
106
 
107
107
  executorService.submit(backgroundReceiver);
108
+
109
+
110
+
111
+        private class WeatherInfoBackgroundReceiver implements Runnable{
112
+
113
+ //ハンドラオブジェクト
114
+
115
+ private final Handler _handler;
116
+
117
+ //お天気情報を取得するURL
118
+
119
+ private final String _urlFull;
120
+
121
+
122
+
123
+ //コンストラクタ
124
+
125
+ public WeatherInfoBackgroundReceiver(Handler handler , String urlFull){
126
+
127
+ _handler = handler;
128
+
129
+ _urlFull = urlFull;
130
+
131
+ }
132
+
133
+ @WorkerThread
134
+
135
+ @Override
136
+
137
+ public void run(){
138
+
139
+ //http接続を行うhttpURLConnectionオブジェクトを宣言。finalyで開放するためにtry外で宣言
140
+
141
+ HttpURLConnection con = null;
142
+
143
+ //http接続のレスポンスデータとして取得するinputStreamオブジェクトを宣言。同じくtry外で宣言
144
+
145
+ InputStream is = null;
146
+
147
+ //天気情報サービスから取得したjson文字列。天気情報が格納されたいる
148
+
149
+ String result = "";
150
+
151
+ try {
152
+
153
+ //URLオブジェクトを生成