質問編集履歴

2

更新

2017/10/26 05:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -439,3 +439,9 @@
439
439
  動画を再生し終えた後、画面には動画の最後のコマが残ったままなのですがこれを消去して描画すればいいのでしょうか?またそのコマの表示を終わらせる関数があれば教えていただきたいです。
440
440
 
441
441
  android開発は初心者なのでご教授ください
442
+
443
+
444
+
445
+
446
+
447
+ drawCanvasをonSensorChangedの中にplayvideoをonCreateの中に書くと動きました。ありがとうございます。

1

変更

2017/10/26 05:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,8 @@
64
64
 
65
65
 
66
66
 
67
+ int a;
68
+
67
69
 
68
70
 
69
71
  SensorManager mSensorManager;
@@ -200,23 +202,13 @@
200
202
 
201
203
  t = t / 1000.0f;
202
204
 
203
- //t1 = t1 + (float)(mTo - mFrom);
205
+
204
206
 
205
207
 
206
208
 
207
209
  if (RADIUS < 119.9f) {
208
210
 
209
- if(t1 < 1730){
211
+
210
-
211
- RADIUS = 0;
212
-
213
- mBallX = mSurfaceWidth / 2;
214
-
215
- mBallY = 0;
216
-
217
- }
218
-
219
- if(t1 > 1730){
220
212
 
221
213
  RADIUS = RADIUS + (mTo - mFrom) * (float) 0.10;
222
214
 
@@ -224,204 +216,208 @@
224
216
 
225
217
  mBallY = mBallY + (mTo - mFrom) * (float) 0.20;
226
218
 
219
+
220
+
227
- }
221
+ }
222
+
223
+
224
+
225
+ float x1 = t * x / 2.0f;
226
+
227
+ float y1 = t * y / 2.0f;
228
+
229
+
230
+
231
+ double xd = 6.0 * x1;
232
+
233
+ double yd = 6.0 * y1;
234
+
235
+
236
+
237
+ float xf = (float) xd;//doubleからfloatの変換
238
+
239
+ float yf = (float) yd;//doubleからfloatの変換
240
+
241
+
242
+
243
+ mBallX = mBallX - xf * COEF;
244
+
245
+ mBallY = mBallY - yf * COEF;
246
+
247
+
248
+
249
+ mFrom = System.currentTimeMillis();//開始時間
250
+
251
+
252
+
253
+ }
254
+
255
+
256
+
257
+ }
258
+
259
+ private void restart(Context cnt, int period){//リセットする関数
260
+
261
+ Intent mainActivity = new Intent(cnt, MainActivity.class);
262
+
263
+ PendingIntent pendingIntent = PendingIntent.getActivity(cnt, 0, mainActivity, PendingIntent.FLAG_CANCEL_CURRENT);
264
+
265
+ AlarmManager alarmManager = (AlarmManager)cnt.getSystemService(Context.ALARM_SERVICE);
266
+
267
+ alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + period, pendingIntent);
268
+
269
+ }
270
+
271
+
272
+
273
+ private void playvideo() {
274
+
275
+ VideoView v = (VideoView)findViewById(R.id.v);
276
+
277
+ // 動画の指定(mp4の読込み)
278
+
279
+ v.setVideoURI(Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.out));
280
+
281
+ // 再生スタート
282
+
283
+ v.start();
284
+
285
+ v.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
286
+
287
+
288
+
289
+ @Override
290
+
291
+ public void onCompletion(MediaPlayer mp) {
292
+
293
+ a = 1;
294
+
295
+ drawCanvas();
228
296
 
229
297
  }
230
298
 
231
-
232
-
233
- float x1 = t * x / 2.0f;
234
-
235
- float y1 = t * y / 2.0f;
236
-
237
-
238
-
239
- double xd = 6.0 * x1;
240
-
241
- double yd = 6.0 * y1;
242
-
243
-
244
-
245
- float xf = (float) xd;//doubleからfloatの変換
246
-
247
- float yf = (float) yd;//doubleからfloat変換
248
-
249
-
250
-
251
- mBallX = mBallX - xf * COEF;
252
-
253
- mBallY = mBallY - yf * COEF;
254
-
255
-
256
-
257
- mFrom = System.currentTimeMillis();//開始時間
258
-
259
-
299
+ });
300
+
301
+ }
302
+
303
+
304
+
305
+
306
+
307
+ private void drawCanvas() {
308
+
309
+ if(a > 0){
310
+
311
+ Canvas c = mHolder.lockCanvas();//サーフェス内のピクセルの編集を開始します.lockで始まりunlockで終わり
312
+
313
+ c.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
314
+
315
+ Paint paint = new Paint();//既定設定で新しいペイントを作成します
316
+
317
+ paint.setColor(Color.WHITE);//1個上のpaintをsetColorでimportのColorを使って白に変える
318
+
319
+ c.drawCircle(mBallX, mBallY, RADIUS, paint);//cというキャンバスにpaintを使って絵を描く
320
+
321
+ mHolder.unlockCanvasAndPost(c);//キャンバス解放
322
+
323
+ }
324
+
325
+ }
326
+
327
+
328
+
329
+ @Override
330
+
331
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
332
+
333
+ }
334
+
335
+
336
+
337
+ @Override
338
+
339
+ protected void onResume() {//Activityが表示された時
340
+
341
+ super.onResume();
342
+
343
+ mSensorManager.registerListener(this, mGSensor, SensorManager.SENSOR_DELAY_GAME);
344
+
345
+ }
346
+
347
+
348
+
349
+ @Override
350
+
351
+ protected void onPause() {
352
+
353
+ super.onPause();
354
+
355
+ mSensorManager.unregisterListener(this);
356
+
357
+ }
358
+
359
+
360
+
361
+
362
+
363
+ @Override
364
+
365
+ public void surfaceCreated//サーフェスが最初に作成された直後に呼び出され
366
+
367
+ (SurfaceHolder holder) {
368
+
369
+ mFrom = System.currentTimeMillis();//開始時間
370
+
371
+ mSensorManager.registerListener(this, mGSensor, SensorManager.SENSOR_DELAY_GAME);
372
+
373
+ playvideo();
374
+
375
+ }
376
+
377
+
378
+
379
+ @Override
380
+
381
+ public void surfaceChanged//サーフェスに構造的な変更(フォーマットまたはサイズ)が行われた直後に呼び出される
382
+
383
+ (SurfaceHolder holder, int format, int width, int height) {//SurfaceHolderホルダー, int形式、,int幅、int height
384
+
385
+ mSurfaceWidth = width;
386
+
387
+ mSurfaceHeight = height;
388
+
389
+ mBallX = width / 2;//開始した時のボールの位置
390
+
391
+ mBallY = 0;//開始した時のボールの位置
392
+
393
+
394
+
395
+ }
396
+
397
+
398
+
399
+ @Override
400
+
401
+ public void surfaceDestroyed(SurfaceHolder holder)//サーフェスが破棄される直前に呼び出される
402
+
403
+ {mSensorManager.unregisterListener(this);
404
+
405
+ }//イベントリスナーの解除
406
+
407
+
408
+
409
+ /*@Override
410
+
411
+ protected void onDestroy() {
412
+
413
+ super.onDestroy();
414
+
415
+ if (player.isPlaying()) {
416
+
417
+ player.stop();
260
418
 
261
419
  }
262
420
 
263
-
264
-
265
- }
266
-
267
- private void restart(Context cnt, int period){//リセットする関数
268
-
269
- Intent mainActivity = new Intent(cnt, MainActivity.class);
270
-
271
- PendingIntent pendingIntent = PendingIntent.getActivity(cnt, 0, mainActivity, PendingIntent.FLAG_CANCEL_CURRENT);
272
-
273
- AlarmManager alarmManager = (AlarmManager)cnt.getSystemService(Context.ALARM_SERVICE);
274
-
275
- alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + period, pendingIntent);
276
-
277
- }
278
-
279
-
280
-
281
- private void playvideo() {
282
-
283
- VideoView v = (VideoView)findViewById(R.id.v);
284
-
285
- // 動画の指定(mp4の読込み)
286
-
287
- v.setVideoURI(Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.out));
288
-
289
- // 再生スタート
290
-
291
- v.start();
292
-
293
- v.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
294
-
295
-
296
-
297
- @Override
298
-
299
- public void onCompletion(MediaPlayer mp) {
300
-
301
-
302
-
303
- drawCanvas();
304
-
305
- }
306
-
307
- });
308
-
309
- }
310
-
311
-
312
-
313
-
314
-
315
- private void drawCanvas() {
316
-
317
- Canvas c = mHolder.lockCanvas();//サーフェス内のピクセルの編集を開始します.lockで始まりunlockで終わり
318
-
319
- c.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
320
-
321
- Paint paint = new Paint();//既定の設定で新しいペイントを作成します
322
-
323
- paint.setColor(Color.WHITE);//1個上のpaintをsetColorでimportのColorを使って白に変える
324
-
325
- c.drawCircle(mBallX, mBallY, RADIUS, paint);//cというキャンバスにpaintを使って絵を描く
326
-
327
- mHolder.unlockCanvasAndPost(c);//キャンバス解放
328
-
329
- }
330
-
331
-
332
-
333
- @Override
334
-
335
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
336
-
337
- }
338
-
339
-
340
-
341
- @Override
342
-
343
- protected void onResume() {//Activityが表示された時
344
-
345
- super.onResume();
346
-
347
- mSensorManager.registerListener(this, mGSensor, SensorManager.SENSOR_DELAY_GAME);
348
-
349
- }
350
-
351
-
352
-
353
- @Override
354
-
355
- protected void onPause() {
356
-
357
- super.onPause();
358
-
359
- mSensorManager.unregisterListener(this);
360
-
361
- }
362
-
363
-
364
-
365
-
366
-
367
- @Override
368
-
369
- public void surfaceCreated//サーフェスが最初に作成された直後に呼び出され
370
-
371
- (SurfaceHolder holder) {
372
-
373
- mFrom = System.currentTimeMillis();//開始時間
374
-
375
- mSensorManager.registerListener(this, mGSensor, SensorManager.SENSOR_DELAY_GAME);
376
-
377
- playvideo();
378
-
379
- }
380
-
381
-
382
-
383
- @Override
384
-
385
- public void surfaceChanged//サーフェスに構造的な変更(フォーマットまたはサイズ)が行われた直後に呼び出される
386
-
387
- (SurfaceHolder holder, int format, int width, int height) {//SurfaceHolderホルダー, int形式、,int幅、int height
388
-
389
- mSurfaceWidth = width;
390
-
391
- mSurfaceHeight = height;
392
-
393
- mBallX = width / 2;//開始した時のボールの位置
394
-
395
- mBallY = 0;//開始した時のボールの位置
396
-
397
-
398
-
399
- }
400
-
401
-
402
-
403
- @Override
404
-
405
- public void surfaceDestroyed(SurfaceHolder holder)//サーフェスが破棄される直前に呼び出される
406
-
407
- {mSensorManager.unregisterListener(this);
408
-
409
- }//イベントリスナーの解除
410
-
411
-
412
-
413
- /*@Override
414
-
415
- protected void onDestroy() {
416
-
417
- super.onDestroy();
418
-
419
- if (player.isPlaying()) {
420
-
421
- player.stop();
422
-
423
- }
424
-
425
421
  player.release();
426
422
 
427
423
  }*/