回答編集履歴

2

コードちょっと修正

2017/12/01 12:30

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -120,9 +120,9 @@
120
120
 
121
121
  ```Java
122
122
 
123
- final Button button2 = (Button) findViewById(R.id.button2);
123
+ final Button button2 = findViewById(R.id.button2);
124
124
 
125
- final Button button3 = (Button) findViewById(R.id.button3);
125
+ final Button button3 = findViewById(R.id.button3);
126
126
 
127
127
  button3.setEnabled(false); // STOPボタンをグレーアウトして無効化する
128
128
 

1

追記

2017/12/01 12:29

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -95,3 +95,103 @@
95
95
 
96
96
 
97
97
  とりあえずこの辺りまで取り組んで検証してみては?
98
+
99
+
100
+
101
+ ---
102
+
103
+
104
+
105
+ (12/01 20:50 追記)
106
+
107
+
108
+
109
+ 測定開始はSensorManager#registerListener、測定停止はSensorManager#unregisterListenerで行えます。ですから、これをSTARTボタンとSTOPボタンを押したときのそれぞれで実行すればいいでしょう。ついでにHandlerで行っている描画処理もHandler#removeCallbacksで止めておきましょう。
110
+
111
+
112
+
113
+ それから、画面が閉じられたときもSTOPボタンを押したときと同じように測定とHandlerを止めておいた方がいいでしょう。そのためにonPauseを実装しておきます。
114
+
115
+
116
+
117
+ その代わり、ボタンを押したときに測定開始するのだから、現状のコードにあるonResumeの中身は空っぽにしておきます。
118
+
119
+
120
+
121
+ ```Java
122
+
123
+ final Button button2 = (Button) findViewById(R.id.button2);
124
+
125
+ final Button button3 = (Button) findViewById(R.id.button3);
126
+
127
+ button3.setEnabled(false); // STOPボタンをグレーアウトして無効化する
128
+
129
+
130
+
131
+ button2.setOnClickListener(new View.OnClickListener() {
132
+
133
+    @Override
134
+
135
+    public void onClick(View v) {
136
+
137
+ mSensorManager.registerListener(MainActivity.this, mLinearAcc, SensorManager.SENSOR_DELAY_NORMAL);
138
+
139
+ mSensorManager.registerListener(MainActivity.this, mGyro, SensorManager.SENSOR_DELAY_NORMAL);
140
+
141
+ mHandle.postDelayed(MainActivity.this, 800);
142
+
143
+ button2.setEnabled(false); // STARTボタンを無効化
144
+
145
+ button3.setEnabled(true); // STOPボタンを有効化
146
+
147
+ }
148
+
149
+ });
150
+
151
+ }
152
+
153
+ button3.setOnClickListener(new View.OnClickListener() {
154
+
155
+    @Override
156
+
157
+    public void onClick(View v) {
158
+
159
+ mSensorManager.unregisterListener(MainActivity.this);
160
+
161
+ mHandle.removeCallbacks(MainActivity.this);
162
+
163
+ button2.setEnabled(true); // STARTボタンを有効化
164
+
165
+ button3.setEnabled(false); // STOPボタンを無効化
166
+
167
+ }
168
+
169
+ });
170
+
171
+ }
172
+
173
+
174
+
175
+ @Override
176
+
177
+ protected void onPause() {
178
+
179
+ super.onPause();
180
+
181
+ mSensorManager.unregisterListener(MainActivity.this);
182
+
183
+ mHandle.removeCallbacks(MainActivity.this);
184
+
185
+ }
186
+
187
+
188
+
189
+ @Override
190
+
191
+ protected void onResume() {
192
+
193
+ super.onResume();
194
+
195
+ }
196
+
197
+ ```