質問するログイン新規登録

質問編集履歴

3

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

2017/02/03 12:40

投稿

Yochan
Yochan

スコア7

title CHANGED
File without changes
body CHANGED
@@ -11,35 +11,114 @@
11
11
  public class MainActivity extends AppCompatActivity
12
12
  implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, View.OnClickListener{
13
13
 
14
+ private static final String TAG = "Mobile#Main";
15
+
14
- // 配列データ。リストビューに表示する内容
16
+ // リストビューに表示する期限
15
17
  String[] c_code = new String[] {
16
18
  "8/1", "8/2", "8/6", "4/9"
17
19
  };
18
- // 配列データ。リストビューに表示する内容
20
+ // リストビューに表示する科目
19
21
  String[] c_name = new String[] {
20
22
  "国語", "算数", "理科", "社会"
21
23
  };
22
24
 
25
+ // GoogleApiクライエント
26
+ private GoogleApiClient mGoogleApiClient = null;
27
+ private EditText editText = null;
28
+
29
+ // データを格納するためのArrayListを宣言
30
+ private ArrayList<HashMap<String, String>> data
31
+ = new ArrayList<HashMap<String, String>>();
32
+
23
- @Override
33
+ @Override
24
34
  protected void onCreate(Bundle savedInstanceState) {
25
35
  super.onCreate(savedInstanceState);
26
36
  setContentView(R.layout.activity_main);
37
+
38
+ // 課題の数分の繰り返し
39
+ for(int i = 0; i< c_name.length; i++){
40
+ HashMap<String, String> map
41
+ = new HashMap<String, String>();
42
+
43
+ // 提出期限をmapに代入
44
+ map.put("countrycode", c_code[i]);
45
+
46
+ // 科目名をmapに代入
47
+ map.put("countryname", c_name[i]);
48
+
49
+ // 作成したmapをdataに追加
50
+ data.add(map);
27
51
  }
52
+ SimpleAdapter sa
53
+ = new SimpleAdapter(this, data, R.layout.row,
54
+ new String[]{"countrycode", "countryname"},
55
+ new int[]{R.id.countrycode, R.id.countryname}
56
+ );
57
+ // main.xmlのListViewにsaをセットします。
58
+ ListView lv = (ListView)findViewById(R.id.listview);
59
+ lv.setAdapter(sa);
60
+
61
+ //GoogleApiClientのインスタンス生成
62
+ mGoogleApiClient = new GoogleApiClient
63
+ .Builder(this)
64
+ .addApi(Wearable.API)
65
+ //接続成功と中断を監視するリスナーを登録
66
+ .addConnectionCallbacks(this)
67
+ //接続失敗を監視するリスナーを登録
68
+ .addOnConnectionFailedListener(this)
28
- ....中略
69
+ .build();
70
+
71
+ editText = (EditText)findViewById(R.id.editText);
72
+ findViewById(R.id.sendButton).setOnClickListener(this);
73
+ findViewById(R.id.send).setOnClickListener(this);
29
- }
74
+ }
75
+
76
+ //フォアグラウンドに移行したタイミングで接続処理を行うメソッド
30
- @Override
77
+ @Override
78
+ protected void onResume() {
79
+ super.onResume();
80
+ mGoogleApiClient.connect();
81
+ }
82
+
83
+ //バックグラウンド移行時に切断処理を行うメソッド
84
+ @Override
85
+ protected void onPause() {
86
+ super.onPause();
87
+ if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
88
+ mGoogleApiClient.disconnect();
89
+ }
90
+ }
91
+
92
+ //接続成功時のメソッド
93
+ @Override
94
+ public void onConnected(Bundle bundle) {
95
+ Log.i(TAG, "onConnected");
96
+ }
97
+
98
+ //接続中断時のメソッド
99
+ @Override
100
+ public void onConnectionSuspended(int i) {
101
+ Log.i(TAG, "onConnectionSuspended");
102
+ }
103
+
104
+ //接続失敗時のメソッド
105
+ @Override
106
+ public void onConnectionFailed(ConnectionResult connectionResult) {
107
+ Log.i(TAG, "onConnectionFailed");
108
+ }
109
+
110
+ @Override
31
111
  public void onClick(View v) {
32
112
  switch (v.getId()) {
113
+
33
114
  case R.id.send:
34
115
  // 配列のデータ送信
35
- for (int i=0;i < c_code.length;i++) {
36
- sendArrayUsingDataApi(c_code[i].toString());
116
+ sendArrayUsingDataApi(c_code[0].toString());
37
- sendArrayUsingDataApi(c_name[i].toString());
38
- }
39
117
  break;
40
118
  }
41
119
  }
120
+ }
42
- //Data Apiを用いた配列データ送信処理
121
+ //Data Apiを用いた配列データ送信処理
43
122
  private void sendArrayUsingDataApi(String array) {
44
123
  PutDataMapRequest putDataMapReq = PutDataMapRequest.create(Config.DATA_PATH2);
45
124
  putDataMapReq.getDataMap().putString(Config.KEY_DATA2, array);
@@ -57,37 +136,141 @@
57
136
  public class KadaiList extends Activity
58
137
  implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
59
138
 
139
+ private static final String TAG = "Wear#Main";
140
+ // GoogleApiクライエント
141
+ private GoogleApiClient mGoogleApiClient = null;
142
+ private WearableListView mListView;
143
+ private TextView text;
144
+
60
- @Override
145
+ @Override
61
146
  protected void onCreate(Bundle savedInstanceState) {
62
147
  super.onCreate(savedInstanceState);
63
148
  setContentView(R.layout.activity_kadai_list);
149
+
150
+ text = (TextView)findViewById(R.id.text1);
151
+
152
+ mGoogleApiClient = new GoogleApiClient
153
+ .Builder(this)
154
+ .addApi(Wearable.API)
155
+ //接続成功と中断を監視するリスナーを登録
156
+ .addConnectionCallbacks(this)
157
+ //接続失敗を監視するリスナーを登録
158
+ .addOnConnectionFailedListener(this)
159
+ .build();
160
+
64
- }
161
+ }
162
+
65
- //Data Apiより送信されデーを取得し、ListView一覧表示
163
+ //フォアグラウンド移行したタイミング接続処理を行うメソッド
66
164
  @Override
165
+ protected void onResume() {
166
+ super.onResume();
167
+ mGoogleApiClient.connect();
168
+ }
169
+
170
+ //接続成功時のメソッド
171
+ @Override
172
+ public void onConnected(Bundle bundle) {
173
+ Log.i(TAG, "onConnected");
174
+ Wearable.DataApi.addListener(mGoogleApiClient, this);
175
+ }
176
+
177
+ //バックグラウンド移行時に切断処理を行うメソッド
178
+ @Override
179
+ protected void onPause() {
180
+ super.onPause();
181
+ if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
182
+ Wearable.DataApi.removeListener(mGoogleApiClient, this);
183
+ mGoogleApiClient.disconnect();
184
+ }
185
+ }
186
+
187
+ //接続中断時のメソッド
188
+ @Override
189
+ public void onConnectionSuspended(int i) {
190
+ Log.i(TAG, "onConnectionSuspended");
191
+ }
192
+
193
+ //接続失敗時のメソッド
194
+ @Override
195
+ public void onConnectionFailed(ConnectionResult connectionResult) {
196
+ Log.i(TAG, "onConnectionFailed");
197
+ }
198
+
199
+ //Data Apiにより共有するデータの内容が変更されると呼ばれる
200
+ @Override
67
201
  public void onDataChanged(DataEventBuffer dataEvents) {
68
202
  for (DataEvent event : dataEvents) {
69
203
  if (event.getType() == DataEvent.TYPE_CHANGED) {
70
204
  DataItem item = event.getDataItem();
71
- if (item.getUri().getPath().equals(Config.DATA_PATH2)) {
205
+ if (item.getUri().getPath().equals(Config.DATA_PATH1)) {
206
+ final DataMap dataMap1 = DataMapItem.fromDataItem(item).getDataMap();
207
+ runOnUiThread(new Runnable() {
208
+ @Override
209
+ public void run() {
210
+ //Handheldで入力された文字に書き換える
211
+ text.setText(dataMap1.getString(Config.KEY_DATA1));
212
+ }
213
+ });
214
+ }
215
+ else if (item.getUri().getPath().equals(Config.DATA_PATH2)) {
72
216
  final DataMap dataMap2 = DataMapItem.fromDataItem(item).getDataMap();
73
217
  runOnUiThread(new Runnable() {
74
218
  @Override
75
219
  public void run() {
76
- //Handheldで表示されてる科目一覧を取得(配列)
220
+ //Handheldで表示されてる科目一覧を取得(配列)し、表示する
77
221
  mListView = (WearableListView) findViewById(R.id.wearable_list);
78
222
  mListView.setAdapter(new MyListAdapter(getApplicationContext(),
79
- dataMap2.getDataMapArrayList(Config.KEY_DATA2)));
223
+ dataMap2.getStringArrayList(Config.KEY_DATA2)));
80
224
  }
81
225
  });
82
226
  }
227
+ }
83
- } else if (event.getType() == DataEvent.TYPE_DELETED) {
228
+ else if (event.getType() == DataEvent.TYPE_DELETED) {
84
229
 
85
230
  }
86
231
  }
87
232
  }
233
+
234
+ // Adapterをセットする時に使用するクラス
235
+ private class MyListAdapter extends WearableListView.Adapter {
236
+
237
+ private LayoutInflater mInflater;
238
+ private List<String> mItems = null;
239
+
240
+ public MyListAdapter(Context context, List items) {
241
+ super();
242
+ mInflater = LayoutInflater.from(context);
243
+ mItems = items;
244
+ }
245
+
246
+ @Override
247
+ public WearableListView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
248
+ return new MyViewHolder(mInflater.inflate(R.layout.list_item_main, null));
249
+ }
250
+
251
+ @Override
252
+ public void onBindViewHolder(WearableListView.ViewHolder viewHolder, int position) {
253
+ MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
254
+ myViewHolder.text.setText(mItems.get(position));
255
+ }
256
+
257
+ @Override
258
+ public int getItemCount() {
259
+ return mItems.size();
260
+ }
261
+ }
262
+
263
+ private static class MyViewHolder extends WearableListView.ViewHolder {
264
+ public TextView text;
265
+
266
+ public MyViewHolder(View v) {
267
+ super(v);
268
+ text = (TextView) v.findViewById(R.id.name);
269
+ }
270
+ }
271
+ }
88
272
  ```
89
273
 
90
-
91
274
  ###試したこと
92
275
  まずこの時点でエラーは出てないです。おそらく間違っている所はHandheld側Javaコードの、配列のデータ送信をしようとしたコードです(sendArrayUsingDataApi(c_code[i].toString()); )。自分が作ったsendArrayUsingDataApi関数が配列を入れるような形じゃないと思われます。
93
276
  Wear側のJavaコードの、送られてきた配列データを表示させようとしてるところも怪しいです。

2

コード修正

2017/02/03 12:40

投稿

Yochan
Yochan

スコア7

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,7 @@
7
7
  ###該当のソースコード
8
8
  ///////////Handheld側のJavaコード//////////////
9
9
 
10
+ ```
10
11
  public class MainActivity extends AppCompatActivity
11
12
  implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, View.OnClickListener{
12
13
 
@@ -46,9 +47,13 @@
46
47
  Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq);
47
48
  }
48
49
  }
50
+ ```
49
51
 
52
+
53
+
50
54
  ///////////Wear側のJavaコード//////////////
51
55
 
56
+ ```
52
57
  public class KadaiList extends Activity
53
58
  implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
54
59
 
@@ -80,6 +85,9 @@
80
85
  }
81
86
  }
82
87
  }
88
+ ```
89
+
90
+
83
91
  ###試したこと
84
92
  まずこの時点でエラーは出てないです。おそらく間違っている所はHandheld側Javaコードの、配列のデータ送信をしようとしたコードです(sendArrayUsingDataApi(c_code[i].toString()); )。自分が作ったsendArrayUsingDataApi関数が配列を入れるような形じゃないと思われます。
85
93
  Wear側のJavaコードの、送られてきた配列データを表示させようとしてるところも怪しいです。

1

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

2017/02/03 12:26

投稿

Yochan
Yochan

スコア7

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