質問編集履歴

5

コード修正

2015/02/11 04:33

投稿

naia
naia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- 【2月9日13:33追記
75
+ 【2月11日13:33更新
76
76
 
77
77
  以下のプログラムは指定された時間になると音を鳴らすというものです
78
78
 
@@ -82,586 +82,720 @@
82
82
 
83
83
 
84
84
 
85
- ```lang-package sample.android.usingview;
85
+ ```lang-import java.applet.Applet;
86
+
87
+ import java.applet.AudioClip;
88
+
89
+ import java.awt.Color;
90
+
91
+ import java.awt.Font;
92
+
93
+ import java.awt.Graphics;
94
+
95
+ import java.awt.Image;
96
+
97
+ import java.io.IOException;
98
+
99
+ import java.nio.charset.Charset;
100
+
101
+ import java.nio.file.Files;
102
+
103
+ import java.nio.file.Paths;
104
+
105
+ import java.util.ArrayList;
86
106
 
87
107
  import java.util.Calendar;
88
108
 
89
-
90
-
91
- import android.content.Context;
92
-
93
- import android.graphics.Canvas;
94
-
95
- import android.graphics.Color;
96
-
97
- import android.graphics.Paint;
98
-
99
- import android.graphics.Rect;
100
-
101
- import android.media.MediaPlayer;
102
-
103
- import android.view.View;
104
-
105
-
106
-
107
-
108
-
109
- class SampleView extends View {
110
-
111
- Paint paint = new Paint();
112
-
113
-
114
-
115
- //音楽ファイルの読み込み
116
-
117
- MediaPlayer chime = MediaPlayer.create(getContext(), R.raw.test);
118
-
119
-
120
-
121
-
122
-
123
- static int h;
124
-
125
- static int m;
126
-
127
- static int s;
109
+ import java.util.List;
110
+
111
+
112
+
113
+
114
+
115
+ public class Javatokei extends Applet
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+ implements
128
+
129
+ Runnable
130
+
131
+ {
132
+
133
+ static final int DIM = 2; // DIM 要素の配列 を 1 つの要素にする
134
+
135
+
136
+
137
+
138
+
139
+ // 基準時刻
140
+
141
+ int kizyunZikoku[][] = {
142
+
143
+ { 9, 0 }, { 9, 55 },
144
+
145
+ { 10, 0 }, { 10, 55 },
146
+
147
+ { 11, 0 }, { 12, 0 },
148
+
149
+ { 12, 40 }, { 13, 40 },
150
+
151
+ { 13, 45 }, { 14, 45 },
152
+
153
+ { 14, 50 }, { 16, 0 }
154
+
155
+ };
156
+
157
+
158
+
159
+
160
+
161
+ static int h;
162
+
163
+ static int m;
164
+
165
+ static int s;
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ // デフォルトフレームサイズ
174
+
175
+ private int width = 640;
176
+
177
+ private int height = 480;
178
+
179
+
180
+
181
+
182
+
183
+ int A = 640;
184
+
185
+ int B = 0;
186
+
187
+ int C = 0;
188
+
189
+ int D = 0;
190
+
191
+ int E = 0;
192
+
193
+ int X1 = 0;
194
+
195
+ int X2 = 640;
196
+
197
+ int Y1 = 150;
198
+
199
+ int Y2 = 250;
200
+
201
+ int mm;
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ int kizyunZikokuNoKazu = 17;
212
+
213
+
214
+
215
+ boolean a = true;
216
+
217
+ boolean saisyoNoFureemuDeAru = true;
218
+
219
+ int maeNiOtoWoNarasitaZikantai = -1;
220
+
221
+ int zenntai = 7 * 60;
222
+
223
+ int F;
224
+
225
+
226
+
227
+ //全体を表すゲージ
228
+
229
+ int NowJikann = zenntai; //現在の残り時間
230
+
231
+ int Width = 480;
232
+
233
+ double G;
234
+
235
+
236
+
237
+ //時刻の設定
238
+
239
+ int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
240
+
241
+ int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+ //時間に合わせてメッセージが変わる
252
+
253
+ String messages[] = {
254
+
255
+ "",
256
+
257
+ " ",
258
+
259
+ " ",
260
+
261
+ " ",
262
+
263
+ " ",
264
+
265
+ " ", // 5
266
+
267
+ " ",
268
+
269
+ " ",
270
+
271
+ "おはようござます",
272
+
273
+ "おはようございます",
274
+
275
+ "今日も一日頑張りましょう!", // 10
276
+
277
+ "もうすぐお昼休みだ!",
278
+
279
+ "休憩時間です!",
280
+
281
+ "午後も頑張りましょう",
282
+
283
+ "こんにちは",
284
+
285
+ "残り1時間をきりました", // 15
286
+
287
+ "お疲れ様でした",
288
+
289
+ "お疲れ様でした"
290
+
291
+ };
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+ static Image OffBuf;
304
+
305
+
306
+
307
+ Thread th = null;
308
+
309
+ int delay = 100;
310
+
311
+
312
+
313
+ public void init() {
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+ }
322
+
323
+
324
+
325
+ public void paint(Graphics g) {
326
+
327
+ OffBuf = createImage(640, 480);
328
+
329
+ Graphics OffG;//グラフィックス型変数を宣言
330
+
331
+ OffG = OffBuf.getGraphics();
332
+
333
+
334
+
335
+ OffG.clearRect(0,0,getSize().width,getSize().height); //オフスクリーンの初期化
336
+
337
+ /////////////////////////////////////////////////////
338
+
339
+ //全体のゲージが徐々に減っていく
340
+
341
+ // 棒グラフのパラメータを設定する
342
+
343
+ OffG.setColor( Color.GREEN );
344
+
345
+ OffG.fillRect( 0, 420, 640, 480 );
346
+
347
+ G = ( zenntai - F ) * width / zenntai;
348
+
349
+ OffG.setColor( Color.PINK );
350
+
351
+ OffG.fillRect( 0, 420, (int)G, 640 );
352
+
353
+ //デバッグ用 変数G
354
+
355
+ OffG.drawString("デバッグ用"+ G +"" , 60, 80 );//邨碁℃譎る俣
356
+
357
+
358
+
359
+ ////////////////////////////////////////////////////
360
+
361
+
362
+
363
+ //ゲージ
364
+
365
+ OffG.setColor( Color.GREEN );
366
+
367
+ OffG.fillRoundRect(0, 100, 640, 71, 5, 10);
368
+
369
+ int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
370
+
371
+ OffG.setColor( Color.PINK );
372
+
373
+ OffG.fillRoundRect(0, 100, geeziNoKawarime, 71, 5, 10);
374
+
375
+ OffG.setColor( Color.PINK );
376
+
377
+ Font font = new Font("TimesRoman",Font.ITALIC,42);
378
+
379
+ OffG.setFont( font );
380
+
381
+ OffG.drawString( "経過時間", 25, 300 );
382
+
383
+ OffG.drawString("" + m +"分", 70, 250 );//邨碁℃譎る俣
384
+
385
+ OffG.setColor( Color.BLACK );
386
+
387
+ OffG.drawString( "/全体の時間/",200, 300 );
388
+
389
+ OffG.drawString( "" + E + "分", 350, 250 );
390
+
391
+ OffG.setColor( Color.GREEN );
392
+
393
+ D += 1;
394
+
395
+ OffG.drawString( "残り時間",450, 300 );
396
+
397
+ OffG.drawString("" + D +"分", 500, 250 );//残り時間
398
+
399
+ OffG.setColor( Color.BLACK );
400
+
401
+
402
+
403
+ // 午前 午後
404
+
405
+ int jikann;
406
+
407
+ int gogo;
408
+
409
+
410
+
411
+ if ( h >= 13){
412
+
413
+ jikann = h - 12;
414
+
415
+ gogo = 1;
416
+
417
+ }
418
+
419
+ else{
420
+
421
+ jikann = h;
422
+
423
+ gogo = 0;
424
+
425
+ }
426
+
427
+
428
+
429
+
430
+
431
+ if( gogo == 1){
432
+
433
+ OffG.drawString( "午後"+jikann+"時"+mm+"分", 300,350 );
434
+
435
+ }else{
436
+
437
+ OffG.drawString( "午前"+h+"時"+mm+"分", 300,350 );
438
+
439
+ }
440
+
441
+ OffG.setColor( Color.BLACK );
442
+
443
+ OffG.drawString( "全体の残り時間"+F+"分", 100,400 );
444
+
445
+
446
+
447
+
448
+
449
+ //メッセージ
450
+
451
+ if (1 <= h && h <= 17) {
452
+
453
+ OffG.drawString(messages[h], 0, 30);
454
+
455
+ }
456
+
457
+ g.drawImage(OffBuf, 0, 0, this);
458
+
459
+
460
+
461
+
462
+
463
+ //時間を取得する
464
+
465
+ Calendar now = Calendar.getInstance();
466
+
467
+ h = now.get(now.HOUR_OF_DAY); //時
468
+
469
+ m = now.get(now.MINUTE); //分
470
+
471
+ s= now.get(now.SECOND); //秒
472
+
473
+ mm=now.get(now.MINUTE); //時間表示用
474
+
475
+
476
+
477
+ //
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+ // その基準時刻と次の基準時刻の間でゲージを動かすか
494
+
495
+ boolean zikanWoHyouziSuru[] = {
496
+
497
+ true, true,
498
+
499
+ true, true,
500
+
501
+ true, true,
502
+
503
+ true, true,
504
+
505
+ true, true,
506
+
507
+ true, true
508
+
509
+ };
510
+
511
+
512
+
513
+ // 今の時刻がどこに該当するかを計算する
514
+
515
+ int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
516
+
517
+ int maeNoKizyunZikoku = 0;
518
+
519
+ int tugiNoKizyunZikoku = 0;
520
+
521
+ int imaNoZikantai = -1;
522
+
523
+ for (int i = 0; i < 12; i++) {
524
+
525
+ int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
526
+
527
+ if (imaNoZikoku < miteiruKizyunZikoku) {
528
+
529
+ if (i > 0) {
530
+
531
+ imaNoZikantai = i - 1;
532
+
533
+ maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
534
+
535
+ tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
536
+
537
+ }
538
+
539
+ break;
540
+
541
+ }
542
+
543
+ }
544
+
545
+ if (saisyoNoFureemuDeAru) {
546
+
547
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
548
+
549
+ saisyoNoFureemuDeAru = false;
550
+
551
+ }
552
+
553
+
554
+
555
+ // 経過時間と残り時間を計算し。ゲージのパラメータを設定する
556
+
557
+ if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
558
+
559
+ // 表示する時間
560
+
561
+ m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
562
+
563
+ E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
564
+
565
+ D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
566
+
567
+ //ゲージのパラメータ
568
+
569
+ A = tugiNoKizyunZikoku;
570
+
571
+ B = maeNoKizyunZikoku;
572
+
573
+ C = imaNoZikoku;
574
+
575
+ }
576
+
577
+ else {
578
+
579
+ // 表示する時間
580
+
581
+ m = 99;
582
+
583
+ E = 99;
584
+
585
+ D = 99;
586
+
587
+ // ゲージのパラメータ
588
+
589
+ A = 640;
590
+
591
+ B = 0;
592
+
593
+ C = 0;
594
+
595
+ }
596
+
597
+
598
+
599
+ // 全体の残り時間を計算する
600
+
601
+ if (imaNoZikoku < hazimariNoZikoku) {
602
+
603
+ // 始まっていない
604
+
605
+ F = 60 * zenntai;
606
+
607
+ }
608
+
609
+ else if (owariNoZikoku < imaNoZikoku) {
610
+
611
+ // 終わった後
612
+
613
+ F = 0;
614
+
615
+ }
616
+
617
+ else {
618
+
619
+ // 実行中
620
+
621
+ F = owariNoZikoku - imaNoZikoku;
622
+
623
+ }
624
+
625
+ // 棒グラフのパラメータを設定する
626
+
627
+ G = F * Width / (60 * zenntai);
628
+
629
+ // 谿九j譎る俣繧貞�縺ォ螟画鋤縺吶k
630
+
631
+ F = (F + 59) / 60;
632
+
633
+
634
+
635
+ // 情報が正しくなるように補正する
636
+
637
+ if (imaNoZikoku % 60 == 0) D--;
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+ if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
650
+
651
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
652
+
653
+ if (imaNoZikantai >= 0) {
654
+
655
+ //音を鳴らす
656
+
657
+ PutSound();
658
+
659
+ }
660
+
661
+ }
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+ }
674
+
675
+
676
+
677
+ public void update(Graphics g) {
678
+
679
+ paint(g);
680
+
681
+ }
682
+
683
+
684
+
685
+ public void start() {
686
+
687
+ th = new Thread(this);
688
+
689
+ th.start();
690
+
691
+ }
692
+
693
+
694
+
695
+ public void stop() {
696
+
697
+ th = null;
698
+
699
+ }
700
+
701
+
702
+
703
+ public void run() {
704
+
705
+ Thread me = Thread.currentThread();
706
+
707
+ while (th == me) {
708
+
709
+ try{
710
+
711
+ Thread.currentThread().sleep(delay);
712
+
713
+ }catch (InterruptedException e) {
714
+
715
+ }
716
+
717
+ repaint();
718
+
719
+ }
720
+
721
+ }
722
+
723
+
724
+
725
+ public static void PutSound(){
726
+
727
+ AudioClip ac = null;
728
+
729
+ ac = java.applet.Applet.newAudioClip(Javatokei.class.getResource("test.wav"));
730
+
731
+ // XXXXX はクラス名。Minipro.java の場合は Minipro。
732
+
733
+ ac.play();
734
+
735
+ /* 500ミリ秒待機する */
736
+
737
+ try{
738
+
739
+ Thread.sleep(12000);
740
+
741
+ }catch (InterruptedException e){
742
+
743
+ }
744
+
745
+ }
746
+
747
+ public static int[][] loadIntArray(final String filename, final int dim) throws IOException {
748
+
749
+ List<int[]> nums = new ArrayList<int[]>();
750
+
751
+
752
+
753
+ //Files クラスを使用してファイルを行単位に読み込む。
754
+
755
+ List<String> line = Files.readAllLines(Paths.get(filename), Charset.forName("UTF-8"));
756
+
757
+
758
+
759
+ int pos = 0;
760
+
761
+ int[] vals = new int[dim];
762
+
763
+ for (String s : line) {
764
+
765
+ vals[pos % dim] = Integer.parseInt(s);
766
+
767
+ pos++;
768
+
769
+ if (pos % dim == 0) {
770
+
771
+ nums.add(vals);
772
+
773
+ vals = new int[dim];
774
+
775
+ }
776
+
777
+ }
778
+
779
+ if (pos % dim != 0) {
780
+
781
+ nums.add(vals);
782
+
783
+ }
784
+
785
+ return (int[][]) nums.toArray(new int[0][dim]);
786
+
787
+ }
128
788
 
129
789
 
130
790
 
131
- static int animetion = 0;
791
+
132
-
133
-
134
-
135
- // デフォルトフレームサイズ
136
-
137
- private int width = 800;
138
-
139
- private int height = 480;
140
-
141
-
142
-
143
-
144
-
145
- int A = width;
146
-
147
- int B = 0;
148
-
149
- int C = 0;
150
-
151
- int D = 0;
152
-
153
- int E = 0;
154
-
155
- int X1 = 0;
156
-
157
- int X2 = width;
158
-
159
- int Y1 = 150;
160
-
161
- int Y2 = 250;
162
-
163
- int mm;
164
-
165
-
166
-
167
- int kizyunZikokuNoKazu = 17;
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
- boolean a = true;
176
-
177
- boolean saisyoNoFureemuDeAru = true;
178
-
179
- int maeNiOtoWoNarasitaZikantai = -1;
180
-
181
-
182
-
183
- boolean greenflag = true;
184
-
185
-
186
-
187
- int zenntai = 7 * 60;
188
-
189
- int F;// 今の時間
190
-
191
-
192
-
193
- //全体を表すゲージ
194
-
195
- int NowJikann = zenntai; //現在の残り時間
196
-
197
- int Width = 480;
198
-
199
- double G;
200
-
201
-
202
-
203
- //譎ょ綾縺ョ險ュ螳?
204
-
205
- int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
206
-
207
- int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
208
-
209
-
210
-
211
-
212
-
213
- //時間に合わせてメッセージが変わる
214
-
215
- String messages[] = {
216
-
217
- "",
218
-
219
- " ",
220
-
221
- " ",
222
-
223
- " ",
224
-
225
- " ",
226
-
227
- " ", // 5
228
-
229
- " ",
230
-
231
- " ",
232
-
233
- "おはようござます",
234
-
235
- "おはようございます",
236
-
237
- "今日も一日頑張りましょう!", // 10
238
-
239
- "もうすぐお昼休みだ!",
240
-
241
- "休憩時間です!",
242
-
243
- "午後も頑張りましょう",
244
-
245
- "こんにちは",
246
-
247
- "残り1時間をきりました", // 15
248
-
249
- "お疲れ様でした",
250
-
251
- "お疲れ様でした"
252
-
253
- };
254
-
255
-
256
-
257
- public SampleView(Context context) {
258
-
259
- super(context);
260
-
261
- }
262
-
263
-
264
-
265
- @Override
266
-
267
- public void onDraw(Canvas c) {
268
-
269
-
270
-
271
- Paint paint = new Paint();
272
-
273
- paint.setStrokeWidth(2);//太さを2に
274
-
275
- paint.setColor(Color.argb(255, 255, 0, 0));//赤セット
276
-
277
- //文字の描画
278
-
279
- Paint p = new Paint();
280
-
281
- p.setARGB(255,100,100,255);
282
-
283
- p.setTextSize(64);
284
-
285
- p.setAntiAlias(true);
286
-
287
-
288
-
289
-
290
-
291
-
292
-
293
- ///////////////
294
-
295
- //全体のゲージ
296
-
297
- ///////////////
298
-
299
- p.setColor( Color.GREEN );
300
-
301
- c.drawRect( 0, 300, width, 480, p );
302
-
303
- G = ( zenntai - F ) * width / zenntai;
304
-
305
- p.setColor( Color.RED );
306
-
307
- c.drawRect( 0, 300, (int)G, 480, p );
308
-
309
-
310
-
311
- /////////////
312
-
313
- //セクションごとのゲージ
314
-
315
- ///////////////////////
316
-
317
-
318
-
319
- p.setColor( Color.GREEN );
320
-
321
- c.drawRect(0, 0, width, 71, p);
322
-
323
-
324
-
325
- int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
326
-
327
- Rect rect = new Rect(0, 0, geeziNoKawarime,71);
328
-
329
- c.drawRect(rect, paint);
330
-
331
-
332
-
333
-
334
-
335
- ///////////////////////////////////
336
-
337
- // 文字表示
338
-
339
- //////////////////////////////////
340
-
341
- p.setColor( Color.RED );
342
-
343
- c.drawText( "経過", 25, 250 , p);
344
-
345
- c.drawText("" + m +"分", 25, 200 ,p);//邨碁℃譎る俣
346
-
347
- p.setColor( Color.BLACK );
348
-
349
- c.drawText( "/全体/",200, 250 ,p);
350
-
351
- c.drawText( "" + E + "分", 200, 200 ,p);
352
-
353
- p.setColor( Color.GREEN );
354
-
355
- D += 1;
356
-
357
- c.drawText( "残り",450, 250 ,p);
358
-
359
- c.drawText("" + D +"分", 450, 200 ,p);//残り時間
360
-
361
- p.setColor( Color.WHITE);
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
- // 午後と午前の切り替え
372
-
373
- int jikann;
374
-
375
- int gogo;
376
-
377
-
378
-
379
- if ( h >= 13){
380
-
381
- jikann = h - 12;
382
-
383
- gogo = 1;
384
792
 
385
793
  }
386
794
 
387
- else{
795
+ }
388
-
389
- jikann = h;
390
-
391
- gogo = 0;
392
796
 
393
797
  }
394
798
 
395
-
396
-
397
-
398
-
399
- if( gogo == 1){
400
-
401
- c.drawText( "午後"+jikann+"時"+mm+"分", 300,365 ,p);
402
-
403
- }else{
404
-
405
- c.drawText( "午前"+h+"時"+mm+"分", 300,365 ,p);
406
-
407
- }
408
-
409
- p.setColor( Color.BLACK );
410
-
411
- c.drawText( "全体の残り時間"+F+"分", 100,300 ,p);
412
-
413
-
414
-
415
-
416
-
417
- //メッセージ
418
-
419
- if (1 <= h && h <= 17) {
420
-
421
- c.drawText(messages[h], 25, 150, p);
422
-
423
- }
424
-
425
-
426
-
427
-
428
-
429
- //TODO: 時刻を取得する
430
-
431
- Calendar now = Calendar.getInstance();
432
-
433
- h = now.getInstance().get(now.HOUR_OF_DAY); //譎ゅr莉」蜈・
434
-
435
- m = now.getInstance().get(now.MINUTE); //蛻?繧剃サ」蜈・
436
-
437
- s= now.getInstance().get(now.SECOND); //遘偵r莉」蜈・
438
-
439
- mm=now.getInstance().get(now.MINUTE); //時間表示用
440
-
441
-
442
-
443
- //
444
-
445
-
446
-
447
- // 基準時刻
448
-
449
- int kizyunZikoku[][] = {
450
-
451
- { 9, 0 }, { 9, 55 },
452
-
453
- { 10, 0 }, { 10, 55 },
454
-
455
- { 11, 0 }, { 12, 0 },
456
-
457
- { 12, 40 }, { 13, 40 },
458
-
459
- { 13, 45 }, { 14, 45 },
460
-
461
- { 14, 50 }, { 16, 0 }
462
-
463
- };
464
-
465
- // その基準時刻と次の基準時刻の間でゲージを動かすか
466
-
467
- boolean zikanWoHyouziSuru[] = {
468
-
469
- true, true,
470
-
471
- true, true,
472
-
473
- true, true,
474
-
475
- true, true,
476
-
477
- true, true,
478
-
479
- true, true
480
-
481
- };
482
-
483
-
484
-
485
- // 今の時刻がどこに該当するかを計算する
486
-
487
- int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
488
-
489
- int maeNoKizyunZikoku = 0;
490
-
491
- int tugiNoKizyunZikoku = 0;
492
-
493
- int imaNoZikantai = -1;
494
-
495
- for (int i = 0; i < 12; i++) {
496
-
497
- int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
498
-
499
- if (imaNoZikoku < miteiruKizyunZikoku) {
500
-
501
- if (i > 0) {
502
-
503
- imaNoZikantai = i - 1;
504
-
505
- maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
506
-
507
- tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
508
-
509
- }
510
-
511
- break;
512
-
513
- }
514
-
515
- }
516
-
517
- if (saisyoNoFureemuDeAru) {
518
-
519
- maeNiOtoWoNarasitaZikantai = imaNoZikantai;
520
-
521
- saisyoNoFureemuDeAru = false;
522
-
523
- }
524
-
525
-
526
-
527
- // 経過時間と残り時間を計算し、ゲージのパラメータを設定する
528
-
529
- if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
530
-
531
- // 表示する時間
532
-
533
- m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
534
-
535
- E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
536
-
537
- D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
538
-
539
- // ゲージのパラメータ
540
-
541
- A = tugiNoKizyunZikoku;
542
-
543
- B = maeNoKizyunZikoku;
544
-
545
- C = imaNoZikoku;
546
-
547
- }
548
-
549
- else {
550
-
551
- // 表示する時間
552
-
553
- m = 99;
554
-
555
- E = 99;
556
-
557
- D = 99;
558
-
559
- // ゲージのパラメータソ
560
-
561
- A = width;
562
-
563
- B = 0;
564
-
565
- C = 0;
566
-
567
- }
568
-
569
-
570
-
571
- // 全体の残り時間を計算する
572
-
573
- if (imaNoZikoku < hazimariNoZikoku) {
574
-
575
- // 始まっていない?
576
-
577
- F = 60 * zenntai;
578
-
579
- }
580
-
581
- else if (owariNoZikoku < imaNoZikoku) {
582
-
583
- // 終わった後
584
-
585
- F = 0;
586
-
587
- }
588
-
589
- else {
590
-
591
- // 実行中
592
-
593
- F = owariNoZikoku - imaNoZikoku;
594
-
595
- }
596
-
597
- // 棒グラフのパラメータを設定する
598
-
599
- G = F * Width / (60 * zenntai);
600
-
601
-
602
-
603
- F = (F + 59) / 60;
604
-
605
-
606
-
607
- // 情報が正しくなるように補正する
608
-
609
- if (imaNoZikoku % 60 == 0) D--;
610
-
611
-
612
-
613
-
614
-
615
-
616
-
617
-
618
-
619
-
620
-
621
- if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
622
-
623
- maeNiOtoWoNarasitaZikantai = imaNoZikantai;
624
-
625
- if (imaNoZikantai >= 0) {
626
-
627
- chime.start();
628
-
629
- }
630
-
631
- }
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
-
643
-
644
-
645
- //ループ処理(onDrawを実行)
646
-
647
- invalidate();
648
-
649
-
650
-
651
- //ウェイト処理
652
-
653
- try {
654
-
655
- Thread.sleep(100);
656
-
657
- } catch (InterruptedException e) {
658
-
659
- }
660
-
661
- }
662
-
663
- }
664
-
665
799
  コード
666
800
 
667
801
  ```

4

誤字修正

2015/02/11 04:33

投稿

naia
naia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  以下のプログラムは指定された時間になると音を鳴らすというものです
78
78
 
79
- 時間を読み込んだテキストからkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
79
+ テキストを読み込kizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
80
80
 
81
81
  どう修正すれば上手くいくでしょうか?
82
82
 

3

追記

2015/02/09 05:52

投稿

naia
naia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,601 @@
67
67
  { 0, 0 }, { 0, 0 }
68
68
 
69
69
  };
70
+
71
+
72
+
73
+
74
+
75
+ 【2月9日13:33追記】
76
+
77
+ 以下のプログラムは指定された時間になると音を鳴らすというものです
78
+
79
+ 時間を読み込んだテキストからkizyunZikokuを設定できるように変えたいのですが、教えて頂いたコードを追加しても上手くいきませんでした
80
+
81
+ どう修正すれば上手くいくでしょうか?
82
+
83
+
84
+
85
+ ```lang-package sample.android.usingview;
86
+
87
+ import java.util.Calendar;
88
+
89
+
90
+
91
+ import android.content.Context;
92
+
93
+ import android.graphics.Canvas;
94
+
95
+ import android.graphics.Color;
96
+
97
+ import android.graphics.Paint;
98
+
99
+ import android.graphics.Rect;
100
+
101
+ import android.media.MediaPlayer;
102
+
103
+ import android.view.View;
104
+
105
+
106
+
107
+
108
+
109
+ class SampleView extends View {
110
+
111
+ Paint paint = new Paint();
112
+
113
+
114
+
115
+ //音楽ファイルの読み込み
116
+
117
+ MediaPlayer chime = MediaPlayer.create(getContext(), R.raw.test);
118
+
119
+
120
+
121
+
122
+
123
+ static int h;
124
+
125
+ static int m;
126
+
127
+ static int s;
128
+
129
+
130
+
131
+ static int animetion = 0;
132
+
133
+
134
+
135
+ // デフォルトフレームサイズ
136
+
137
+ private int width = 800;
138
+
139
+ private int height = 480;
140
+
141
+
142
+
143
+
144
+
145
+ int A = width;
146
+
147
+ int B = 0;
148
+
149
+ int C = 0;
150
+
151
+ int D = 0;
152
+
153
+ int E = 0;
154
+
155
+ int X1 = 0;
156
+
157
+ int X2 = width;
158
+
159
+ int Y1 = 150;
160
+
161
+ int Y2 = 250;
162
+
163
+ int mm;
164
+
165
+
166
+
167
+ int kizyunZikokuNoKazu = 17;
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ boolean a = true;
176
+
177
+ boolean saisyoNoFureemuDeAru = true;
178
+
179
+ int maeNiOtoWoNarasitaZikantai = -1;
180
+
181
+
182
+
183
+ boolean greenflag = true;
184
+
185
+
186
+
187
+ int zenntai = 7 * 60;
188
+
189
+ int F;// 今の時間
190
+
191
+
192
+
193
+ //全体を表すゲージ
194
+
195
+ int NowJikann = zenntai; //現在の残り時間
196
+
197
+ int Width = 480;
198
+
199
+ double G;
200
+
201
+
202
+
203
+ //譎ょ綾縺ョ險ュ螳?
204
+
205
+ int hazimariNoZikoku = 60 * ( 60 * 9 + 0 ) + 0;
206
+
207
+ int owariNoZikoku = hazimariNoZikoku + 60 * zenntai;
208
+
209
+
210
+
211
+
212
+
213
+ //時間に合わせてメッセージが変わる
214
+
215
+ String messages[] = {
216
+
217
+ "",
218
+
219
+ " ",
220
+
221
+ " ",
222
+
223
+ " ",
224
+
225
+ " ",
226
+
227
+ " ", // 5
228
+
229
+ " ",
230
+
231
+ " ",
232
+
233
+ "おはようござます",
234
+
235
+ "おはようございます",
236
+
237
+ "今日も一日頑張りましょう!", // 10
238
+
239
+ "もうすぐお昼休みだ!",
240
+
241
+ "休憩時間です!",
242
+
243
+ "午後も頑張りましょう",
244
+
245
+ "こんにちは",
246
+
247
+ "残り1時間をきりました", // 15
248
+
249
+ "お疲れ様でした",
250
+
251
+ "お疲れ様でした"
252
+
253
+ };
254
+
255
+
256
+
257
+ public SampleView(Context context) {
258
+
259
+ super(context);
260
+
261
+ }
262
+
263
+
264
+
265
+ @Override
266
+
267
+ public void onDraw(Canvas c) {
268
+
269
+
270
+
271
+ Paint paint = new Paint();
272
+
273
+ paint.setStrokeWidth(2);//太さを2に
274
+
275
+ paint.setColor(Color.argb(255, 255, 0, 0));//赤セット
276
+
277
+ //文字の描画
278
+
279
+ Paint p = new Paint();
280
+
281
+ p.setARGB(255,100,100,255);
282
+
283
+ p.setTextSize(64);
284
+
285
+ p.setAntiAlias(true);
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+ ///////////////
294
+
295
+ //全体のゲージ
296
+
297
+ ///////////////
298
+
299
+ p.setColor( Color.GREEN );
300
+
301
+ c.drawRect( 0, 300, width, 480, p );
302
+
303
+ G = ( zenntai - F ) * width / zenntai;
304
+
305
+ p.setColor( Color.RED );
306
+
307
+ c.drawRect( 0, 300, (int)G, 480, p );
308
+
309
+
310
+
311
+ /////////////
312
+
313
+ //セクションごとのゲージ
314
+
315
+ ///////////////////////
316
+
317
+
318
+
319
+ p.setColor( Color.GREEN );
320
+
321
+ c.drawRect(0, 0, width, 71, p);
322
+
323
+
324
+
325
+ int geeziNoKawarime = X1 + (X2 - X1)*(C - B) / (A - B);
326
+
327
+ Rect rect = new Rect(0, 0, geeziNoKawarime,71);
328
+
329
+ c.drawRect(rect, paint);
330
+
331
+
332
+
333
+
334
+
335
+ ///////////////////////////////////
336
+
337
+ // 文字表示
338
+
339
+ //////////////////////////////////
340
+
341
+ p.setColor( Color.RED );
342
+
343
+ c.drawText( "経過", 25, 250 , p);
344
+
345
+ c.drawText("" + m +"分", 25, 200 ,p);//邨碁℃譎る俣
346
+
347
+ p.setColor( Color.BLACK );
348
+
349
+ c.drawText( "/全体/",200, 250 ,p);
350
+
351
+ c.drawText( "" + E + "分", 200, 200 ,p);
352
+
353
+ p.setColor( Color.GREEN );
354
+
355
+ D += 1;
356
+
357
+ c.drawText( "残り",450, 250 ,p);
358
+
359
+ c.drawText("" + D +"分", 450, 200 ,p);//残り時間
360
+
361
+ p.setColor( Color.WHITE);
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+ // 午後と午前の切り替え
372
+
373
+ int jikann;
374
+
375
+ int gogo;
376
+
377
+
378
+
379
+ if ( h >= 13){
380
+
381
+ jikann = h - 12;
382
+
383
+ gogo = 1;
384
+
385
+ }
386
+
387
+ else{
388
+
389
+ jikann = h;
390
+
391
+ gogo = 0;
392
+
393
+ }
394
+
395
+
396
+
397
+
398
+
399
+ if( gogo == 1){
400
+
401
+ c.drawText( "午後"+jikann+"時"+mm+"分", 300,365 ,p);
402
+
403
+ }else{
404
+
405
+ c.drawText( "午前"+h+"時"+mm+"分", 300,365 ,p);
406
+
407
+ }
408
+
409
+ p.setColor( Color.BLACK );
410
+
411
+ c.drawText( "全体の残り時間"+F+"分", 100,300 ,p);
412
+
413
+
414
+
415
+
416
+
417
+ //メッセージ
418
+
419
+ if (1 <= h && h <= 17) {
420
+
421
+ c.drawText(messages[h], 25, 150, p);
422
+
423
+ }
424
+
425
+
426
+
427
+
428
+
429
+ //TODO: 時刻を取得する
430
+
431
+ Calendar now = Calendar.getInstance();
432
+
433
+ h = now.getInstance().get(now.HOUR_OF_DAY); //譎ゅr莉」蜈・
434
+
435
+ m = now.getInstance().get(now.MINUTE); //蛻?繧剃サ」蜈・
436
+
437
+ s= now.getInstance().get(now.SECOND); //遘偵r莉」蜈・
438
+
439
+ mm=now.getInstance().get(now.MINUTE); //時間表示用
440
+
441
+
442
+
443
+ //
444
+
445
+
446
+
447
+ // 基準時刻
448
+
449
+ int kizyunZikoku[][] = {
450
+
451
+ { 9, 0 }, { 9, 55 },
452
+
453
+ { 10, 0 }, { 10, 55 },
454
+
455
+ { 11, 0 }, { 12, 0 },
456
+
457
+ { 12, 40 }, { 13, 40 },
458
+
459
+ { 13, 45 }, { 14, 45 },
460
+
461
+ { 14, 50 }, { 16, 0 }
462
+
463
+ };
464
+
465
+ // その基準時刻と次の基準時刻の間でゲージを動かすか
466
+
467
+ boolean zikanWoHyouziSuru[] = {
468
+
469
+ true, true,
470
+
471
+ true, true,
472
+
473
+ true, true,
474
+
475
+ true, true,
476
+
477
+ true, true,
478
+
479
+ true, true
480
+
481
+ };
482
+
483
+
484
+
485
+ // 今の時刻がどこに該当するかを計算する
486
+
487
+ int imaNoZikoku = 60 * (60 * h + m) + s;//秒に変換
488
+
489
+ int maeNoKizyunZikoku = 0;
490
+
491
+ int tugiNoKizyunZikoku = 0;
492
+
493
+ int imaNoZikantai = -1;
494
+
495
+ for (int i = 0; i < 12; i++) {
496
+
497
+ int miteiruKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
498
+
499
+ if (imaNoZikoku < miteiruKizyunZikoku) {
500
+
501
+ if (i > 0) {
502
+
503
+ imaNoZikantai = i - 1;
504
+
505
+ maeNoKizyunZikoku = 60 * (60 * kizyunZikoku[i - 1][0] + kizyunZikoku[i - 1][1]);
506
+
507
+ tugiNoKizyunZikoku = 60 * (60 * kizyunZikoku[i][0] + kizyunZikoku[i][1]);
508
+
509
+ }
510
+
511
+ break;
512
+
513
+ }
514
+
515
+ }
516
+
517
+ if (saisyoNoFureemuDeAru) {
518
+
519
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
520
+
521
+ saisyoNoFureemuDeAru = false;
522
+
523
+ }
524
+
525
+
526
+
527
+ // 経過時間と残り時間を計算し、ゲージのパラメータを設定する
528
+
529
+ if (imaNoZikantai >= 0 && zikanWoHyouziSuru[imaNoZikantai]) {
530
+
531
+ // 表示する時間
532
+
533
+ m = (imaNoZikoku - maeNoKizyunZikoku) / 60;
534
+
535
+ E = (tugiNoKizyunZikoku - maeNoKizyunZikoku) / 60;
536
+
537
+ D = (tugiNoKizyunZikoku - imaNoZikoku) / 60;
538
+
539
+ // ゲージのパラメータ
540
+
541
+ A = tugiNoKizyunZikoku;
542
+
543
+ B = maeNoKizyunZikoku;
544
+
545
+ C = imaNoZikoku;
546
+
547
+ }
548
+
549
+ else {
550
+
551
+ // 表示する時間
552
+
553
+ m = 99;
554
+
555
+ E = 99;
556
+
557
+ D = 99;
558
+
559
+ // ゲージのパラメータソ
560
+
561
+ A = width;
562
+
563
+ B = 0;
564
+
565
+ C = 0;
566
+
567
+ }
568
+
569
+
570
+
571
+ // 全体の残り時間を計算する
572
+
573
+ if (imaNoZikoku < hazimariNoZikoku) {
574
+
575
+ // 始まっていない?
576
+
577
+ F = 60 * zenntai;
578
+
579
+ }
580
+
581
+ else if (owariNoZikoku < imaNoZikoku) {
582
+
583
+ // 終わった後
584
+
585
+ F = 0;
586
+
587
+ }
588
+
589
+ else {
590
+
591
+ // 実行中
592
+
593
+ F = owariNoZikoku - imaNoZikoku;
594
+
595
+ }
596
+
597
+ // 棒グラフのパラメータを設定する
598
+
599
+ G = F * Width / (60 * zenntai);
600
+
601
+
602
+
603
+ F = (F + 59) / 60;
604
+
605
+
606
+
607
+ // 情報が正しくなるように補正する
608
+
609
+ if (imaNoZikoku % 60 == 0) D--;
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+ if (maeNiOtoWoNarasitaZikantai != imaNoZikantai) {
622
+
623
+ maeNiOtoWoNarasitaZikantai = imaNoZikantai;
624
+
625
+ if (imaNoZikantai >= 0) {
626
+
627
+ chime.start();
628
+
629
+ }
630
+
631
+ }
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+ //ループ処理(onDrawを実行)
646
+
647
+ invalidate();
648
+
649
+
650
+
651
+ //ウェイト処理
652
+
653
+ try {
654
+
655
+ Thread.sleep(100);
656
+
657
+ } catch (InterruptedException e) {
658
+
659
+ }
660
+
661
+ }
662
+
663
+ }
664
+
665
+ コード
666
+
667
+ ```

2

誤字の修正

2015/02/09 04:39

投稿

naia
naia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- Javaでテキストファイルから数値を取り込んで二次配列に保存するにはどうしたらいいでしょうか
1
+ Javaでテキストファイルから数値を取り込んで順番に二次配列に保存するにはどうしたらいいでしょうか
2
2
 
3
3
  テキストファイルの中身
4
4
 

1

誤字の修正

2015/02/06 05:19

投稿

naia
naia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
 
55
- ```lang-int hairetu[][] = {
55
+ int hairetu[][] = {
56
56
 
57
57
  { 0, 0 }, { 0, 0 },
58
58
 
@@ -67,7 +67,3 @@
67
67
  { 0, 0 }, { 0, 0 }
68
68
 
69
69
  };
70
-
71
-
72
-
73
- ```