質問編集履歴

3

コードを省略しないで全て書きました。

2017/02/03 12:40

投稿

Yochan
Yochan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,11 @@
24
24
 
25
25
 
26
26
 
27
+ private static final String TAG = "Mobile#Main";
28
+
29
+
30
+
27
- // 配列データ。リストビューに表示する内容
31
+ // リストビューに表示する期限
28
32
 
29
33
  String[] c_code = new String[] {
30
34
 
@@ -32,7 +36,7 @@
32
36
 
33
37
  };
34
38
 
35
- // 配列データ。リストビューに表示する内容
39
+ // リストビューに表示する科目
36
40
 
37
41
  String[] c_name = new String[] {
38
42
 
@@ -42,7 +46,23 @@
42
46
 
43
47
 
44
48
 
49
+ // GoogleApiクライエント
50
+
51
+ private GoogleApiClient mGoogleApiClient = null;
52
+
53
+ private EditText editText = null;
54
+
55
+
56
+
57
+ // データを格納するためのArrayListを宣言
58
+
59
+ private ArrayList<HashMap<String, String>> data
60
+
61
+ = new ArrayList<HashMap<String, String>>();
62
+
63
+
64
+
45
- @Override
65
+ @Override
46
66
 
47
67
  protected void onCreate(Bundle savedInstanceState) {
48
68
 
@@ -50,47 +70,471 @@
50
70
 
51
71
  setContentView(R.layout.activity_main);
52
72
 
73
+
74
+
75
+ // 課題の数分の繰り返し
76
+
77
+ for(int i = 0; i< c_name.length; i++){
78
+
79
+ HashMap<String, String> map
80
+
81
+ = new HashMap<String, String>();
82
+
83
+
84
+
85
+ // 提出期限をmapに代入
86
+
87
+ map.put("countrycode", c_code[i]);
88
+
89
+
90
+
91
+ // 科目名をmapに代入
92
+
93
+ map.put("countryname", c_name[i]);
94
+
95
+
96
+
97
+ // 作成したmapをdataに追加
98
+
99
+ data.add(map);
100
+
53
- }
101
+ }
102
+
54
-
103
+ SimpleAdapter sa
104
+
105
+ = new SimpleAdapter(this, data, R.layout.row,
106
+
107
+ new String[]{"countrycode", "countryname"},
108
+
109
+ new int[]{R.id.countrycode, R.id.countryname}
110
+
111
+ );
112
+
113
+ // main.xmlのListViewにsaをセットします。
114
+
115
+ ListView lv = (ListView)findViewById(R.id.listview);
116
+
117
+ lv.setAdapter(sa);
118
+
119
+
120
+
121
+ //GoogleApiClientのインスタンス生成
122
+
123
+ mGoogleApiClient = new GoogleApiClient
124
+
125
+ .Builder(this)
126
+
127
+ .addApi(Wearable.API)
128
+
129
+ //接続成功と中断を監視するリスナーを登録
130
+
131
+ .addConnectionCallbacks(this)
132
+
133
+ //接続失敗を監視するリスナーを登録
134
+
135
+ .addOnConnectionFailedListener(this)
136
+
137
+ .build();
138
+
139
+
140
+
141
+ editText = (EditText)findViewById(R.id.editText);
142
+
143
+ findViewById(R.id.sendButton).setOnClickListener(this);
144
+
145
+ findViewById(R.id.send).setOnClickListener(this);
146
+
147
+ }
148
+
149
+
150
+
151
+ //フォアグラウンドに移行したタイミングで接続処理を行うメソッド
152
+
153
+ @Override
154
+
155
+ protected void onResume() {
156
+
157
+ super.onResume();
158
+
159
+ mGoogleApiClient.connect();
160
+
161
+ }
162
+
163
+
164
+
165
+ //バックグラウンド移行時に切断処理を行うメソッド
166
+
167
+ @Override
168
+
169
+ protected void onPause() {
170
+
171
+ super.onPause();
172
+
173
+ if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
174
+
175
+ mGoogleApiClient.disconnect();
176
+
177
+ }
178
+
179
+ }
180
+
181
+
182
+
183
+ //接続成功時のメソッド
184
+
185
+ @Override
186
+
187
+ public void onConnected(Bundle bundle) {
188
+
189
+ Log.i(TAG, "onConnected");
190
+
191
+ }
192
+
193
+
194
+
195
+ //接続中断時のメソッド
196
+
197
+ @Override
198
+
199
+ public void onConnectionSuspended(int i) {
200
+
201
+ Log.i(TAG, "onConnectionSuspended");
202
+
203
+ }
204
+
205
+
206
+
207
+ //接続失敗時のメソッド
208
+
209
+ @Override
210
+
211
+ public void onConnectionFailed(ConnectionResult connectionResult) {
212
+
213
+ Log.i(TAG, "onConnectionFailed");
214
+
215
+ }
216
+
217
+
218
+
219
+ @Override
220
+
221
+ public void onClick(View v) {
222
+
223
+ switch (v.getId()) {
224
+
225
+
226
+
227
+ case R.id.send:
228
+
229
+ // 配列のデータ送信
230
+
231
+ sendArrayUsingDataApi(c_code[0].toString());
232
+
55
- ....中略
233
+ break;
234
+
235
+ }
236
+
237
+ }
238
+
239
+ }
240
+
241
+ //Data Apiを用いた配列データ送信処理
242
+
243
+ private void sendArrayUsingDataApi(String array) {
244
+
245
+ PutDataMapRequest putDataMapReq = PutDataMapRequest.create(Config.DATA_PATH2);
246
+
247
+ putDataMapReq.getDataMap().putString(Config.KEY_DATA2, array);
248
+
249
+ PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
250
+
251
+ Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq);
252
+
253
+ }
56
254
 
57
255
  }
58
256
 
59
- @Override
60
-
61
- public void onClick(View v) {
62
-
63
- switch (v.getId()) {
64
-
65
- case R.id.send:
66
-
67
- // 配列タ送信
68
-
69
- for (int i=0;i < c_code.length;i++) {
70
-
71
- sendArrayUsingDataApi(c_code[i].toString());
72
-
73
- sendArrayUsingDataApi(c_name[i].toString());
257
+ ```
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+ ///////////Wear側Javaコド//////////////
266
+
267
+
268
+
269
+ ```
270
+
271
+ public class KadaiList extends Activity
272
+
273
+ implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
274
+
275
+
276
+
277
+ private static final String TAG = "Wear#Main";
278
+
279
+ // GoogleApiクライエント
280
+
281
+ private GoogleApiClient mGoogleApiClient = null;
282
+
283
+ private WearableListView mListView;
284
+
285
+ private TextView text;
286
+
287
+
288
+
289
+ @Override
290
+
291
+ protected void onCreate(Bundle savedInstanceState) {
292
+
293
+ super.onCreate(savedInstanceState);
294
+
295
+ setContentView(R.layout.activity_kadai_list);
296
+
297
+
298
+
299
+ text = (TextView)findViewById(R.id.text1);
300
+
301
+
302
+
303
+ mGoogleApiClient = new GoogleApiClient
304
+
305
+ .Builder(this)
306
+
307
+ .addApi(Wearable.API)
308
+
309
+ //接続成功と中断を監視するリスナーを登録
310
+
311
+ .addConnectionCallbacks(this)
312
+
313
+ //接続失敗を監視するリスナーを登録
314
+
315
+ .addOnConnectionFailedListener(this)
316
+
317
+ .build();
318
+
319
+
320
+
321
+ }
322
+
323
+
324
+
325
+ //フォアグラウンドに移行したタイミングで接続処理を行うメソッド
326
+
327
+ @Override
328
+
329
+ protected void onResume() {
330
+
331
+ super.onResume();
332
+
333
+ mGoogleApiClient.connect();
334
+
335
+ }
336
+
337
+
338
+
339
+ //接続成功時のメソッド
340
+
341
+ @Override
342
+
343
+ public void onConnected(Bundle bundle) {
344
+
345
+ Log.i(TAG, "onConnected");
346
+
347
+ Wearable.DataApi.addListener(mGoogleApiClient, this);
348
+
349
+ }
350
+
351
+
352
+
353
+ //バックグラウンド移行時に切断処理を行うメソッド
354
+
355
+ @Override
356
+
357
+ protected void onPause() {
358
+
359
+ super.onPause();
360
+
361
+ if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
362
+
363
+ Wearable.DataApi.removeListener(mGoogleApiClient, this);
364
+
365
+ mGoogleApiClient.disconnect();
366
+
367
+ }
368
+
369
+ }
370
+
371
+
372
+
373
+ //接続中断時のメソッド
374
+
375
+ @Override
376
+
377
+ public void onConnectionSuspended(int i) {
378
+
379
+ Log.i(TAG, "onConnectionSuspended");
380
+
381
+ }
382
+
383
+
384
+
385
+ //接続失敗時のメソッド
386
+
387
+ @Override
388
+
389
+ public void onConnectionFailed(ConnectionResult connectionResult) {
390
+
391
+ Log.i(TAG, "onConnectionFailed");
392
+
393
+ }
394
+
395
+
396
+
397
+ //Data Apiにより共有するデータの内容が変更されると呼ばれる
398
+
399
+ @Override
400
+
401
+ public void onDataChanged(DataEventBuffer dataEvents) {
402
+
403
+ for (DataEvent event : dataEvents) {
404
+
405
+ if (event.getType() == DataEvent.TYPE_CHANGED) {
406
+
407
+ DataItem item = event.getDataItem();
408
+
409
+ if (item.getUri().getPath().equals(Config.DATA_PATH1)) {
410
+
411
+ final DataMap dataMap1 = DataMapItem.fromDataItem(item).getDataMap();
412
+
413
+ runOnUiThread(new Runnable() {
414
+
415
+ @Override
416
+
417
+ public void run() {
418
+
419
+ //Handheldで入力された文字に書き換える
420
+
421
+ text.setText(dataMap1.getString(Config.KEY_DATA1));
422
+
423
+ }
424
+
425
+ });
74
426
 
75
427
  }
76
428
 
429
+ else if (item.getUri().getPath().equals(Config.DATA_PATH2)) {
430
+
431
+ final DataMap dataMap2 = DataMapItem.fromDataItem(item).getDataMap();
432
+
433
+ runOnUiThread(new Runnable() {
434
+
77
- break;
435
+ @Override
436
+
78
-
437
+ public void run() {
438
+
439
+ //Handheldで表示されてる科目一覧を取得(配列)し、表示する
440
+
441
+ mListView = (WearableListView) findViewById(R.id.wearable_list);
442
+
443
+ mListView.setAdapter(new MyListAdapter(getApplicationContext(),
444
+
445
+ dataMap2.getStringArrayList(Config.KEY_DATA2)));
446
+
79
- }
447
+ }
448
+
80
-
449
+ });
450
+
81
- }
451
+ }
452
+
82
-
453
+ }
454
+
455
+ else if (event.getType() == DataEvent.TYPE_DELETED) {
456
+
457
+
458
+
459
+ }
460
+
461
+ }
462
+
463
+ }
464
+
465
+
466
+
83
- //Data Apiを用いた配列データ送信処理
467
+ // Adapterセットする時に使するクラス
468
+
84
-
469
+ private class MyListAdapter extends WearableListView.Adapter {
470
+
471
+
472
+
473
+ private LayoutInflater mInflater;
474
+
85
- private void sendArrayUsingDataApi(String array) {
475
+ private List<String> mItems = null;
86
-
87
- PutDataMapRequest putDataMapReq = PutDataMapRequest.create(Config.DATA_PATH2);
476
+
88
-
89
- putDataMapReq.getDataMap().putString(Config.KEY_DATA2, array);
477
+
90
-
91
- PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
478
+
92
-
93
- Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq);
479
+ public MyListAdapter(Context context, List items) {
480
+
481
+ super();
482
+
483
+ mInflater = LayoutInflater.from(context);
484
+
485
+ mItems = items;
486
+
487
+ }
488
+
489
+
490
+
491
+ @Override
492
+
493
+ public WearableListView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
494
+
495
+ return new MyViewHolder(mInflater.inflate(R.layout.list_item_main, null));
496
+
497
+ }
498
+
499
+
500
+
501
+ @Override
502
+
503
+ public void onBindViewHolder(WearableListView.ViewHolder viewHolder, int position) {
504
+
505
+ MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
506
+
507
+ myViewHolder.text.setText(mItems.get(position));
508
+
509
+ }
510
+
511
+
512
+
513
+ @Override
514
+
515
+ public int getItemCount() {
516
+
517
+ return mItems.size();
518
+
519
+ }
520
+
521
+ }
522
+
523
+
524
+
525
+ private static class MyViewHolder extends WearableListView.ViewHolder {
526
+
527
+ public TextView text;
528
+
529
+
530
+
531
+ public MyViewHolder(View v) {
532
+
533
+ super(v);
534
+
535
+ text = (TextView) v.findViewById(R.id.name);
536
+
537
+ }
94
538
 
95
539
  }
96
540
 
@@ -100,84 +544,6 @@
100
544
 
101
545
 
102
546
 
103
-
104
-
105
-
106
-
107
- ///////////Wear側のJavaコード//////////////
108
-
109
-
110
-
111
- ```
112
-
113
- public class KadaiList extends Activity
114
-
115
- implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
116
-
117
-
118
-
119
- @Override
120
-
121
- protected void onCreate(Bundle savedInstanceState) {
122
-
123
- super.onCreate(savedInstanceState);
124
-
125
- setContentView(R.layout.activity_kadai_list);
126
-
127
- }
128
-
129
- //Data Apiにより送信されたデータを取得し、ListViewで一覧表示
130
-
131
- @Override
132
-
133
- public void onDataChanged(DataEventBuffer dataEvents) {
134
-
135
- for (DataEvent event : dataEvents) {
136
-
137
- if (event.getType() == DataEvent.TYPE_CHANGED) {
138
-
139
- DataItem item = event.getDataItem();
140
-
141
- if (item.getUri().getPath().equals(Config.DATA_PATH2)) {
142
-
143
- final DataMap dataMap2 = DataMapItem.fromDataItem(item).getDataMap();
144
-
145
- runOnUiThread(new Runnable() {
146
-
147
- @Override
148
-
149
- public void run() {
150
-
151
- //Handheldで表示されてる科目一覧を取得(配列)
152
-
153
- mListView = (WearableListView) findViewById(R.id.wearable_list);
154
-
155
- mListView.setAdapter(new MyListAdapter(getApplicationContext(),
156
-
157
- dataMap2.getDataMapArrayList(Config.KEY_DATA2)));
158
-
159
- }
160
-
161
- });
162
-
163
- }
164
-
165
- } else if (event.getType() == DataEvent.TYPE_DELETED) {
166
-
167
-
168
-
169
- }
170
-
171
- }
172
-
173
- }
174
-
175
- ```
176
-
177
-
178
-
179
-
180
-
181
547
  ###試したこと
182
548
 
183
549
  まずこの時点でエラーは出てないです。おそらく間違っている所はHandheld側Javaコードの、配列のデータ送信をしようとしたコードです(sendArrayUsingDataApi(c_code[i].toString()); )。自分が作ったsendArrayUsingDataApi関数が配列を入れるような形じゃないと思われます。

2

コード修正

2017/02/03 12:40

投稿

Yochan
Yochan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,8 @@
15
15
  ///////////Handheld側のJavaコード//////////////
16
16
 
17
17
 
18
+
19
+ ```
18
20
 
19
21
  public class MainActivity extends AppCompatActivity
20
22
 
@@ -94,11 +96,19 @@
94
96
 
95
97
  }
96
98
 
99
+ ```
100
+
101
+
102
+
103
+
104
+
97
105
 
98
106
 
99
107
  ///////////Wear側のJavaコード//////////////
100
108
 
101
109
 
110
+
111
+ ```
102
112
 
103
113
  public class KadaiList extends Activity
104
114
 
@@ -162,6 +172,12 @@
162
172
 
163
173
  }
164
174
 
175
+ ```
176
+
177
+
178
+
179
+
180
+
165
181
  ###試したこと
166
182
 
167
183
  まずこの時点でエラーは出てないです。おそらく間違っている所はHandheld側Javaコードの、配列のデータ送信をしようとしたコードです(sendArrayUsingDataApi(c_code[i].toString()); )。自分が作ったsendArrayUsingDataApi関数が配列を入れるような形じゃないと思われます。

1

説明が下手くそですいません

2017/02/03 12:26

投稿

Yochan
Yochan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
1
  ###前提・実現したいこと
2
+
3
+ 自分はプログラミング初心者です。説明が下手くそ(日本語も下手くそ)なのはご了承してください。
4
+
5
+
2
6
 
3
7
  Android Studio(Java)でListView(配列に表示させる内容を入れてます)を用いてHandheldに一覧表示させ、次にDataApiを用いてwearにその配列データを送りたいです。wearに配列データを送る方法がわかりません。
4
8